物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

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

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

创建网关设备

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

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备
物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备
物联网开源平台开发系列022 – 通过Thingsboard网关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 ,为您的设备名。

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

需要注意的是:

设备配置始终是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 是整数值。

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

下发命令RPC

支持Server-Side RPC

在设备端Client 这里订阅RPC

v1/gateway/rpc

下发指令的格式如下:

{"device": "Device A", "data": {"id": $request_id, "method": "toggle_gpio", "params": {"pin":1}}}

在服务器端,有几种方式产生下发指令。我们选择在规则链中用一个generate 节点产生下发指令。

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备
物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

其中id 是$request_id ,method 是命令名称 params 是命令参数。

客户端订阅后, 就会收到指令,如下图。

物联网开源平台开发系列022 – 通过Thingsboard网关gateway动态创建设备

设备端收到后, 可以按$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

淘宝小店:陈皮王五工作室

(1)
GaryGary
上一篇 2025-03-02 上午9:55
下一篇 2025-03-15 下午5:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(14条)