用例
假设你的设备正在使用DHT22传感器来收集温度读数并将其推送到ThingsBoard。
DHT22传感器适用于-40至80°C的温度读数。如果温度超出范围,我们想生成警报,并在警报创建时发送电子邮件。
在本教程中,我们将ThingsBoard规则引擎配置为:
-如果温度超出范围,即:低于-40度且高于80度,则向指定设备的客户发送电子邮件。
- 将消息始发者属性添加到消息中。
使用传入消息中的“脚本转换”节点将其他数据添加到电子邮件正文中。
先决条件
我们假设你已完成以下指南并查看了以下文章:
入门指南。
- 规则引擎概述。
- 创建&清除警报。
- 发送警报邮件。
创建客户并分配设备
首先我们需要创建客户并将设备分配给客户。以下屏幕截图显示了如何执行此操作:
我们需要分配设备Thermostat Home(创建和清除警报教程)。
转到客户页面上的Manage devices然后选择我们的设备。
接下来我们的客户应具有server scope属性的email。请注意邮件将发送到该电子邮箱,因此请编写你的电子邮件进行测试。
此外,我们还需要向服务器Thermostat Home添加服务器作用域属性-address :
转到Devices -> Thermostat Home -> Attributes -> Server attributes然后点击 + 按钮添加 address**
消息流
在本节中,我们将说明在本教程中添加或修改到初始规则链的每个节点的用途:
- 节点A: Customer attributes。
- 此节点将用于获取客户的电子邮件属性,并将其保存在消息metadata属性customerEmail中
- 节点B: Originator attributes
- 此节点将用于获取发起者(设备是传入消息的发起者)的地址服务器范围属性,并将其保存在消息Metadata中。
- 节点C:To Emailnode.
- 此节点从配置的模板构建实际的电子邮件。
- 节点D:Rule Chain节点。
- 将传入消息转发到指定的规则链Create/Clear Alarm & Send Email to Customer。
配置规则链
在本教程中,我们使用了发送警报邮件。
我们通过添加以上在消息流部分中描述的节点,修改了规则链Create/Clear Alarm & Send Email并将此规则链重命名为:Create/Clear Alarm & Send Email to Customer。
以下屏幕截图显示了以上规则链的外观:
- Create/Clear Alarm & Send Email to Customer:
- Root Rule Chain:
下载json文件以用于Create/Clear Alarm & Send Email to Customer:规则链。 如上图所示,在根规则链中创建节点D,以将遥测转发到导入的规则链。
以下部分向你展示了如何修改此规则链特别是:添加规则节点A和B并修改节点C。
修改Create & Clear Alarms详情:
修改所需的节点
在此规则链中,你将添加2个节点并修改1个节点,如以下各节所述:
节点A: Customer attributes
- 添加Customer attributes节点并将其连接到关联类型为True的Filter Script节点。
该节点将用于获取客户的email属性并将其保存在 邮件元数据属性customerEmail - 填写下表中输入的数据字段:
| Field | Input Data | | :—- | :—- | | Name | Get Customer Email | | Source attribute | email | | Target attribute | customerEmail |
节点B: Originator attributes
- 添加Originator attributes节点并将其粘贴在节点之间:Customer attributes和Create alarm关系类型为Success。
该节点将用于获取始发者 (Thermostat Home) 的地址服务器范围属性。此属性将保存在消息元数据属性ss_address中。 - 填写下表中输入的数据字段:
| Field | Input Data | | :—- | :—- | | Name | Get Device Address | | Server attributes | address |
节点C: To Email
- 修改To Email节点。为此我们需要更改此节点详细信息中的某些字段:
- To template.
- Body tempalte.
- To template.
- 填写下表中输入的数据字段:
| Field | Input Data | | :—- | :—- | | To template | ${customerEmail} | | Body tempalte | Device ${deviceName} has unacceptable temperature: ${temperature}. Device address - ${ss_address} |
进行遥测并验证
对于发布设备遥测我们将使用Rest API遥测上传API。为此我们将需要复制设备Thermostat Home的访问令牌。
发布temperature = 99. 创建警报:
curl -v -X POST -d '{"temperature":99}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
**你需要将$ACCESS_TOKEN替换为实际的设备令牌**
你应该了解仅在创建警报的情况下,警报更新后才将消息发送到电子邮件。
最后我们可以看到收到的电子邮件具有正确的值。 (如果你没有收到任何电子邮件,请检查你的垃圾邮件文件夹)
此外你可以查看有关如何进行以下操作的更多信息:
- 定义其他用于警报处理的逻辑,例如使用Telegram Bot将通知发送到Telegram App。
- 在Create and Clear Alarm节点中配置Alarm Details功能并通过添加警报部件以可视化警报来配置仪表板。
- 设备离线时创建警报。