产品定价 立即试用
社区版
入门 文档 指南 安装 架构 API 常见问题
目录

遥测 delta 计算

本指南介绍如何在ThingsBoard中计算遥测值之间的差值(delta),并将该计算结果用于自动触发和清除告警。

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

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


使用场景

假设设备配备温度传感器,定期向ThingsBoard发送遥测数据。

需要:

  • 在固定时间窗口(例如15分钟)内监控温度变化。
  • 当温度变化超过设定阈值(5°C)时触发告警。
  • 当值恢复正常时自动清除告警。

该流程代表常见的实时监控与异常检测场景,并可扩展以支持更高级用例。


前置条件

在继续前,建议先阅读以下ThingsBoard文档:

  • Calculated fields:了解如何基于传入的数据计算新的遥测值。
  • 告警规则:了解如何定义告警触发条件,以快速响应异常状态。

以上概念对理解下述配置至关重要。


步骤1. 添加演示设备

先添加一台上报温度遥测的演示设备。

该设备作为calculated field和alarm rules使用的遥测数据来源。

操作

  1. 进入 Entities ⇾ Devices。
  2. 点击右上角 「+ Add device」 按钮,选择 「Add new device」 并创建:
     • Device name: Thermometer
     • Device profile: thermostat

设备将在ThingsBoard中注册,并可以上报遥测数据。


步骤2. 导入用于遥测delta的calculated field

所提供的配置在最近15分钟内计算温度delta,并将结果存储为新的遥测键:deltaTemperature。

操作

  1. 下载calculated field配置文件:
    telemetry_delta_calculation_cf.json。
  2. 进入 Calculated fields 页面。
  3. 点击右上角 「+ Add calculated field」 按钮,选择 「Import calculated field」。
  4. 上传 calculated field 配置文件。
  5. 选择 thermostat device profile 作为目标实体,以便calculated field自动应用到所有相关设备。
  6. 点击 Add 完成导入。

计算逻辑

Calculated field脚本:

  • 收集最近5分钟内的温度值
  • 使用时间窗口内的首个和末个值
  • 计算两者差值
  • 将绝对值存储为遥测

本示例使用的脚本

function calculate(ctx, altitude, temperature) {

1
2
3
4
5
6
7
8
9
var delta = 0;

if (temperature.values.size() >= 2) {
  delta = temperature.last - temperature.first;
}

return {
  "deltaTemperature": Math.abs(toInt(delta))
}

}

要点

  • 若可用值少于两个,delta设为 0
  • 脚本可应对稀疏遥测
  • 结果作为 time series telemetry 存储并自动更新

步骤3. 配置基于遥测delta的告警规则

配置对 deltaTemperature 键值变化做出响应的 alarm rule。

告警逻辑:
 • 当 deltaTemperature ≥ 5 时触发告警
 • 当 deltaTemperature < 5 时清除告警

操作

  1. 下载alarm rule配置文件:
    temperature_deviation_alarm_rule.json。
  2. 进入 Alarms ⇾ Alarm rules。
  3. 上传 alarm rule 配置文件。
  4. 为 thermostat device profile 配置alarm rule,以确保其一致应用于使用该profile的所有设备。
  5. 点击 Add。

导入后,告警生命周期由ThingsBoard自动管理。


步骤4. 验证配置

为确认一切正常,请在15分钟内发布两个温度值。

验证步骤

  1. 发布初始温度值(例如25)。
    最简单的方式是使用 check connectivity 功能。也可执行以下命令:

    请勿忘记替换:
     •  为您的ThingsBoard 主机名或IP地址。
     • $ACCESS_TOKEN 为设备的access token。

    1
    
    curl -v -X POST http://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/telemetry --header Content-Type:application/json --data "{temperature:25}"
    
  2. 打开设备的 Latest telemetry 标签页,实时监控传入的数据。
    此时应能看到以下遥测键:
    • temperature = 25
    • deltaTemperature = 0
  3. 在15分钟内发布第二个温度值(例如32)。

    1
    
    curl -v -X POST http://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/telemetry --header Content-Type:application/json --data "{temperature:32}"
    
  4. 第二次更新后:
     • deltaTemperature = 7。因超过阈值而触发告警
  5. 打开 Alarms 标签页验证告警状态。

一旦 deltaTemperature 键值小于 5,告警将自动清除。


后续步骤