- 使用场景
- 前置条件
- 1. 创建asset与设备
- 2. 使用Rule Engine模拟遥测
- 3. 在asset上导入calculated field
- 4. 验证配置
- 5. 使用dashboard可视化数据(可选)
- 后续步骤
本指南演示如何在ThingsBoard中基于两台不同设备的遥测数据计算遥测delta,并将结果存储为asset telemetry。
以仓库中安装的室内和室外温度计之间的温度差为例。计算得到的值作为新的遥测键存储,可用于监控、可视化或告警。
本指南为入门级,重点演示平台核心能力,而非从零构建配置。
因此,在设置过程中将提供并导入预设的calculated field配置。
将上述配置导入ThingsBoard实例后,可查看其结构、逻辑和行为,并据此适配自己的使用场景。
使用场景
假设仓库配备两台温度传感器:
- Indoor Thermometer
- Outdoor Thermometer
目标是:
- 从两台设备采集遥测
- 计算室内与室外读数的绝对温度差
- 将结果作为仓库asset的遥测存储
- 实时可视化和监控该值
该示例展示跨实体数据聚合,即在asset层级处理来自多台设备的遥测。
前置条件
在继续前,建议先阅读ThingsBoard Calculated fields 文档。
该主题提供了理解本示例中实体关系与数据处理机制所需的基础。
1. 创建asset与设备
在ThingsBoard中, asset是用于表示建筑物、仓库或生产线等逻辑对象的抽象实体。
本示例中,asset代表仓库,用于存储来自多台设备的聚合遥测。
创建asset:
- 进入 Entities ⇾ Assets。
- 点击右上角 「+ Add asset」 按钮,选择 「Add new asset」 并创建:
• Asset name: Warehouse A
• Asset profile: warehouse
创建两台设备:
- 下载包含设备配置的CSV文件:
thermometers_device_data.csv - 进入 Entities ⇾ Devices。
- 点击右上角 「+ Add device」 按钮,选择 「Import device」。
- 上传 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运行后:
- 打开 Entities ⇾ Devices ⇾ Indoor Thermometer ⇾ Latest telemetry。
- 打开 Entities ⇾ Devices ⇾ Outdoor Thermometer ⇾ Latest telemetry。
应能看到持续更新的 temperature 值。
3. 在asset上导入calculated field
计算两台温度计的温度差,并将其作为asset telemetry存储。
- 下载calculated field配置文件:
temperature_delta_based_on_2_devices_cf.json。 - 进入 Calculated fields 页面。
- 点击右上角 「+ Add calculated field」 按钮,选择 「Import calculated field」。
- 上传 calculated field 配置文件。
- 选择 warehouse asset profile 作为目标实体,以便calculated field自动应用到所有相关assets。
- 按如下方式更新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 - 点击 Add 完成导入。
计算逻辑
1
abs(indoorTemperature - outdoorTemperature)
无论哪个值更高,都会计算绝对温度差。
保存后,asset会自动接收更新后的deltaTemperature遥测。
4. 验证配置
- 打开 Entities ⇾ Assets ⇾ Warehouse A ⇾ Latest telemetry。
- 确认存在 deltaTemperature 键并实时更新。
这表明:
- 两台设备的遥测均被接收
- Calculated field正确执行
- 结果存储在asset上
5. 使用dashboard可视化数据(可选)
要可视化监控温度差:
- 下载准备好的 Warehouse dashboard JSON 文件。
- 导入 到ThingsBoard。
- 导入后,更新 entity alias,将Warehouse A设为目标实体以正确显示数据。
Dashboard应显示室内与室外温度计之间温度差的实时图表和表格。