产品定价 立即试用
边缘
文档 > 配置指南 > 双向属性订阅、更新与后处理
入门
安装 架构 API 常见问题
目录

具有后处理的双向属性订阅与更新

概述

在ThingsBoard中,设备属性 是与设备关联的键值对,用于存储配置项、元数据及其他相关信息。

订阅设备属性使客户端能够在这些属性变更时收到更新。订阅方法因属性类型和使用的通信协议而异。

属性分为三种类型:

  • Server-side Attributes(服务器端属性): 仅由服务器设置和使用,可通过用户界面(UI)或REST API配置。
  • Shared Attributes(共享属性): 设备可订阅更新以在服务器修改时接收实时通知。可通过UI或REST API配置。
  • Client-side Attributes(客户端属性): 由设备设置并存储在服务器上。只能通过UI或REST API读取。

更多说明与示例,请参阅ThingsBoard文档Working with IoT Device Attributes

以下指南说明设备如何经由 ThingsBoard EdgeThingsBoard Cloud 进行实时双向通信。

前置条件

  • ThingsBoard Cloud 或本地托管 Server
  • 已安装 ThingsBoard Edge 且具备网络访问。
  • 可通过MQTTHTTPCoAP连接到 ThingsBoard EdgeDevice

步骤1. 为Edge配置规则链

要自动将消息(数据或属性)从设备路由到 ThingsBoard Cloud,请为 ThingsBoard Edge 配置规则链:

  • 登录ThingsBoard Cloud,进入Edge管理 > 规则链模板区域,点击分配给Edge实例规则链
    • 若使用Edge 4.0或更高版本,请在Edge实例中进入规则链区域。要编辑规则链,点击相应的规则链
  • 规则链编辑页面的节点搜索栏中找到"push to cloud"节点。该节点将消息从Edge推送到云端。将节点拖放到规则链画布上。然后在"添加规则节点"弹出窗口中输入节点标题,在"实体属性范围"框中选择"Client attributes"选项。点击"添加"按钮继续。
  • "save attributes""save time series"节点连接到"push to cloud"节点,并设置"Success"链接标签。点击规则链画布上的"Apply changes"按钮。

步骤2. 为Cloud配置规则链

要将某些属性更新消息发回Edge,请修改Cloud的root规则链。属性更新消息到达Edge后,您应在设备上看到该消息。

  • 进入规则链区域以修改规则链
  • 规则链编辑页面的节点搜索栏中找到"script"节点。该节点允许使用JavaScript修改消息载荷、元数据或消息类型。将节点拖放到规则链画布上。然后在"添加规则节点:script"弹出窗口中输入节点标题及下方脚本。点击"添加"按钮继续。
  • 规则链编辑页面的节点搜索栏中找到"push to edge"节点。该节点将消息从云端推送到Edge。将节点拖放到规则链画布上。然后在"添加规则节点"弹出窗口中输入节点标题,在"实体属性范围"框中选择"Shared attributes"选项。点击"添加"按钮继续。
  • "save attributes""save time series"节点连接到"push to edge"节点,并设置"Success"链接标签。点击规则链画布上的"Apply changes"按钮。

要重写并返回接收到的数据到Edge,请在 “script” 节点中添加以下脚本:

1
2
3
4
5
// POST PROCESSING LOGIC
msg = {"attribute1_result": "value1_result"};
metadata = {};

return {msg: msg, metadata: metadata, msgType: msgType};

步骤3. 订阅设备属性变更并发布设备属性消息

设备属性变更 的订阅及随后 设备属性消息 的发布流程取决于使用的协议。以下是物联网应用中遥测和属性更新的常用协议:

MQTT 是一种轻量级协议,常用于 IoT 通信。

要与 ThingsBoard Edge 通过 MQTT 通信,建议安装 MQTT Broker。这样设备即可 发布 遥测或属性消息,并 订阅 属性更新主题。

订阅共享设备属性变更

要订阅共享设备属性变更,发送 SUBSCRIBE 消息:

1
mosquitto_sub -d -h$THINGSBOARD_HOST_NAME-t "v1/devices/me/attributes" -u "$ACCESS_TOKEN"
  • v1/devices/me/attributes ThingsBoard Edge 上的主题,用于设备监听来自云端与其属性相关的任何更新。
  • $THINGSBOARD_HOST_NAME 替换为 ThingsBoard Edge 实例的实际主机名或 IP 地址。
  • $ACCESS_TOKEN 替换为设备的实际访问令牌。要查找设备访问令牌,请进入 实体 > 设备 部分并点击该设备。在 「设备详情」 页面,点击 「复制访问令牌」 按钮即可复制令牌。

发布时序数据或属性消息

要向 ThingsBoard Edge 发布客户端设备属性,发送 PUBLISH 消息。

可发布遥测数据:

1
mosquitto_pub -d -h$THINGSBOARD_HOST_NAME-t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -m "{"attribute1": "value1", "attribute2": true}"
  • v1/devices/me/attributes 遥测数据发布到的主题。
  • $THINGSBOARD_HOST_NAME ThingsBoard Edge 实例的实际主机名或 IP 地址
  • $ACCESS_TOKEN 设备的实际访问令牌
  • {“attribute1”: “value1”, “attribute2”: true} 遥测数据

