本教程将向你展示如何使用RuleEngine在设备离线一段时间后创建警报。
让我们假设以下用例:
你已将一个设备连接至ThingsBoard,并且该设备具有一个温度传感器以收集并推送遥测数据。
由于任何类型的故障,温度传感器可能会停止推送遥测数据。
因此在这种情况下你需要将ThingsBoard Rule Engine配置为:
如果设备在一段时间内保持非活动状态则创建警报。可以通过以下两种方式之一来定义此时间段:
第一种方法:通过更改非活动超时的全局配置参数。
此参数在thingsboard.yml(state.defaultInactivityTimeoutInSec)中定义默认情况下设置为10秒。
第二种方式:通过设置服务器端属性inactivityTimeout(毫秒为单位)来覆盖特定设备的此参数。
以下各节将介绍这种方式。
如果设备处于活动状态清除警报。
ThingsBoard设备状态服务负责监视设备连接状态并触发推送到规则引擎的设备连接事件。
ThingsBoard支持四种类型的事件:
事件类型 | 描述 |
连接(Connect) | 在设备连接到ThingsBoard时触发。 |
断开(Disconnect) | 当设备与ThingsBoard断开连接时触发。 |
活动(Activity) | 在设备推动遥测,属性更新或RPC命令时触发。 |
不活(Inactivity) | 在设备在一段时间内处于非活动状态时触发。 |
本教程将详细说明设备不活动事件,并将向你展示如何:
使用规则引擎创建不活动警报。
为非活动超时配置参数。
转到Devices -> Temperature device -> Attributes -> Server attributes 点击 Add 按钮;
例如将inactivityTimeout属性设置为等于60000毫秒的值。
以下屏幕截图显示了初始Root Rule Chain。请注意不相关的规则节点已从Root Rule Chain链中删除。
通过添加以下两个操作节点来修改默认规则链:
Create alarm节点:以关系类型Inactivity Event连接到Message Type Switch节点;
Clear alarm节点:连接到Message Type Switch节点,其关系类型为Activity Event。
以下屏幕截图显示了最终规则链的外观:
下载上述规则链json文件并将其导入。
不要忘记将新规则链标记为”root”。
另外你可以从头开始创建新的规则链。下一节将向你展示如何创建它。
转到Rule Chains -> Add new Rule Chain
输入名称Tutorial of Inactivity Event 点击 ADD 按钮。
创建新的规则链。不要忘记将其标记为“root”。
在本教程中你将创建5个节点如以下各节所述:
添加Message Type Switch节点并将其连接到Input节点。
该节点将根据消息类型路由传入的消息,即:
POST_TELEMETRY_REQUEST;
POST_ATTRIBUTES_REQUEST;
ACTIVITY_EVENT;
INACTIVITY_EVENT.
输入名称Message Type Switch点击ADD按钮。
添加Save TimeSeries节点并将其连接到Message Type Switch节点其关系类型为Post telemetry。
该节点会将来自传入消息payload的TimeSeries数据存储到数据库中,并将其链接到消息发起方标识的设备。
输入名称Save Time Series。
添加Save Attributes节点并将其连接到关系类型为Post attributes的Message Type Switch节点。
该节点会将来自传入消息payload的属性存储到数据库中,并将它们链接到消息发起者标识的实体。
输入名称Save Server Attributes。
添加Create alarm节点,并将其连接到关系类型为Inactivity Event的Message Type Switch节点。
该节点尝试使用为消息发起者配置的警报类型加载最新的警报。如果存在未清除的警报则将更新此警报否则将创建一个新的警报。
添加Clear alarm节点并将其连接到关系类型为Activity Event的Message Type Switch节点。
该节点使用消息始发者配置的警报类型加载最新的警报并清除警报(如果存在)。
现在此规则链已准备就绪你需要保存它。
发布temperature = 20应该在遥测发布一分钟后创建警报:
curl -v -X POST -d '{"temperature":20}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
***你需要将$ACCESS_TOKEN替换为实际的设备令牌**
另外你可以:
通过添加警报部件以可视化警报来配置仪表板。
定义用于警报处理的其他逻辑,例如发送电子邮件。
请参阅另请参阅部分下的前两个链接,以了解如何执行此操作。
创建和清除警报:配置信息中心 指南-了解如何添加仪表板的警报小部件。
发送邮件。
入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。
安装指南 - 了解如何在各种操作系统上安装ThingsBoard。
设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
数据分析 - 了解如何使用规则引擎执行基本的分析任务。
硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
高级功能 - 了解高级ThingsBoard功能。
开发指南 - 了解ThingsBoard中的贡献和开发。