产品定价 立即试用
专业版
文档 > 分析 > 使用AI进行物联网异常检测
入门
指南 安装 架构 API 常见问题
目录

工业设备健康 — 基于 AI 的 ThingsBoard 异常检测

本文档介绍如何将原始设备遥测数据转化为可操作维护洞察的ThingsBoard解决方案:

工作流程:

  1. 设备发送vibration(mm/s)、temperature(°C)和acousticDev(相对基线的偏差百分比)。
  2. 字段计算为每个指标维护最近N个值(默认:100)和/或最近M分钟的滚动窗口。
  3. 滚动窗口被转发到AI规则节点(OpenAI或其他LLM提供方)。
  4. 如果AI检测到异常,规则链会创建ThingsBoard告警并可选择发送通知。

架构

image

前置条件

  • 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} — 元数据中的特定值
  • 支持的响应格式:TEXTJSONJSON Schema(本示例使用JSON Schema)。
  • 使用5秒间隔的deduplication节点来减少AI token消耗。

测试

步骤1.使用EquipmentSensor配置文件创建测试设备Equipment Sensor 1

步骤2.从设备详情中复制”Check connectivity“命令。

您的命令大致如下:

1
2
3
curl -v -X POST http://localhost:8080/api/v1/6sED1ALqyJg0P6ezIODH/telemetry \
--header Content-Type:application/json \
--data "{temperature:25}"

*其中localhost:8080ThingsBoard实例的主机6sED1ALqyJg0P6ezIODH设备访问令牌


步骤3.修改并发送测试数据。

步骤3.1无告警情况:

将以下测试数据发送到ThingsBoard。请确保替换:

  • $THINGSBOARD_HOST_NAME为您的ThingsBoard实例主机
  • $YOUR_DEVICE_ACCESS_TOKEN为您的设备访问令牌
1
2
3
curl -v -X POST http://$THINGSBOARD_HOST_NAME/api/v1/$YOUR_DEVICE_ACCESS_TOKEN/telemetry \
--header Content-Type:application/json \
--data '{"vibration":4.2,"temperature":70,"acousticDev":5}'

不会创建告警。


步骤3.2轴承磨损检测:

通过将以下测试数据发送到ThingsBoard来模拟轴承磨损事件。请确保替换:

  • $THINGSBOARD_HOST_NAME为您的ThingsBoard实例主机
  • $YOUR_DEVICE_ACCESS_TOKEN为您的设备访问令牌
1
2
3
curl -v -X POST http://$THINGSBOARD_HOST_NAME/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来模拟不对中事件。请务必替换:

  • $THINGSBOARD_HOST_NAME为您的ThingsBoard实例主机,
  • $YOUR_DEVICE_ACCESS_TOKEN为您的设备访问令牌。
1
2
3
curl -v -X POST http://$THINGSBOARD_HOST_NAME/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、趋势)而非完整数组。

故障排查

  • 无告警
    1. 确认”Latest telemetry”标签页中有原始设备数据。
    2. 启用并查看字段计算调试事件。
    3. 启用并查看对应规则节点调试事件。
  • 成本过高:增加去重周期,调整提示或更换AI模型。

下一步

尝试调整AI提示,并向社区反馈您的建议!