将第三方 API 数据添加到 Viam | Viam

除了存储机器人生成的数据外,Viam 还支持通过 API 直接提取您可能希望与之一起拥有的任何外部相关数据。

来源:Viam 博客

Viam 的数据平台非常酷,可用于存储机器人生成的数据。但是,有时将一些来自外部来源的数据与机器人生成的数据一起存储可能会有所帮助。

例如,我有一个自己构建的植物监测机器人,并且从工厂周围的传感器获取了大量数据。但是,我没有与之配合的天气数据。我知道我可以从 weatherapi.com 获取天气数据。但是,我怎样才能将该存储与来自机器人的数据一起获取呢?

weatherapi.com

坚持下去,孩子!我们很快就会开始做这件事!!!

将外部数据添加到 Viam 的数据平台非常简单。我们要做的就是将我们想要进行的 API 调用包装在一个简单的模块化传感器组件中。

过程

我首先编写了一个非常小的 Python 脚本,该脚本只是查询 weatherapi.com 以获取当前天气。

weatherapi.com

‍

在逻辑完善并正常运行后,我开始创建模块化传感器。 我怎样才能尽可能少地做到这一点? 我只是从 https://github.com/viamrobotics/viam-python-sdk/tree/main/examples/simple_module 复制了简单的模块示例。 然后我修改了类名和模型,使其成为我自己的传感器。

https://github.com/viamrobotics/viam-python-sdk/tree/main/examples/simple_module

然后,为了使该传感器充当 API 查询器,我将初始脚本中的逻辑移到了 get_readings 函数中。 太棒了!现在,该组件可以查询该 API 并通过 get_readings() 返回数据。

现在可以配置数据服务以按照我认为合适的任何节奏查询此端点。 几乎太简单了!

我想将其提交到其他人可以找到和使用它的存储库,因此我将 api_key 从硬编码(就像在我原来的脚本中一样)移到了组件的属性中。 我也做了类似的工作,将其他查询参数(在本例中为“zipcode”)移出到配置属性中。

我们刚刚一起经历了一次多么激动人心的冒险!!

‍最终代码‍