用例
我们假设设备使用DHT22传感器收集温度值并将温度值发送到TB。有时候服务器房间的温度值太高。所以如果温度大于60°C的时候我们需要给客户发送邮件 在本教程中我们需要配置规则引擎来:
- 在温度大于60°C时像设备客户发送邮件;
- 添加消息发起者属性;
- 在邮件内容中添加传入消息的额外数据;
先决条件
操作之前请确保您已经查阅以下文档:
- 入门指南。
- 规则引擎概述。
步骤1:添加温度阈值检查字段
下图未原始根规则链。请注意我们已经删除了根规则链中的不相关规则节点。
我们需要修改默认规则链并添加带有温度阈值检查脚本的脚本过滤节点。如果温度大于60°C,脚本返回True,否则返回False
return msg.temperature > 60;
应该使用Success关系连接脚本节点与保存时间序列节点。设备遥测值保存到数据库以后,原始消息将被发送到脚本节点。
步骤2 查找客户邮件
如果发布的温度高(脚本节点返回True),我们需要创建“向设备客户发送邮件”规则,因此我们需要查找到客户邮件。我们需要添加客户属性富集节点。配置该节点,获取客户邮箱属性并将邮箱属性customerEmail保存到消息元数据中 ![](/assets/4g.png)
使用True关系连接客户属性节点与脚本节点
步骤3:查找设备地址
我们需要在邮件内容中添加设备地址。地址属性是设备的服务器范围内的属性。 我们需要添加发起者属性富集节点,配置该节点,获取发起者地址服务器范围属性(设备是传入消息的发起者),将该属性ss_address保存到消息元数据中。 使用Success关系连接发起者属性节点和客户属性节点
步骤4:将消息负载添加到消息元数据中
所有电子邮件节点都使用消息元数据中定义的属性,因而无法直接访问消息有效负载。如果我们想将消息有效负载中的信息添加到邮件中,我们必须将该信息先添加到消息元数据中。我们需要将当前温度值添加到邮件内容中,所以我们使用脚本转换节点将当前温度保存到消息元数据中。
metadata.temperature = msg.temperature
return {msg: msg, metadata: metadata, msgType: msgType};
使用success关系连接脚本转换节点与客户属性节点 Step 5: Build Email Message
image
步骤5:创建邮件消息
现在我们可以定义邮件模板了。我们需要使用To email节点将配置的模板创建成真正的邮件。 配置节点
- 从邮件---我们使用的是静态邮件[email protected].请将该邮件改成与你公司相关的邮件;
- 到模板---${customerEmail} : 节点将从消息元数据中获取属性值;
- 主题模板---Device ${deviceType} temperature high :deviceType 属性存储在所有设备消息的消息元数据中;
- 内容模板---Device ${deviceName} has high temperature ${temperature}. 设备地址属性为${ss_address}.。在步骤4中保存temprature字段,在步骤3中保存ss_address 字段。
使用success关系连接To email节点和脚本转换节点
注意1 -您可以使用消息元数据中存在的任何字段的引用 注意2 -此节点不发送实际的电子邮件。仅从已配置的模板构建电子邮件。
步骤5:添加发送消息节点
最够一个配置步骤为添加消息发送节点,该节点可以从入站消息发送真正的邮件。在节点配置中,我们不会选择使用system SMTP设置选项,我们为该节点创建自己的SMTP配置。 在本教程中,我们将使用SendGrid作为SMTPprovider,Thingsboard将使用此provider发送电子邮件。 你可以使用这个链接注册并试用。 登录到SendGrid,打开SMTPrelay配置页面。
下图表示如何针对SendGrid配置发送邮件节点
使用success关系连接邮件节点和To email节点 规则链配置完成,请点击保存
步骤6:验证结果
创建设备并将设备分配给客户 我们需要创建设备恒温器服务器房间: 添加设备服务器范围属性--地址:
为设备创建客户 为设备添加服务器范围属性--邮件。请注意,该邮件为接收信息的邮件,所以可以写下你的邮件作为测试邮件
现在,将恒温器分配给客户。到客户页面管理设备并选择我们的设备
发送遥测并验证
我们使用Rest API发送设备遥测数据。我们需要从设备恒温器服务器房间扶着设备访问Token
请替换$ACCESS_TOKEN为真正的设备token 我们发送温度为99度。需要创建警报
curl -v -X POST -d '{"temperature":99}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
最后,我们检查邮件,发件我们收到的邮件值准确。(如果未收到邮件,请检查垃圾邮件收件箱)
TL;DR
从本教程下载并导入带有规则链的附加规则链json文件。不要忘记将新规则链标记为“root”