Thingsboard REST API 客户端 Python

Thingsboard REST API Client Python

提问人:Fakir 提问时间:3/13/2023 更新时间:3/13/2023 访问量:247

问:

尝试使用 Thingsboard 提供的 REST API 客户端 (Python) 注册设备。 (https://thingsboard.io/docs/reference/python-rest-client/)

我已经在 AWS EC2 实例 (Linux 20.04) 中安装了 Thingsboard。Python 3.8.10 中。 已安装所需的 TB 相关软件包。例如“tb-rest-client”。

虽然我可以注册“资产”,但无法注册设备,这实际上是我的目标。资产对我来说是可选的,至少现在是这样。虽然它应该是相似的。

为以下行提出问题:

File "testTB_01.py", line 59, in <module>
   device = Device(name="Thermometer 1", type="thermometer") # this is line 59

这是错误消息:

raise ValueError("Invalid value for `device_profile_id`, must not be `None`")  # noqa: E501
ValueError: Invalid value for `device_profile_id`, must not be `None`

虽然我绝对有价值,因为我正在按原样使用这个例子。所以不确定哪里出了问题。

Python API REST 客户端 ThingsBoard

评论


答:

0赞 Norbiox 3/13/2023 #1

看起来他们的示例已经过时,并且他们的代码中存在一些不一致之处。根据参数中类的声明确实是可选的,但是如果您仔细查看第 329 行中的 setter,您会发现如果没有给出参数的值,则会引发该参数。只需设置任何内容,它就会起作用。
例:
Devicetb_rest_client.models.models_pe.devicedevice_profile_idValueErrordevice_profile_id

device = Device(name="Thermometer 1", type="thermometer", device_profile_id="anything")

评论

0赞 Fakir 3/13/2023
谢谢你的建议。我已经进行了相应的修改,之前的错误消失了。但是现在出现了“错误代码 500”和“消息:JSON 解析错误”。
0赞 Fakir 3/13/2023
似乎此错误是由于使用“rest_client”的下一行造成的。“设备 = rest_client.save_device(设备)” 。代码中没有这一行,错误就会消失,但不会在 Thingsboard 中创建设备。似乎参数不匹配。
0赞 Norbiox 3/13/2023
也许这个论点应该有一些特定的价值。无论如何,这看起来像是他们支持的案例,您绝对应该向他们询问。device_profile_id
0赞 Fakir 3/13/2023
实际上,我上周五在结核病论坛上发布了这个。但还没有得到任何回复。所以考虑在这里发帖,以防有人知道。谢谢。
1赞 Fakir 5/7/2023
@Santhosh我无法以这种方式做到这一点。但可以使用 API 通过 CSV 文件将设备批量注册到 Thingsboard。这是我的真实意图,所以我不再追求上述过程。如果您对 CSV 文件设备寄存器感兴趣,请告诉我。顺便说一句,没有批量删除 API。你必须递归地做。