Skip to content

详解遥测数据 ​

正文与配图来自原稿。一切以官方英文文档为准:
https://thingsboard.io/docs/user-guide/telemetry/

1、什么是遥测数据? ​

设备随时间变化上报的数据,就是遥测数据(Telemetry)。

2、什么是数据点? ​

ThingsBoard 内部把遥测看作带时间戳的键值对。单个带时间戳的键值对称为一个数据点(data point)。

  • 键:始终是字符串
  • 值:可以是字符串、布尔、双精度、整数或 JSON

2.1、遥测示例 1 ​

下面 JSON 含 5 个数据点:temperature(双精度)、humidity(整数)、hvacEnabled(布尔)、hvacState(字符串)、configuration(JSON):

json
{
  "temperature": 42.2,
  "humidity": 70,
  "hvacEnabled": true,
  "hvacState": "IDLE",
  "configuration": {
    "someNumber": 42,
    "someArray": [1, 2, 3],
    "someNestedObject": {"key": "value"}
  }
}

该 JSON 没有时间戳时,ThingsBoard 使用当前服务器时间。

2.2、遥测示例 2 ​

消息中可自带时间戳:

json
{
  "ts": 1527863043000,
  "values": {
    "temperature": 42.2,
    "humidity": 70
  }
}

3、遥测数据存储 ​

可通过 thingsboard.yml(或环境变量)选择存储方式,支持:

  • SQL:PostgreSQL
  • NoSQL:Cassandra 或 Timescale

经验阈值(原稿):

规模建议
数据点 < 约 5000/秒可用 PostgreSQL
数据点 > 约 5000/秒建议 Cassandra

4、遥测数据保留(TTL) ​

策略取决于所选存储。

Cassandra ​

支持按插入行的 TTL。可用环境变量 TS_KV_TTL 配置系统默认 TTL;也可在 Save Timeseries 规则节点覆盖,或使用消息 metadata 的 TTL 字段,以优化存储。TTL 最大允许约 5 年。

Save Timeseries 节点的 TTL 常与租户配置中的默认存储 TTL 天数相关,可在 TbMsgTimeseriesNode 中看到:

TTL 相关源码/配置

PostgreSQL / Timescale ​

不支持按行 TTL。需用 SQL_TTL_* 等环境变量配置定期清理时序数据的例程。


补充(辅) ​

相关文章 ​