用例
在本教程中,我们将从教程中实现用例:创建并清除警报:
假设你的设备正在使用DHT22传感器来收集温度读数并将其推送到ThingsBoard。
DHT22传感器适用于-40至80°C的温度读数。如果温度超出范围,我们想生成警报,并在警报创建时发送电子邮件。
在本教程中,我们将ThingsBoard规则引擎配置为:
- 如果温度超出范围,即:低于-40和高于80度,请向用户发送电子邮件。
使用脚本转换节点将当前温度添加到电子邮件正文中,以将当前温度保存在消息Metadata中。
先决条件
我们假设你已完成以下指南并查看了以下文章:
入门指南。
- 规则引擎概述。
-
消息流
在本节中我们将解释本教程中每个节点的用途:
节点A:Transform Script。
- 该节点将用于在消息Metadata中保存当前温度。
- 节点B:To Email。
- 此节点从配置的模板构建实际的电子邮件。
- 节点C:Send Email。
- 该节点实际上将使用系统SMTP设置从入站邮件发送电子邮件。
配置规则链
在本教程中我们使用了创建和清除警报 教程中的规则链。 我们通过添加消息流部分中上文所述的节点,修改了规则链Create & Clear Alarms并将此规则链重命名为Create/Clear Alarm & Send Email。
以下屏幕截图显示了以上规则链的外观:
- Create/Clear Alarm & Send Email:
- Root Rule Chain:
下载附件json文件以用于Create/Clear Alarm & Send Email规则链。
下一节将向你展示如何从头开始修改此规则链。
修改Create/Clear Alarm & Send Email
添加所需的节点
节点A: Transform Script
添加Transform Script节点并将其放置在关联类型为True的Filter Script节点之后然后通过关联Success将其连接到Create Alarm节点。
此节点将使用以下脚本将当前温度从消息数据保存到消息元数据:metadata.temperature = msg.temperature;
return {msg: msg, metadata: metadata, msgType: msgType};
输入名称Add temperature to metadata.
节点B: To Email
- 添加To Email节点并将其连接到关联类型为Created的Create Alarm节点。
此节点不发送实际的电子邮件,它仅从配置的模板构造电子邮件。
因此,你可以使用对消息元数据中存在的任何字段的引用。 - 填写下表中输入的数据字段: | Field | Input Data | | :—- | :—- | | Name | Temperature Email | | From Template | info@testmail.org | | To Template | Your Email | | Subject Template | Device ${deviceType} temperature unacceptable | | Body Template | Device ${deviceName} has unacceptable temperature: ${temperature} |
节点C: Send Email
- 添加Send Email节点并将其连接到关联类型为Success的To Email节点。
该节点实际上将使用系统SMTP设置从入站邮件发送电子邮件。 - 输入名称SendGrid SMTP。
- 如果你无权访问系统管理员帐户,则需要为此节点进行自己的SMTP配置。
- 否则,标记一个字段Use system SMTP settings。
请注意,在Demo Server上已将SendGrid提供程序配置为系统SMTP。
以下部分将说明如何配置这些设置的说明。
配置系统SMTP设置
在本节中,我们向你介绍如何配置系统SMTP设置并尝试发送测试电子邮件:
-在本教程的范围内我们将使用SendGrid作为SMTP提供程序,而Thingsboard将使用该提供程序发送电子邮件。你可以使用此连接]注册进行试用。
登录到SendGrid后,打开SMTP中继配置页。
如果你具有使用系统管理员帐户登录到ThingsBoard的权限,则可以自定义SMTP设置并发送测试电子邮件。
- 对于默认的系统管理员帐户:
- login - sysadmin@thingsboard.org.
- password - sysadmin.
- 转到System Settings -> Outgoing Mail并配置Outgoing Mail Settings如以下屏幕截图所述:
- 确认你配置了SMTP方法是按Send Test Email按钮
如果系统SMTP配置正确:你将看到一条弹出消息,如上面的屏幕快照所示。
系统SMTP设置配置完成。不要忘记按Save按钮。
如果你无法访问系统管理员的帐户,则可以直接在节点中配置SMTP设置,但无法检查电子邮件是否已成功发送。
进行遥测并验证
对于发布设备遥测我们将使用Rest API遥测上传API。为此我们将需要复制设备Thermostat Home的访问令牌。
发布temperature = 180 创建警报
curl -v -X POST -d '{"temperature":180}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
**你需要将$ACCESS_TOKEN替换为实际的设备令牌**
你应该了解,仅在创建警报的情况下,警报更新后才将消息发送到电子邮件。
最后我们可以看到收到的电子邮件具有正确的值。 (如果你没有收到任何电子邮件,请检查你的垃圾邮件文件夹)
此外你可以查看有关如何进行以下操作的更多信息:
- 向设备的客户发送电子邮件。
- 从收到的邮件中向电子邮件正文中添加其他数据。
请参阅另请参阅部分下的第一个链接,以了解如何执行此操作。