假设我们有一台使用温度传感器来收集和读取ThingsBoard中的温度读数的设备。
另外,我们假设当最后五分钟的温度读数和最新的温度读数之间的差值超过5度时需要生成警报。
请注意这只是一个简单的理论用例,用于演示平台的功能。你可以将本教程用作更复杂场景的基础。
我们假设你已完成以下指南并查看了以下文章:
在ThingsBoard中添加设备实体。它的名称是Thermometer类型是temperature sensor。
在本节中我们将解释本教程中每个节点的用途。将涉及两个规则链:
Root rule chain - 实际上将遥测从设备保存到数据库中,并将消息重定向到Temperature delta validation链
Temperature delta validation - 规则链,实际计算最后五分钟的温度与最新的温度读数之间的增量。
结果如果增量值超过5度,将创建/更新警报,否则将清除警报。
以下屏幕截图显示了以上规则链的外观:
下载json文件以获取Temperature delta validation。
如上图所示在根规则链中创建节点G以将遥测转发到导入的规则链。
下一节将向你展示如何从头开始创建此规则链。
转到Rule Chains -> Add new Rule Chain
配置:
创建新规则链。按Edit按钮并配置链。
在此规则链中你将创建6个节点如以下各节所述:
添加Originator telemetry节点并将其连接到关联类型为Success的Input节点。
此规则节点将所选消息发起者的遥测信息添加到所选时间范围内的消息元数据中。
规则节点具有三种获取模式:
FIRST: 从最接近时间范围开始处的数据库中检索遥测
LAST: 从最接近时间范围末尾的数据库中检索遥测
ALL: 从数据库中检索指定时间范围内的所有遥测。
使用模式:LAST其时间范围为24小时前到5分钟。
发起方遥测节点还支持从特定时间范围获取所有遥测的功能。
我们不会在本教程中使用此功能但是如果你需要根据特定时间范围内的遥测变化来计算特定键的方差或预测遥测的进一步变化该功能可能会很有用。
在这种情况下你需要选择提取模式ALL。它将强制规则节点从指定的时间范围获取所有遥测并将其作为数组添加到消息元数据中。
该数组将包含带有时间戳和值的JSON对象。
{
"temperature": "[{\"ts\":1540892498884,\"value\":22.4},{\"ts\":1540892528847,\"value\":20.45},{\"ts\":1540892558845,\"value\":22.3}]"
}
var temperatureArray = JSON.parse(metadata.temperature);
{
"temperatureArray": [{
"ts": 1540892498884,
"value": 22.4
}, {
"ts": 1540892528847,
"value": 20.45
}, {
"ts": 1540892558845,
"value": 22.3
}]
}
该节点将使用以下脚本计算从消息payload读取的温度与从消息metadata读取的五分钟旧温度之间的增量:
var newMsg = {};
newMsg.deltaTemperature = parseFloat(Math.abs(msg.temperature - JSON.parse(metadata.temperature)).toFixed(2));
return {msg: newMsg, metadata: metadata, msgType: msgType};
添加Save TimeSeries节点,并将其连接到关系类型为Success的Script Transformation节点。 该节点会将TimeSeries数据从传入的消息payload中保存到数据库中,并将其链接到被标识为Message Originator的设备。
在名称字段中输入Save Time Series。
return msg.deltaTemperature > 5;
添加Create alarm节点并将其连接到关联类型为True的Filter Script节点。
如果发布的增量温度不在预期范围内(过滤器脚本节点返回True)则此节点将加载最新消息,该消息具有配置为Message Originator的警报类型的最新警报,即Thermometer
。
在名称字段中输入Create alarm并警报类型中输入General Alarm。
添加Clear Alarm节点并将其连接到关联类型为False的Filter Script节点。
此节点将为消息始发者Thermometer
加载配置了警报类型的最新警报,并在发布的温度增量在预期范围内的情况下清除警报(如果存在)(脚本节点返回False)。
在名称字段中输入Clear Alarm并警报类型中输入General Alarm.
初始根规则链已通过添加以下节点进行了修改:
添加Rule Chain节点并将其连接到关系类型为Success“成功”**的Save Timeseries节点。
该节点将传入消息转发到指定的规则链Temperature delta validation**。
选择Rule Chain字段:Temperature delta validation。
以下屏幕截图显示了最终的Root Rule Chain应该是什么样子:
对于发布设备遥测我们将使用Rest API遥测上传API。为此我们将需要从设备Thermometer中复制设备访问令牌。
**你需要将$ACCESS_TOKEN替换为实际的设备令牌**
为了验证规则链是否按预期工作,我们需要对同一设备两次遥测两次,间隔不小于5分钟且不超过24小时。
另外,让我们在Create Alarm节点中按下调试模式按钮,以验证是否在第二次遥测请求之后创建警报。
发布temperature = 20
curl -v -X POST -d '{"temperature":20}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
延迟5分钟后,让我们发送例如温度 = 26
curl -v -X POST -d '{"temperature":26}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
应创建警报:
另外你可以:
在创建和清除警报节点中配置警报详细信息功能。
通过添加警报部件以可视化警报来配置仪表板。
定义用于警报处理的其他逻辑,例如,发送电子邮件。
请参阅另请参阅分下第二到第四的链接,以了解如何执行此操作。
验证传入遥测 教程 - 有关如何使用脚本过滤器节点验证传入遥测的更多信息。
创建和清除警报:警报详细信息: 指南-了解如何在警报节点中配置“警报详细信息”功能。
创建和清除警报:配置信息中心 指南-了解如何添加仪表板的警报小部件。
发送电子邮件教程。
入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。
安装指南 - 了解如何在各种操作系统上安装ThingsBoard。
设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
数据分析 - 了解如何使用规则引擎执行基本的分析任务。
硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
高级功能 - 了解高级ThingsBoard功能。
开发指南 - 了解ThingsBoard中的贡献和开发。