了解如何配置规则引擎以在创建新警报时发送电子邮件。

用例

在本教程中,我们将从教程中实现用例:创建并清除警报
假设你的设备正在使用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:

发送警报电子邮件 - 图1

  • Root Rule Chain:

发送警报电子邮件 - 图2

下载附件json文件以用于Create/Clear Alarm & Send Email规则链。
下一节将向你展示如何从头开始修改此规则链。

修改Create/Clear Alarm & Send Email

添加所需的节点

在此规则链中你将创建3个节点如以下各节所述:

节点A: Transform Script

  • 添加Transform Script节点并将其放置在关联类型为TrueFilter Script节点之后然后通过关联Success将其连接到Create Alarm节点。
    此节点将使用以下脚本将当前温度从消息数据保存到消息元数据:

    1. metadata.temperature = msg.temperature;
    2. return {msg: msg, metadata: metadata, msgType: msgType};
  • 输入名称Add temperature to metadata.

发送警报电子邮件 - 图3

节点B: To Email

  • 添加To Email节点并将其连接到关联类型为CreatedCreate 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} |

发送警报电子邮件 - 图4

节点C: Send Email

  • 添加Send Email节点并将其连接到关联类型为SuccessTo Email节点。
    该节点实际上将使用系统SMTP设置从入站邮件发送电子邮件。
  • 输入名称SendGrid SMTP
  • 如果你无权访问系统管理员帐户,则需要为此节点进行自己的SMTP配置。
  • 否则,标记一个字段Use system SMTP settings

请注意,在Demo Server上已将SendGrid提供程序配置为系统SMTP。
以下部分将说明如何配置这些设置的说明。

发送警报电子邮件 - 图5

链配置已完成,我们需要保存它。

配置系统SMTP设置

在本节中,我们向你介绍如何配置系统SMTP设置并尝试发送测试电子邮件:
-在本教程的范围内我们将使用SendGrid作为SMTP提供程序,而Thingsboard将使用该提供程序发送电子邮件。你可以使用此连接]注册进行试用。
登录到SendGrid后,打开SMTP中继配置页
发送警报电子邮件 - 图6
如果你具有使用系统管理员帐户登录到ThingsBoard的权限,则可以自定义SMTP设置并发送测试电子邮件。

  • 对于默认的系统管理员帐户:
    • login - sysadmin@thingsboard.org.
    • password - sysadmin.
  • 转到System Settings -> Outgoing Mail并配置Outgoing Mail Settings如以下屏幕截图所述:

发送警报电子邮件 - 图7

  • 确认你配置了SMTP方法是按Send Test Email按钮

如果系统SMTP配置正确:你将看到一条弹出消息,如上面的屏幕快照所示。
系统SMTP设置配置完成。不要忘记按Save按钮。
如果你无法访问系统管理员的帐户,则可以直接在节点中配置SMTP设置,但无法检查电子邮件是否已成功发送。

进行遥测并验证

对于发布设备遥测我们将使用Rest API遥测上传API。为此我们将需要复制设备Thermostat Home的访问令牌。
发送警报电子邮件 - 图8
发布temperature = 180 创建警报

  1. curl -v -X POST -d '{"temperature":180}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
  2. **你需要将$ACCESS_TOKEN替换为实际的设备令牌**

你应该了解,仅在创建警报的情况下,警报更新后才将消息发送到电子邮件。
最后我们可以看到收到的电子邮件具有正确的值。 (如果你没有收到任何电子邮件,请检查你的垃圾邮件文件夹)
发送警报电子邮件 - 图9
此外你可以查看有关如何进行以下操作的更多信息:

  • 向设备的客户发送电子邮件。
  • 从收到的邮件中向电子邮件正文中添加其他数据。

请参阅另请参阅部分下的第一个链接,以了解如何执行此操作。

另请参阅*