了解如何配置规则引擎以将电子邮件发送给指定设备的客户。

用例

假设你的设备正在使用DHT22传感器来收集温度读数并将其推送到ThingsBoard。
DHT22传感器适用于-40至80°C的温度读数。如果温度超出范围,我们想生成警报,并在警报创建时发送电子邮件。
在本教程中,我们将ThingsBoard规则引擎配置为:
-如果温度超出范围,即:低于-40度且高于80度,则向指定设备的客户发送电子邮件。

  • 将消息始发者属性添加到消息中。
  • 使用传入消息中的“脚本转换”节点将其他数据添加到电子邮件正文中。

    先决条件

    我们假设你已完成以下指南并查看了以下文章:

  • 入门指南

  • 规则引擎概述
  • 创建&清除警报
  • 发送警报邮件

    创建客户并分配设备

    首先我们需要创建客户并将设备分配给客户。以下屏幕截图显示了如何执行此操作:
    发送电子邮件给客户 - 图1

我们需要分配设备Thermostat Home创建和清除警报教程)。
转到客户页面上的Manage devices然后选择我们的设备。
发送电子邮件给客户 - 图2

发送电子邮件给客户 - 图3

接下来我们的客户应具有server scope属性的email。请注意邮件将发送到该电子邮箱,因此请编写你的电子邮件进行测试。
发送电子邮件给客户 - 图4

此外,我们还需要向服务器Thermostat Home添加服务器作用域属性-address
转到
Devices -> Thermostat Home -> Attributes -> Server attributes然后点击 + 按钮添加 address**
发送电子邮件给客户 - 图5

消息流

在本节中,我们将说明在本教程中添加或修改到初始规则链的每个节点的用途:

  • 节点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:

发送电子邮件给客户 - 图6

  • Root Rule Chain:

发送电子邮件给客户 - 图7

下载json文件以用于Create/Clear Alarm & Send Email to Customer:规则链。 如上图所示,在根规则链中创建节点D,以将遥测转发到导入的规则链。
以下部分向你展示了如何修改此规则链特别是:添加规则节点AB并修改节点C

修改Create & Clear Alarms详情:

修改所需的节点

在此规则链中,你将添加2个节点并修改1个节点,如以下各节所述:

节点A: Customer attributes

  • 添加Customer attributes节点并将其连接到关联类型为TrueFilter Script节点。
    该节点将用于获取客户的email属性并将其保存在 邮件元数据属性customerEmail
  • 填写下表中输入的数据字段:
    | Field | Input Data | | :—- | :—- | | Name | Get Customer Email | | Source attribute | email | | Target attribute | customerEmail |

发送电子邮件给客户 - 图8

节点B: Originator attributes

  • 添加Originator attributes节点并将其粘贴在节点之间:Customer attributesCreate alarm关系类型为Success
    该节点将用于获取始发者 (Thermostat Home) 的地址服务器范围属性。此属性将保存在消息元数据属性ss_address中。
  • 填写下表中输入的数据字段:
    | Field | Input Data | | :—- | :—- | | Name | Get Device Address | | Server attributes | address |

发送电子邮件给客户 - 图9

节点C: To Email

  • 修改To Email节点。为此我们需要更改此节点详细信息中的某些字段:
    • To template.
    • Body tempalte.
  • 填写下表中输入的数据字段:
    | Field | Input Data | | :—- | :—- | | To template | ${customerEmail} | | Body tempalte | Device ${deviceName} has unacceptable temperature: ${temperature}. Device address - ${ss_address} |

发送电子邮件给客户 - 图10

进行遥测并验证

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

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

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

  • 定义其他用于警报处理的逻辑,例如使用Telegram Bot将通知发送到Telegram App。
  • Create and Clear Alarm节点中配置Alarm Details功能并通过添加警报部件以可视化警报来配置仪表板。
  • 设备离线时创建警报。

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

另请参阅