产品定价 立即试用
社区版
文档 > 规则引擎 > 数据处理与操作 > 设备离线时创建告警
入门
指南 安装 架构 API 常见问题
目录

设备离线时创建 Alarm

本教程演示如何使用 Rule Engine 在设备离线一定时间后创建 alarm。

使用场景

假设有如下场景:

  • 你有一台已连接到 ThingsBoard 的设备,设备上的温度传感器会采集并上报 telemetry 数据。

  • 温度传感器可能因各种故障停止上报 telemetry 数据。

因此,需要在 ThingsBoard Rule Engine 中实现以下逻辑:

  • 当设备在一段时间内无活动时创建告警。这个时间可以通过两种方式定义:

    • 方式一:修改全局无活动超时参数。
      该参数在 thingsboard.yml 中配置(state.defaultInactivityTimeoutInSec),默认值为 600 秒(10 分钟)。

    • 方式二:为单个设备设置服务端属性 “inactivityTimeout”(单位毫秒)覆盖默认值。
      下文将重点介绍这种方式。

  • 当设备恢复活动时自动清除告警。

背景说明

ThingsBoard 的 Device State 服务负责监控设备连接状态,并触发连接相关事件推送到 Rule Engine。

ThingsBoard 支持以下四类事件:

Event TypeDescription
Connect 设备连接到 ThingsBoard 时触发。
Disconnect 设备与 ThingsBoard 断开连接时触发。
Activity 设备上报 telemetry、属性更新或 RPC 命令时触发。
Inactivity 设备在一段时间内无活动时触发。

本教程将重点介绍设备 Inactivity 事件,并说明如何:

  • 使用 Rule Engine 创建 Inactivity 告警;

  • 配置无活动超时参数。



添加设备

  • 在 ThingsBoard 中新增一个 Device 实体。
  • 设备名称填写 Temperature device,设备类型填写 Temperature sensor

image



配置设备

  • 进入 Devices -> Temperature device -> Attributes -> Server attributes,点击 Add

  • 设置 “inactivityTimeout” 属性,例如 60000 毫秒。

image



配置 Rule Chain

下图为初始 Root Rule Chain(已移除与本教程无关的节点)。

image

默认 rule chain 增加了以下两个 action 节点:

  • Create alarm 节点:通过 Inactivity Event 关系连接到 Message Type Switch

  • Clear alarm 节点:通过 Activity Event 关系连接到 Message Type Switch

最终 Rule Chain 如下图所示:

image

  • 下载并导入上述 rule chain 对应的 json file

  • 不要忘记将新 rule chain 标记为 root

你也可以从零开始创建该 Rule Chain,步骤如下。

新建 Rule Chain(Tutorial of Inactivity Event

  • 进入 Rule Chains -> Add new Rule Chain

  • 名称填写 Tutorial of Inactivity Event,点击 ADD

  • 新 Rule Chain 创建完成后,记得标记为 root

image image

添加所需节点

本教程中需要创建 5 个节点,具体如下:

Message Type Switch 节点

添加 Message Type Switch 节点,并连接到 Input 节点。

该节点会按消息类型对入站消息进行路由,包含:

  • POST_TELEMETRY_REQUEST;

  • POST_ATTRIBUTES_REQUEST;

  • ACTIVITY_EVENT;

  • INACTIVITY_EVENT.

名称填写 Message Type Switch,然后点击 ADD

image

Save Timeseries 节点

添加 Save TimeSeries 节点,并通过关系类型 Post telemetry 连接到 Message Type Switch 节点。

该节点会将入站消息 payload 中的 TimeSeries 数据存入数据库,并关联到由 Message Originator 标识的设备。

名称填写 Save Time Series

image

Save Server Attributes 节点

添加 Save Attributes 节点,并通过关系类型 Post attributes 连接到 Message Type Switch 节点。

该节点会将入站消息 payload 中的属性写入数据库,并关联到由 Message Originator 标识的实体。

名称填写 Save Server Attributes

image

Create Inactivity alarm 节点

添加 Create alarm 节点,并通过关系类型 Inactivity Event 连接到 Message Type Switch 节点。

该节点会尝试加载 Message Originator 上配置 Alarm Type 的最新 Alarm。若存在未清除的 Alarm,则会更新;否则会新建 Alarm。

  • Enter the Name field as Create Inactivity Alarm and the Alarm type as Inactivity TimeOut.

image

Clear Inactivity alarm 节点

添加 Clear alarm 节点,并通过关系类型 Activity Event 连接到 Message Type Switch 节点。

该节点会加载 Message Originator 上配置 Alarm Type 的最新 Alarm,若存在则清除。

  • Enter the Name field as Clear Inactivity Alarm and the Alarm type as Inactivity TimeOut.

image


至此 Rule chain 配置完成,请保存。



如何验证 Rule Chain 并上报 telemetry

  • 使用 Rest API(Telemetry upload APIs)上报设备 telemetry。
    注意:你需要先从 Temperature device 复制设备访问令牌(如下图)。

image

尝试上报 temperature = 20。上报后约 1 分钟应创建 Alarm:

1
2
3
curl -v -X POST -d '{"temperature":20}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

***你需要将 $ACCESS_TOKEN 替换为真实设备令牌**

image

image


此外,你还可以:

  • 通过添加 alarm widget 配置 Dashboard,以可视化告警;

  • 增加额外的告警处理逻辑,例如发送邮件。

具体操作可参考下方 另请参阅 中前两个链接。



另请参阅

下一步