thingsboard遥测数据

遥测数据相关操作

  • 采集 使用MQTT, CoAP或者HTTP协议采集设备数据。

  • 存储 在Cassandra(高效、可扩展、能容错的NoSQL数据库)中存储时序数据。

  • 查询 查询最新时序数据值,或查询特定时间段内的所有数据。

  • 订阅 使用websockets订阅数据更新(用于可视化或实时分析)。

  • 可视化 使用可配置和可配置的小部件以及仪表盘可视化时序数据。

  • 过滤和分析 使用灵活的规则引擎过滤和分析数据(/docs/user-guide/rule-engine/)。

  • 事件警报 根据采集的数据触发事件警报。

  • 数据传输 过规则引擎节点实现与外部数据交互(例如Kafka或RabbitMQ规则节点)。

Mqtt

  • 我们将在本文中使用令牌凭据对进行设备访问,这些凭证稍后将称为**$ACCESS_TOKEN**

连接状态码

  • 0x00 连接成功 - 成功连接
  • 0x04 连接失败 - 用户名或密码错误。
  • 0x05 连接未授权 - -用户名包含无效的 $ACCESS_TOKEN

key-value格式

ThingsBoard支持以JSON格式的key-value字符串,值可以是string、bool、float、long或者二进制格式的序列化字符串;例如:

{
 "stringKey":"value1", 
 "booleanKey":true, 
 "doubleKey":42.0, 
 "longKey":73, 
 "jsonKey": {
    "someNumber": 42,
    "someArray": [1,2,3],
    "someNestedObject": {"key": "value"}
 }
}

遥测上传API

发布遥测数据到ThingsBoard服务端必须PUBLISH消息发送到下面主题:

v1/devices/me/telemetry

如果设备不能获取到时间戳可以使用如下模式,这种情况下服务端会给这些数据分配时间戳:

{"key1":"value1", "key2":"value2"}
或
[{"key1":"value1"}, {"key2":"value2"}]

如果您的设备能够获得客户端时间戳(精度是毫秒),则可以使用以下格式:

{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}

属性API

发布属性到服务器

客户端设备属性上传到服务端:

v1/devices/me/attributes

从服务器获取属性

v1/devices/me/attributes/request/$request_id

其中**$request_id**表示整数的请求标识符。

在发送带有请求的PUBLISH消息之前客户端需要订阅:

v1/devices/me/attributes/response/+

从服务器订阅属性

从服务端订阅共享属性

v1/devices/me/attributes

如果服务端组件(例如REST API或规则链)更改了共享属性时客户端就会收到对应属性值:

{"key1":"value1"}

RPC API

服务端

客户端订阅服务端RPC命令,必须订阅下面主题

v1/devices/me/rpc/request/+

订阅后客户端会收到一条命令作为对相应主题的PUBLISH命令:

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符。

客户端PUBLISH下面主题进行响应:

v1/devices/me/rpc/response/$request_id

客户端

RPC命令发送到服务端必须PUBLISH消息发送到下面主题

v1/devices/me/rpc/request/$request_id

$request_id表示请求的整型标识符,服务端必须发布到下面主题:

v1/devices/me/rpc/response/$request_id

声明设备

请向以下主题发送PUBLISH消息:

v1/devices/me/claim

支持的数据格式为:

{"secretKey":"value", "durationMs":60000}

注意: 以上字段是可选的如果未指定secretKey则使用空字符串作为默认值;device.claim.duration毫秒未指定时系统参数device.claim.duration则使用(/etc/thingsboard/conf/thingsboard.yml)。

Coap

Coap是轻量级物联网协议用于受限的设备。

连接状态码

  • 4.00 请求无效 - 请求参数与正文错误,请求无效。
  • 4.01 未授权 - $ACCESS_TOKEN无效。
  • 4.04 未找到 - 找不到资源。

遥测上传API

为了将遥测数据发布到ThingsBoard服务器节点,请将POST请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/telemetry

数据格式和Mqtt一样,时间戳处理也一样

属性API

发布属性到服务器

为了将客户端设备属性发布到ThingsBoard服务器节点,请将POST请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/attributes

从服务器获取属性

为了向ThingsBoard服务器节点请求客户端或共享设备属性,请将GET请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/attributes?clientKeys=attribute1,attribute2&sharedKeys=shared1,shared2

从服务器订阅属性

了订阅共享设备属性更改,请将带有Observe选项的GET请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/attributes

RPC API

服务端

为了从服务器订阅RPC命令,请将带有观察标志的GET请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/rpc

并可以使用POST请求回复以下网址:

coap://host/api/v1/$ACCESS_TOKEN/rpc/{$id}

客户端

为了将RPC命令发送到服务器,请将POST请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/rpc

声明设备

为了启动声明设备,请将POST请求发送到以下URL:

coap://host/api/v1/$ACCESS_TOKEN/claim

Http

连接状态码

  • 400 - 无效的请求地址.
  • 401 - 无效的 $ACCESS_TOKEN.
  • 404 - 未找到.

遥测上传API

为了将遥测数据发布到ThingsBoard服务器节点,请将POST请求发送到以下URL:

http(s)://host:port/api/v1/$ACCESS_TOKEN/telemetry

数据格式和mqtt coap一样

属性API

发布属性到服务器

为了将客户端设备属性发布到ThingsBoard服务器节点,请将POST请求发送到以下URL:

http(s)://host:port/api/v1/$ACCESS_TOKEN/attributes

从服务器获取属性

为了向ThingsBoard服务器节点请求客户端或共享设备属性,请将GET请求发送到以下URL:

http(s)://host:port/api/v1/$ACCESS_TOKEN/attributes?clientKeys=attribute1,attribute2&sharedKeys=shared1,shared2

从服务器订阅属性

为了订阅共享设备属性更改,请将带有可选“ timeout”请求参数的GET请求发送到以下URL

http(s)://host:port/api/v1/$ACCESS_TOKEN/attributes/updates

RPC API

服务器端RPC

为了从服务器订阅RPC命令,请将带有可选的“超时”请求参数的GET请求发送到以下URL:

http(s)://host:port/api/v1/$ACCESS_TOKEN/rpc

订阅后,如果没有对特定设备的请求,则客户端可以接收rpc请求或超时消息。RPC请求正文的示例如下所示:

{
  "id": "1",
  "method": "setGpio",
  "params": {
    "pin": "23",
    "value": 1
  }
}
  • id - 请求ID,int
  • method - RPC方法名称, string
  • params - -RPC方法参数,自定义json对象

并可以使用POST请求回复以下网址:

http://host:port/api/v1/$ACCESS_TOKEN/rpc/{$id}

客户端RPC

为了将RPC命令发送到服务器,请将POST请求发送到以下URL:

http://host:port/api/v1/$ACCESS_TOKEN/rpc

声明设备

http(s)://host:port/api/v1/$ACCESS_TOKEN/claim

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×