mqtt 是一种轻量级的发布 - 订阅消息传递协议,可能使其最适合于各种 iot 设备。您可以在此处找到有关 mqtt 的更多信息。
thingsboard 服务器节点充当 mqtt 代理,该代理支持 qos 级别 0(最多一次)和 1(至少一次)以及一组预定义的主题。
您可以在网上找到大量的 mqtt 客户端库。本文中的示例将基于 mosquitto 和 mqtt.js。为了设置这些工具之一,您可以使用我们的《hello world》指南中的说明。
我们将在本文中使用访问令牌设备凭证,这些凭证稍后将称为 $ access_token。应用程序需要使用包含 $ access_token 的用户名发送 mqtt connect 消息。连接序列期间可能的返回码及其原因:
0x00已连接-已成功连接到thingsboardmqtt服务器。0x04连接被拒绝,用户名或密码错误-用户名为空。0x05连接被拒绝,未经授权-用户名包含无效的$access_token。
默认情况下,thingsboard 支持 json 中的键值内容。键始终是一个字符串,而值可以是字符串,布尔值,双精度或长整数。也可以使用自定义二进制格式或某些序列化框架。有关更多详细信息,请参见协议自定义。例如:
{"stringkey":"value1","booleankey":true,"doublekey":42.0,"longkey":73}
为了将遥测数据发布到 thingsboard 服务器节点,请将 publish 消息发送到以下主题:
v1/devices/me/telemetry
支持的最简单的数据格式是:
{"key1":"value1","key2":"value2"}
要么
[{"key1":"value1"},{"key2":"value2"}]
请注意,在这种情况下,服务器端时间戳将分配给上传的数据!
如果您的设备能够获得客户端时间戳,则可以使用以下格式:
{"ts":1451649600512,"values":{"key1":"value1","key2":"value2"}}
在上面的示例中,我们假设 “ 1451649600512” 是具有毫秒精度的 unix 时间戳。例如,值'1451649600512'对应于'星期五,2016年1月1日12:00:00.512 gmt'。
thingsboard 属性 api 使设备能够
为了将客户端设备属性发布到 thingsboard 服务器节点,请将 publish 消息发送到以下主题:
v1/devices/me/attributes
为了向 thingsboard 服务器节点请求客户端或共享设备属性,请将 publish 消息发送到以下主题:
v1/devices/me/attributes/request/$request_id
其中 $ request_id 是您的整数请求标识符。在发送带有请求的 publish 消息之前,客户端需要订阅
v1/devices/me/attributes/response/
为了订阅共享设备属性更改,请发送 subscribe 消息到以下主题:
v1/devices/me/attributes
当服务器端组件之一(例如 rest api 或规则链)更改了共享属性时,客户端将收到以下更新:
{"key1":"value1"}
为了从服务器订阅 rpc 命令,请将 subscribe 消息发送到以下主题:
v1/devices/me/rpc/request/
订阅后,客户端将以发布消息的形式接收到相应主题的各个命令:
v1/devices/me/rpc/request/$request_id 其中 $ request_id 是整数请求标识符。
客户应发布对以下主题的响应:
v1/devices/me/rpc/response/$request_id
为了将 rpc 命令发送到服务器,请将 publish 消息发送到以下主题:
v1/devices/me/rpc/request/$request_id
其中 $ request_id 是整数请求标识符。来自服务器的响应将发布到以下主题:
v1/devices/me/rpc/response/$request_id
参考:
交流:https://www.iotschool.com/topics/165
欢迎大家加入 thingsboard 二次开发讨论群:121202538