通过Thingsboard网关, 可以动态创建/批量创建设备 ,不需要设备预先在Thingsboard平台注册。下面来介绍一下,如何用这个功能,以及常见的几个功能使用。
首先,来一个概念图

创建网关设备
创建设备的时候,选择设备为网关即可创建网关设备,创建完成后,在实体-Gateway中也会有一个gateway设备。



设备连接API
为了通知 ThingsBoard, 设备已连接到网关,需要发布以下消息:
Topic: v1/gateway/connect
Message: {"device":"Device A"}
其中Device A是设备名称。
Thingsboard收到后,将查找或创建具有指定名称的设备,还将向此网关发布有关特定设备的新属性更新和 RPC 命令的消息等。
在应用中,通常不需要设备连接API。
设备断开API
为了通知 ThingsBoard ,设备已与网关断开连接,需要发布以下消息:
Topic: v1/gateway/disconnect
Message: {"device":"Device A"}
其中Device A是设备名称。
ThingsBoard收到后, 将不再向此网关发布该特定设备的更新。
遥测Telemery上传API
Topic: v1/gateway/telemetry
单设备上传(设备端时间戳):
{
"Device A": [{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
}]
}
单设备上传(服务器端时间戳):
{
"Device A":[
{
"temperature": 43,
"humidity": 81
}
]
}
多设备上传:
{
"Device A": [{
"ts": 1741847415000,
"values": {
"temperature": 42,
"humidity": 80
}
},
{
"ts": 1741847415000,
"values": {
"temperature": 43,
"humidity": 82
}
}
],
"Device B": [{
"ts": 1483228800000,
"values": {
"temperature": 42,
"humidity": 80
}
}]
}
其中Device A 和 Device B ,为您的设备名。

需要注意的是:
设备配置始终是default ,标签始终是空白。就是只能走default指定的规则链。
属性attributes更新API
将客户端设备属性更新到服务器
Topic: v1/gateway/attributes
Message: {
"Device A": {
"attribute1": "value1",
"attribute2": 432
},
"Device B": {
"attribute1": "value1",
"attribute2": 411
}
}
需要注意的是:
这里有一个逻辑Bug,如果从来没有上报更新过属性的设备, Thingsboard会创建新设备,并且不管在遥测数据中是否已有同样的设备。
从服务器请求客户端属性和共享属性
先订阅
Topic: v1/gateway/attributes/response
然后发布
Topic: v1/gateway/attributes/request
Message: {"id": $request_id, "device": "Device A", "client": true, "key": "attribute1"}
$request_id 是整数值。

下发命令RPC
支持Server-Side RPC
在设备端Client 这里订阅RPC
v1/gateway/rpc
下发指令的格式如下:
{"device": "Device A", "data": {"id": $request_id, "method": "toggle_gpio", "params": {"pin":1}}}
在服务器端,有几种方式产生下发指令。我们选择在规则链中用一个generate 节点产生下发指令。


其中id 是$request_id ,method 是命令名称 params 是命令参数。
客户端订阅后, 就会收到指令,如下图。

设备端收到后, 可以按$request_id 回复收到结果。
{“device”: “Device A”, “id”: $request_id, “data”: {“status”: “Delivered”}}
总结来说,通过网关来动态创建设备,需要注意几点,
- 先更新上传客户端属性(动态创建设备)
- 再上传遥测数据 , 这样保证了同一个设备名在服务器上只有1个设备
- RPC 只能用Server-side RPC
- gateway端或设备端并不知道自己的设备ID和访问令牌, 这个只能通过服务端API获得
- 适用的场景,是无法在服务器上一一创建设备的场景。
系列文章:
物联网开源平台开发系列001 – 开源平台Thingsboard 介绍
物联网开源平台开发系列002 – Thingsboard 用户系统分析
物联网开源平台开发系列003 – Thingsboard OAuth2 – Google身份验证登陆
物联网开源平台开发系列004 – Thingsboard的实体、资产、设备一般说明及数据存储 – 陈皮王五de杂记
物联网开源平台开发系列005 – Thingsboard的API简述 – 陈皮王五de杂记
物联网开源平台开发系列006 – 在Thingsboard内创建一个设备 – 陈皮王五de杂记
物联网开源平台开发系列007 – Thingsboard的批量导入设备 – 陈皮王五de杂记
物联网开源平台开发系列008 – 浅谈物联网传输协议 – 陈皮王五de杂记
物联网开源平台开发系列009 – Thingsboard服务器对IoT设备下发指令 – 陈皮王五de杂记
物联网开源平台开发系列010 – Thingsboard规则引擎简介 – 陈皮王五de杂记
物联网开源平台开发系列011 – Thingsboard规则节点Originator Telemetry – 陈皮王五de杂记
物联网开源平台开发系列012 – Thingsboard 设备离线Alarm设置 – 陈皮王五de杂记
物联网开源平台开发系列013 – Thingsboard 遥测产生告警Alarm – 陈皮王五de杂记
物联网开源平台开发系列014 – Thingsboard遥测时序数据存储结构及分区策略 – 陈皮王五de杂记
物联网开源平台开发系列015 – Thingsboard postgresql数据库基本配置 – 陈皮王五de杂记
物联网开源平台开发系列016 – 再谈Thingsboard的设备注册 – 陈皮王五de杂记
物联网开源平台开发系列017 – Thingsboard的设备联动场景 – 陈皮王五de杂记
物联网开源平台开发系列018 – Thingsboard获取和处理天气信息 – 陈皮王五de杂记
物联网开源平台开发系列019 – Thingsboard设备数据传播给资产 – 陈皮王五de杂记
物联网开源平台开发系列020 – Thingsboard的实体视图Entity View – 陈皮王五de杂记
物联网开源平台开发系列021 – Thingsboard的网关gateway – 陈皮王五de杂记
物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备 – 陈皮王五de杂记
物联网开源平台开发系列023 – Thingsboard设备列表仪表盘 – 陈皮王五de杂记
物联网开源平台开发系列024 – Thingsboard接入摄像头方案 – 陈皮王五de杂记
物联网开源平台开发系列025 – Thingsboard规则链节点的JS代码调试 – 陈皮王五de杂记
原创文章,作者:Gary,如若转载,请注明出处:https://www.cpw5.top/1236.html
淘宝小店:陈皮王五工作室
评论列表(14条)
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]
[…] […]