产品定价 立即试用
云平台
欧洲地区
基于两台设备遥测的数据函数
入门 文档 指南 API 常见问题
目录

基于两台设备遥测的数据函数

本指南演示如何在ThingsBoard中基于两台不同设备的遥测数据计算遥测delta,并将结果存储为asset telemetry。

以仓库中安装的室内和室外温度计之间的温度差为例。计算得到的值作为新的遥测键存储,可用于监控、可视化或告警。

本指南为入门级,重点演示平台核心能力,而非从零构建配置。
因此,在设置过程中将提供并导入预设的calculated field配置。

将上述配置导入ThingsBoard实例后,可查看其结构、逻辑和行为,并据此适配自己的使用场景。


使用场景

假设仓库配备两台温度传感器:

  • Indoor Thermometer
  • Outdoor Thermometer

目标是:

  • 从两台设备采集遥测
  • 计算室内与室外读数的绝对温度差
  • 将结果作为仓库asset的遥测存储
  • 实时可视化和监控该值

该示例展示跨实体数据聚合,即在asset层级处理来自多台设备的遥测。


前置条件

在继续前,建议先阅读ThingsBoard Calculated fields 文档。

该主题提供了理解本示例中实体关系与数据处理机制所需的基础。


1. 创建asset与设备

在ThingsBoard中, asset是用于表示建筑物、仓库或生产线等逻辑对象的抽象实体。
本示例中,asset代表仓库,用于存储来自多台设备的聚合遥测。

创建asset:

  1. 进入 Entities Assets
  2. 点击右上角 「+ Add asset」 按钮,选择 「Add new asset」 并创建:
     • Asset name: Warehouse A
     • Asset profile: warehouse

创建两台设备:

  1. 下载包含设备配置的CSV文件:
    thermometers_device_data.csv
  2. 进入 Entities Devices
  3. 点击右上角 「+ Add device」 按钮,选择 「Import device」
  4. 上传 CSV 文件 并按照导入向导操作。

CSV配置详情:

  • CSV delimiter,
  • Column mapping:
    • Name: Indoor Thermometer, Outdoor Thermometer
    • Type: thermometer

2. 使用Rule Engine模拟遥测

由于本示例使用虚拟设备,遥测数据需通过模拟方式生成。

使用 Rule Engine 定期发布随机温度值。

为简化说明,将Generator添加到Root Rule Chain,但在生产环境中应使用专用rule chain。

  • 进入 Rule chains
  • 打开 Root Rule Chain
  • Generator node 拖拽到画布上。
  • 选择 Indoor Thermometer 作为originator。
  • 使用相应的模拟脚本替换generator函数。
  • Outdoor Thermometer 设备重复上述步骤。
  • 使用 Success 关系将两个Generator节点连接到 Entity type filter node
  • 应用更改。

Indoor Thermometer模拟脚本:

1
2
3
4
5
var indoorTemperature = toFixed(Math.random()*10 + 18, 2);
var msg = { indoorTemperature: indoorTemperature };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";
return { msg: msg, metadata: metadata, msgType: msgType };

该generator模拟约18–28 °C范围内的室内温度。

Outdoor Thermometer模拟脚本:

1
2
3
4
5
var outdoorTemperature = toFixed(Math.random()*10 + 16, 2);
var msg = { outdoorTemperature: outdoorTemperature };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";
return { msg: msg, metadata: metadata, msgType: msgType };

该generator模拟约16–26 °C范围内的室外温度。

验证

Generator运行后:

  1. 打开 Entities ⇾ Devices ⇾ Indoor Thermometer ⇾ Latest telemetry
  2. 打开 Entities ⇾ Devices ⇾ Outdoor Thermometer ⇾ Latest telemetry

应能看到持续更新的 temperature 值。


3. 在asset上导入calculated field

计算两台温度计的温度差,并将其作为asset telemetry存储。

  1. 下载calculated field配置文件:
    temperature_delta_based_on_2_devices_cf.json
  2. 进入 Calculated fields 页面。
  3. 点击右上角 「+ Add calculated field」 按钮,选择 「Import calculated field」
  4. 上传 calculated field 配置文件
  5. 选择 warehouse asset profile 作为目标实体,以便calculated field自动应用到所有相关assets。
  6. 按如下方式更新calculated field参数:
    • First argument:
      • Entity type: Device
      • Device name: Indoor Thermometer
      • Argument type: Latest telemetry
      • Time series key: indoorTemperature
      • Argument name: indoorTemperature
    • Second argument:
      • Entity type: Device
      • Device name: Outdoor Thermometer
      • Argument type: Latest telemetry
      • Time series key: outdoorTemperature
      • Argument name: outdoorTemperature
  7. 点击 Add 完成导入。

计算逻辑

1
abs(indoorTemperature - outdoorTemperature)

无论哪个值更高,都会计算绝对温度差。

保存后,asset会自动接收更新后的deltaTemperature遥测。


4. 验证配置

  1. 打开 Entities ⇾ Assets ⇾ Warehouse A ⇾ Latest telemetry
  2. 确认存在 deltaTemperature 键并实时更新。

这表明:

  • 两台设备的遥测均被接收
  • Calculated field正确执行
  • 结果存储在asset上

5. 使用dashboard可视化数据(可选)

要可视化监控温度差:

Dashboard应显示室内与室外温度计之间温度差的实时图表和表格。


后续步骤