ThingsBoard-Rpc控制设备
1、网关介绍
2、创建网关
3、连接网关
设备连接 API:
为了通知 ThingsBoard 设备已连接到网关,需要发布以下消息:
Topic: v1/gateway/connect
Message: {"device":"Device A"}
其中,Device A是您的设备名称。
一旦收到,ThingsBoard 将查找或创建具有指定名称的设备。此外,ThingsBoard 还会向此网关发布有关特定设备的新属性更新和 RPC 命令的消息。
设备断开连接 API:
为了通知 ThingsBoard 设备与网关断开连接,需要发布以下消息:
Topic: v1/gateway/disconnect
Message: {"device":"Device A"}
其中,Device A是您的设备名称。
一旦收到,ThingsBoard 将不再向此网关发布该特定设备的更新。
备注:
断开连接的话,设备不会立即断开连接,而是根据 tb 的配置断开连接
# 默认 10分钟不活动超时
DEFAULT_INACTIVITY_TIMEOUT: 600
# 一分钟扫描一次设备是否在线状态
DEFAULT_STATE_CHECK_INTERVAL: 60
4、属性 api
上报设备 b 的属性时,如果设备 b 不存在,tb 则会创建设备 b,并且上报属性
将属性更新发布到服务器
从服务器订阅属性更新
为了订阅共享设备属性变化,请向以下主题发送 SUBSCRIBE 消息:
v1/gateway/attributes
从服务器请求属性值
为了向 ThingsBoard 服务器节点请求客户端或共享设备属性,请向以下主题发送 PUBLISH 消息:
Topic: v1/gateway/attributes/request
Message: {"id": $request_id, "device": "Device A", "client": true, "key": "attribute1"}
其中$request_id是您的整数请求标识符,Device A是您的设备名称,client标识客户端或共享属性范围,key是属性键。
并期望结果消息的格式如下:
Message: {"id": $request_id, "device": "Device A", "value": "value1"}
5、遥测上传 API
为了将设备遥测数据发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送至以下主题:
Topic: v1/gateway/telemetry
Message:
{
"Device A": [
{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
},
{
"ts": 1483228801000,
"values": {
"temperature": 43,
"humidity": 82
}
}
],
"Device B": [
{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
}
]
}
其中设备 A和设备 B是您的设备名称,温度和湿度是遥测密钥,ts是以毫秒为单位的 unix 时间戳。
6、服务器端 RPC
网关通过 mgtt 连接 tb、设备通过网关连接 tb
如果 tb 下发命令给设备的话,需要网关订阅主题v1/gateway/rpc,然后对DeviceA下发指令然后网关与设备进行交互,发送给子设备(硬件程序员处理的内部逻辑),子设备处理成功,网关回复响应消息给TB设备处理完命令后,网关可以使用以下格式发回命令:{"device": "Device A","id": $request id,"data": {"success": true}}
tb 发送控制给设备,网关监听 topic,然后设备会告知网关是否成功(这块由硬件那边处理网关跟设备的通信),然后网关发送 topic 通知 tb设备是否成功
可以看到 tb 给设备A 发送控制的时候,网关订阅到了消息,然后网关控制设备去执行,设备执行成功告诉网关,然后网关响应发送给 tb 即可
设备响应成功