ThingsBoard通过网关动态创建设备并发送属性

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 ADevice B是您的设备名称,attribute1attribute2是属性键。

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 ADevice B是您的设备名称,secretKeydurationMs是可选密钥。如果未指定SecretKey,则使用空字符串作为默认值。如果未指定periodMs,则使用系统参数device.claim.duration(在文件/etc/thingsboard/conf/thingsboard.yml中)。

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西西o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值