1、网关介绍
2、创建网关设备
3、设备连接API
4、设备断开API
5、属性API
5.1、将属性更新发布到服务器
5.2、从服务器请求属性值
5.3、从服务器订阅属性更新
6、遥测上传API
7、远程过程调用API
服务器端 RPC
8、声明设备 API
1、网关介绍
网关是 ThingsBoard 中的一种特殊类型的设备,能够充当连接到不同系统的外部设备和 ThingsBoard 之间的桥梁。网关 API 提供了使用单个 MQTT 连接在多个设备和平台之间交换数据的能力。该网关还充当 ThingsBoard 设备,可以利用现有的MQTT 设备 API来报告统计数据、接收配置更新等通过服务端订阅属性
2、创建网关设备
创建设备的时候,选择设备为网关即可创建网关设备
3、设备连接API
为了通知 ThingsBoard 设备已连接到网关,需要发布以下消息:
Topic: v1/gateway/connect
Message: {"device":"Device A"}
其中设备 A是您的设备名称。
收到后,ThingsBoard 将查找或创建具有指定名称的设备。此外,ThingsBoard 还将向此网关发布有关特定设备的新属性更新和 RPC 命令的消息。
4、设备断开API
为了通知 ThingsBoard 设备已与网关断开连接,需要发布以下消息:
Topic: v1/gateway/disconnect
Message: {"device":"Device A"}
其中设备 A是您的设备名称。
一旦收到,ThingsBoard 将不再向此网关发布该特定设备的更新。
5、属性API
ThingsBoard 属性 API 允许设备
- 将客户端设备属性上传到服务器。
- 从服务器请求客户端和共享设备属性。
- 从服务器订阅共享设备属性。
5.1、将属性更新发布到服务器
为了将客户端设备属性发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送到以下主题:
Topic: v1/gateway/attributes
Message: {"Device A":{"attribute1":"value1", "attribute2": 42}, "Device B":{"attribute1":"value1", "attribute2": 42}}
其中,Device A和Device B是您的设备名称,attribute1和attribute2是属性键。
5.2、从服务器请求属性值
为了向 ThingsBoard 服务器节点请求客户端或共享设备属性,请将 PUBLISH 消息发送到以下主题:
Topic: v1/gateway/attributes/request
Message: {"id": $request_id, "device": "Device A", "client": true, "key": "attribute1"}
其中$request_id是您的整数请求标识符,Device A是您的设备名称,client标识客户端或共享属性范围,key是属性键。
在发送带有请求的 PUBLISH 消息之前,客户端需要订阅
Topic: v1/gateway/attributes/response
并期望消息的结果采用以下格式:
Message: {"id": $request_id, "device": "Device A", "value": "value1"}
5.3、从服务器订阅属性更新
为了订阅共享设备属性更改,请将 SUBSCRIBE 消息发送到以下主题:
v1/gateway/attributes
并期望消息的结果采用以下格式:
Message: {"device": "Device A", "data": {"attribute1": "value1", "attribute2": 42}}
6、遥测上传API
为了将设备遥测发布到 ThingsBoard 服务器节点,请将 PUBLISH 消息发送到以下主题:
Topic: v1/gateway/telemetry
信息:
单设备:
{
"Device A":[
{
"temperature": 43,
"humidity": 81
}
]
}
多设备:
{
"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 时间戳。
7、远程过程调用API
服务器端 RPC
为了从服务器订阅 RPC 命令,请将 SUBSCRIBE 消息发送到以下主题:
v1/gateway/rpc
并期望带有以下格式的单独命令的消息:
{"device": "Device A", "data": {"id": $request_id, "method": "toggle_gpio", "params": {"pin":1}}}
一旦设备处理了命令,网关就可以使用以下格式发回命令:
{"device": "Device A", "id": $request_id, "data": {"success": true}}
其中$request_id是您的整数请求标识符,Device A是您的设备名称,method是您的 RPC 方法名称。
8、声明设备 API
请参阅相应的文章以获取有关功能的更多信息。
为了启动声明设备,请将 PUBLISH 消息发送到以下主题:
Topic: v1/gateway/claim
信息:
{
"Device A": {
"secretKey": "value_A",
"durationMs": 60000
},
"Device B": {
"secretKey": "value_B",
"durationMs": 60000
}
}
其中Device A和Device B是您的设备名称,secretKey和durationMs是可选密钥。如果未指定SecretKey,则使用空字符串作为默认值。如果未指定periodMs,则使用系统参数device.claim.duration(在文件/etc/thingsboard/conf/thingsboard.yml中)。