:::info 匹配版本:V3.20
页面状态:已完成
原文地址:点击跳转 :::

ThingsBoard 可以自定义实体属性,并且还可以管理这些属性。属性采用键值对格式(key/value)。键值对格式的属性灵活、简洁,可以兼容市场上几乎所有的物联网设备物模型。

视频教程

Device Data Management using Thingsboard.mp4 (61.05MB)

属性类型

属性主要有三种类型:

  • server-side(服务器端) - 服务端实行,属性由服务器端的程序上传和管理。对设备端应用不可见。一些加密数据可能用在 ThingsBoard 的规则上,但不应该用在设备上。任何 ThingsBoard 实体(设备、资产、客户、租户、规则等)都支持服务器端属性。
    处理设备属性 - 图2
  • client-side (设备端)- 客户端属性,参见下面的设备特定属性
  • shared (共享)- 共享属性,请阅读下面设备特定属性

设备特定的属性类型

可以在Rule Engine(规则引擎)组件中使用所有属性:过滤器,处理器和操作。本指南概述了上面列出的功能,并提供了一些有用的链接以获取更多详细信息。
设备特有的属性分为两个类型:

  • client-side(客户端) - 属性由设备端的程序提交和管理。例如当前软件/固件版本,硬件规格等。
    处理设备属性 - 图3
  • shared(共享) - 属性由服务器端程序上传和管理。对设备程序可见。例如客户订阅计划,目标软件/固件版本。处理设备属性 - 图4

    设备属性API

    ThingsBoard 为设备程序提供了以下 API

  • 上传 client-side 属性到服务器

  • 从服务器拉取 client-sideshared 属性.
  • 订阅 shared 属性的更新。

设备属性API支持以下通信协议。你可以在相应的参考页面中查看API和示例:

  • MQTT API 参考;
  • CoAP API 参考;
  • HTTP API 参考

    遥测服务

    遥测服务负责将属性数据永久保存到内部数据存储器中; ThingsBoard 提供了服务器端 API 用来查询和订阅属性更新。

    内部数据存储中间件

    ThingsBoard 使用 Cassandra NoSQL 数据库或 SQL 数据库存储所有数据。
    尽管可以直接查询数据库,但为了简化流程,加强安全,ThingsBoard 提供了一组 RESTful 和 Websocket API:

  • 租户管理员能够管理属于自己的所有实体属性。

  • 客户用户只能管理分配给自己的实体属性。

    数据查询AP

    遥测服务提供以下 REST API 来获取实体数据
    处理设备属性 - 图5

注意: 上面列出的 API 可以通过 Swagger UI 查看,请查看通用 REST API 文档了解更多细节。为了 API 能够向下兼容 TB v1.0+ 版本,请求链接中包含了 plugin 字段。

属性键的 API

您可以用 GET 的请求方式访问下面链接来获取指定了实体类型和 id 的所有属性键的列表

  1. http(s)://host:port/api/plugins/telemetry/{entityType}/{entityId}/keys/attributes

所用命令如下:

  1. curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/keys/attributes \
  2. --header "Content-Type:application/json" \
  3. --header "X-Authorization: $JWT_TOKEN"

例如查询返回的结果如下:

  1. ["model","softwareVersion"]

支持的实体类型有: 租户、客户、用户、规则、仪表板、资产、设备、警报

属性值的 API

你可以通过 GET 的方式访问下面链接来获取指定了实体类型和 id 的所有属性最新值的列表

  1. http(s)://host:port/api/plugins/telemetry/{entityType}/{entityId}/values/attributes?keys=key1,key2,key3

所用命令如下:

  1. curl -v -X GET http://localhost:8080/api/plugins/telemetry/DEVICE/ac8e6020-ae99-11e6-b9bd-2b15845ada4e/values/attributes?keys=model,softwareVersion \
  2. --header "Content-Type:application/json" \
  3. --header "X-Authorization: $JWT_TOKEN"

返回的结果如下:

  1. [
  2. {
  3. "lastUpdateTs": 1479735871836,
  4. "key": "model",
  5. "value": "Model 42"
  6. },
  7. {
  8. "lastUpdateTs": 1479735871836,
  9. "key": "softwareVersion",
  10. "value": "1.0.0"
  11. }
  12. ]

支持的实体类型有:租户、客户、用户、规则、仪表板、资产、设备、警报

遥测规则节点

规则引擎中有一些规则节点与遥测服务配合处理。详情请参考节点描述:

:::info

个人备注

有关于属性的范围插槽,具体字段为: SERVER_SCOPE 服务端属性; CLIENT_SCOPE 设备端属性; SHARED_SCOPE 共享端属性; 保存属性的格式 {key:value}:::