本文档介绍如何将原始设备遥测数据转化为可操作维护洞察的ThingsBoard解决方案:
工作流程:
- 设备发送
vibration(mm/s)、temperature(°C)和acousticDev(相对基线的偏差百分比)。 - 字段计算为每个指标维护最近N个值(默认:100)和/或最近M分钟的滚动窗口。
- 滚动窗口被转发到AI规则节点(OpenAI或其他LLM提供方)。
- 如果AI检测到异常,规则链会创建ThingsBoard告警并可选择发送通知。
架构
前置条件
- ThingsBoard版本4.2+
- 能够发送所需遥测值的设备(本指南中将模拟这些值)
- LLM提供方凭据(OpenAI、Azure OpenAI等)
遥测输入与输出
每设备预期的遥测键:
vibration— mm/s(浮点数)temperature— °C(浮点数)acousticDev— 相对基线的偏差百分比(浮点数)
AI输出:
anomaly— 简短标签(如"Bearing Wear")summary— 简洁的可读建议(例如"Vibration has reached 7.4 mm/s and temperature is at 86°C accompanied by irregular acoustic patterns, indicating bearing wear. Recommend immediate bearing inspection and replacement to avoid catastrophic failure.")
字段计算配置
目的: 高效维护最近N个读数(默认100,可配置)的滚动窗口,并将其直接转发到AI节点。
步骤:
1. 下载并将EquipmentSensor设备配置导入到您的ThingsBoard实例。
2. 下载并将字段计算导入到EquipmentSensor设备配置中。
要点:
- 滚动窗口时间范围设置为1天。
- 存储的值数量设置为100。系统设置中默认最大为1000,可配置。
- TBEL脚本以单条消息的形式输出滚动值到规则引擎:
1
2
3
4
5
6
// Sample script to output raw values of the rolling arguments;
return {
"acousticDevRecords": acousticDevRecords,
"temperatureRecords": temperatureRecords,
"vibrationRecords": vibrationRecords
};
规则链配置
目的: 分析滚动窗口数据,对异常进行分类,并生成自然语言摘要。支持OpenAI或其他LLM提供方。
步骤:
- 下载包含”Equipment Health Analysis“规则链配置的JSON文件。
- 进入「Rule chains」页面,点击「加号」图标按钮,从下拉菜单中选择「Import rule chain」。
- 在打开的窗口中上传包含规则链配置的 JSON 文件,然后点击「Import」。
- 找到「AI request」节点并进入其编辑模式。
- 点击「Create new」创建新 AI 模型。
- 输入AI 模型名称、选择AI 提供商并粘贴API key。本示例使用 OpenAI 的 o4-mini。保存前点击Test connectivity验证,然后点击「Save」。
- 对「AI request」节点Apply changes。
- Save rule chain 保存规则链。
5.更新EquipmentSensor配置文件,引用”Equipment Health Analysis“规则链。
重要说明:
- 系统和用户提示可引用传入消息数据:
$[*]— 整个消息体${*}— 整个消息元数据$[key]— 消息体中的特定字段${key}— 元数据中的特定值
- 支持的响应格式:TEXT、JSON和JSON Schema(本示例使用JSON Schema)。
- 使用5秒间隔的deduplication节点来减少AI token消耗。
测试
步骤1.使用EquipmentSensor配置文件创建测试设备Equipment Sensor 1。
步骤2.从设备详情中复制”Check connectivity“命令。
您的命令大致如下:
1
2
3
curl -v -X POST http://eu.thingsboard.cloud/api/v1/6sED1ALqyJg0P6ezIODH/telemetry \
--header Content-Type:application/json \
--data "{temperature:25}"
*其中eu.thingsboard.cloud为ThingsBoard实例的主机,6sED1ALqyJg0P6ezIODH为设备访问令牌。
步骤3.修改并发送测试数据。
步骤3.1无告警情况:
将以下测试数据发送到ThingsBoard。
请确保将$YOUR_DEVICE_ACCESS_TOKEN替换为您的设备访问令牌。
1
2
3
curl -v -X POST http://eu.thingsboard.cloud/api/v1/$YOUR_DEVICE_ACCESS_TOKEN/telemetry \
--header Content-Type:application/json \
--data '{"vibration":4.2,"temperature":70,"acousticDev":5}'
不会创建告警。
步骤3.2轴承磨损检测:
通过将以下测试数据发送到ThingsBoard来模拟轴承磨损事件。
请确保将$YOUR_DEVICE_ACCESS_TOKEN替换为您的设备访问令牌。
1
2
3
curl -v -X POST http://eu.thingsboard.cloud/api/v1/$YOUR_DEVICE_ACCESS_TOKEN/telemetry \
--header Content-Type:application/json \
--data '{"vibration":8.2,"temperature":88,"acousticDev":5}'
将创建告警。以下是AI输出示例:
1
2
3
4
{
"anomaly": "Bearing Wear",
"summary": "Vibration has reached 7.4 mm/s and temperature is at 86 °C accompanied by irregular acoustic patterns, indicating bearing wear. Recommend immediate bearing inspection and replacement to avoid catastrophic failure."
}
步骤3.3不对中检测:
通过将以下测试数据发送到ThingsBoard来模拟不对中事件。
请确保将$YOUR_DEVICE_ACCESS_TOKEN替换为您的设备访问令牌。
1
2
3
curl -v -X POST http://eu.thingsboard.cloud/api/v1/$YOUR_DEVICE_ACCESS_TOKEN/telemetry \
--header Content-Type:application/json \
--data '{"vibration":32.2,"temperature":38,"acousticDev":5}'
将创建告警。以下是AI输出示例:
1
2
3
4
{
"anomaly": "Misalignment",
"summary": "A sudden vibration spike to 32.2 mm/s without a corresponding temperature rise or acoustic deviation indicates likely misalignment in the drive train. Please perform an immediate shaft-and-coupling alignment check to prevent further mechanical damage."
}
性能与成本控制
- 批处理与防抖:仅在收到N个点或每T秒后向AI发送。
- 提前过滤:若所有指标均处于正常范围内,则跳过AI调用。
- 有效负载压缩:若提示允许,可发送统计量(min/mean/max/std、趋势)而非完整数组。
故障排查
- 无告警:
- 确认”Latest telemetry”标签页中有原始设备数据。
- 启用并查看字段计算调试事件。
- 启用并查看对应规则节点调试事件。
- 成本过高:增加去重周期,调整提示或更换AI模型。
下一步
尝试调整AI提示,并向社区反馈您的建议!