也可使用 new-attributes-values.json 文件中的数据发布客户端属性更新:

1
mosquitto_pub -d -h$THINGSBOARD_HOST_NAME-t "v1/devices/me/attributes" -u "$ACCESS_TOKEN" -f "new-attributes-values.json"

HTTP 是一种通用网络协议,可用于 IoT 应用。HTTP 协议基于 TCP,采用请求-响应模型。

订阅共享设备属性变更

要订阅共享设备属性的变更,向以下 URL 发送 GET 请求,可带可选参数 timeout

1
http(s)://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes/updates
  • /attributes/updates 用于获取设备属性更新的端点。
  • $THINGSBOARD_HOST_NAME 替换为 ThingsBoard Edge 实例的实际主机名或 IP 地址。
  • $ACCESS_TOKEN 替换为设备的实际访问令牌。要查找设备访问令牌,请进入 实体 > 设备 部分并点击该设备。在 「设备详情」 页面,点击 「复制访问令牌」 按钮即可复制令牌。

执行命令:

1
curl -v -X GET http(s)://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes/updates?timeout=20000
  • timeout=20000 服务器将保持连接 20 秒。若在此超时时间内设备的 shared attribute(共享属性)被更新,服务器将立即返回更新结果。

发布时序数据或属性消息

要向 ThingsBoard Edge 发布客户端设备属性,向以下 URL 发送 POST 请求:

1
http(s)://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes
  • $THINGSBOARD_HOST_NAME 为 ThingsBoard Edge 实例的实际主机名或 IP 地址
  • $ACCESS_TOKEN 为设备的实际访问令牌

发布客户端属性更新:

1
curl -v -X POST --data "{"attribute1": "value1", "attribute2":true, "attribute3": 43.0}" https:/$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes --header "Content-Type:application/json"

也可使用 new-attributes-values.json 文件中的数据发布客户端属性更新:

1
curl -v -X POST -d @new-attributes-values.json https://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes --header "Content-Type:application/json"

CoAP 是一种适用于受限设备的轻量级 IoT 协议。CoAP 基于 UDP,但类似 HTTP,采用请求-响应模型。

订阅共享设备属性变更

要订阅共享设备属性变更,向以下 URL 发送 GET 请求:

1
coap://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes
  • $THINGSBOARD_HOST_NAME 替换为 ThingsBoard Edge 实例的实际主机名或 IP 地址。
  • $ACCESS_TOKEN 替换为设备的实际访问令牌。要查找设备访问令牌,请进入 实体 > 设备 部分并点击该设备。在 「设备详情」 页面,点击 「复制访问令牌」 按钮即可复制令牌。

执行命令:

1
coap get -o coap://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes

一旦共享属性被服务端组件(REST API 或规则链)更改,客户端将收到更新。

发布时序数据或属性消息

要向 ThingsBoard Edge 发布客户端设备属性,向以下 URL 发送 POST 请求:

1
coap://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes
  • $THINGSBOARD_HOST_NAME 为 ThingsBoard Edge 实例的实际主机名或 IP 地址
  • $ACCESS_TOKEN 为设备的实际访问令牌

使用 new-attributes-values.json 文件中的数据发布客户端属性更新:

1
cat new-attributes-values.json | coap post coap://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/attributes

步骤4. 确认结果

确认收到并推送的属性:

  • 订阅属性更新后,属性变化时您将收到更新。我们以MQTT协议为例,新属性发布后收到了更新。
  • 要确认客户端属性是否已接收,请进入Edge实体 > 设备区域并点击设备。在"设备详情"页面,选择"Attributes"选项卡,在"实体属性范围"下拉菜单中选择"Client attributes"选项。
  • 要确认属性消息是否已接收并推送到云端,请进入Edge实例的规则链区域,点击规则链。点击"push to cloud"节点。
  • "Push to cloud"页面,选择"Events"选项卡。若已启用调试模式,在"Event type"下拉菜单中选择"Debug"选项。您应能看到新记录 - "IN""OUT",其中"IN"记录表示从设备接收的属性,"OUT"记录表示推送到云端的属性消息。
  • 要确认云端的属性消息是否已接收并推送回Edge,请进入云端的规则链区域,点击规则链。双击"push to edge"节点。
  • "Push to edge"页面,选择"Events"选项卡。若已启用调试模式,在"Event type"下拉菜单中选择"Debug"选项。您应能看到两条新记录 - "IN""OUT",其中"IN"记录表示从Edge接收的属性,"OUT"记录表示推送回Edge的属性消息。

下一步

  • Getting started guide(入门指南)- 快速概览 ThingsBoard Edge 主要功能。预计 15–30 分钟完成:

  • Installation guides(安装指南)- 了解如何在各种操作系统上安装 ThingsBoard Edge 并连接到 ThingsBoard Server。

  • Edge 规则引擎:

  • 安全:
    • gRPC over SSL/TLS - 了解如何为 Edge 与云端之间的通信配置 gRPC over SSL/TLS。
  • 功能:

    • Edge Status(Edge 状态)- 了解 ThingsBoard Edge 上的 Edge Status 页面。

    • Cloud Events(云端事件)- 了解 ThingsBoard Edge 上的 Cloud Events 页面。

  • 使用场景:

  • Roadmap(路线图)- ThingsBoard Edge 路线图。