用例
让我们假设以下用例:
- 你有2台设备:
- 带有Smoke Detector的Smoke Sensor当数据出现时将数据发送到ThingsBoard。
- Fire Alarm System当有烟雾时提供火灾警报。
- 带有Smoke Detector的Smoke Sensor当数据出现时将数据发送到ThingsBoard。
但是有多种实现此情况的方法,例如,可以使用将传入消息路由到一个或多个输出链的Switch节点来实现。
有关如何使用Switch节点的更多信息请在另请参见部分。
先决条件
在开始本教程之前,你需要阅读以下指南:
- 入门指南。
-
添加设备并创建它们之间的关系
在ThingsBoard中添加两个Device实体:
烟雾探测器表示为设备。它的名称为Smoke Detector类型为 Smoke Sensor。
- 火警系统表示为设备。它的名称是Fire Alarm System类型是Fire Alarm Device。
创建类型的关系用途:
- 从烟雾探测器到火灾报警系统;
以下屏幕截图显示了如何执行此操作:
消息流
在本节中我们将解释本教程中每个节点的用途:
- 节点A:Check Relation。
- 使用关系的类型和方向检查从设备Fire Alarm System到消息Smoke Detector的始发者的关系。
- 节点B:Change originator。
- 将始发者从设备Smoke Detector更改为相关设备Fire Alarm System,提交的消息将作为来自设备“火灾警报系统”的消息进行处理。
- 节点C:Transformation Script.
- 将原始消息转换为RPC请求消息。
- 节点D:RPC call request。
- 获取消息payload,并将其作为响应发送到Fire Alarm System。
- 节点E:Filter Script。
- 检查传入消息的数据是否为smoke。
- 节点F:Clear alarm。
- 加载最新警报该警报具有为消息发起者Smoke Detector配置的警报类型,并清除警报(如果存在)。
- 节点G:Create alarm。
- 尝试为消息发起方加载配置了警报类型的最新警报即Smoke Detector。
- 节点H:Rule Chain。
- 将传入消息转发到指定的规则链Related Fire Alarm System。
配置规则链
在本教程中我们修改了Root Rule Chain并创建了Related Fire Alarm System
以下屏幕截图显示了以上规则链的外观:
- Related Fire Alarm System:
- Root Rule Chain:
下载json文件以获取Root Rule Chain。不要忘了将此规则链标记为root。
另外你需要创建Related Fire Alarm System规则链,也可以下载json文件。
创建新的规则链 (Related Fire Alarm System)
转到Rule Chains -> Add new Rule Chain
配置:
- 名称 : Related Fire Alarm System
添加所需的节点
节点A: Check Relation
- 添加Check Relation节点,并将其连接到Input节点。
该节点将使用关系的类型和方向检查从设备Fire Alarm System到消息Smoke Detector的始发者的关系。 如果存在该关系,则消息将通过True链发送。 - 填写下表中输入的数据字段:
| Field | Input Data | | :—- | :—- | | Name | Check Relation | | Direction | To | | Type | Device | | Device | Fire Alarm System | | Relation type | Uses |
节点B: Change Orignator
- 添加Change Orignator节点并将其连接到关联类型为True的Check Relation节点。
该节点会将始发者从设备Smoke Detector更改为相关的设备Fire Alarm System并且提交的消息将作为来自另一个实体Fire Alarm System的消息进行处理。 - 填写下表中输入的数据字段:
| Field | Input Data | | :—- | :—- | | Name | Change Originator | | Originator source | Related | | Direction | From | | Max relationship level | 1 | | Relation type | Uses | | Entity type | Device |
节点C: Script Transformation
- 添加Script Transformation节点并将其连接到关系类型为Success的更改Change Orignator节点。
该节点会将原始消息转换为RPC请求消息。
-RPC调用将具有2个属性:
<table style="width: 25%">
<thead>
<tr>
<td><b>Property</b></td><td><b>Value</b></td>
</tr>
</thead>
<tbody>
<tr>
<td>method</td>
<td>ON</td>
</tr>
<tr>
<td>params</td>
<td>{}</td>
</tr>
</tbody>
</table>
请添加以下脚本:
var newMsg = {};
if(msg.smoke == 'true'){
newMsg.method = 'ON';
}
newMsg.params={};
return {msg: newMsg, metadata: metadata, msgType: msgType};
输入名称New RPC message。
节点D: RPC call request
- 添加RPC call request节点并将其连接到关系类型为Success的Script Transformation节点
该节点获取消息payload并将其作为响应发送到消息始发者Fire Alarm System。 - 输入名称Fire Alarm System。
- 输入值为60秒。
修改Root Rule Chain
节E: Filter Script
添加Filter Script节点并将其连接到关联类型为Success的Save Timeseries节点。
该节点将使用以下脚本检查传入消息的数据是否为smoke:return msg.smoke== 'true';
输入名称Smoke Alarm Filter。
节点F: Clear Alarm
- 添加Clear Alarm节点并将其连接到关联类型为False的Filter Script节点。
此节点将为消息始发者Smoke Detector加载配置了警报类型的最新警报,并清除警报(如果存在)。 - 输入名称Clear Smoke Alarm和警报类型Smoke Alarm。
节点G: Create alarm
- 添加Create alarm节点,并将其连接到关联类型为True的Filter Script节点。
该节点尝试为消息发起方加载配置了警报类型的最新警报即Smoke Detector。 - 输入名称Create Smoke Alarm和警报类型Smoke Alarm。
节点H: Rule Chain
- 添加Rule Chain节点并将其连接到关联类型为True的Filter Script节点。
该节点将传入消息转发到指定的规则链Related Fire Alarm System。 - 输入名称Related Fire Alarm System。
以下屏幕截图显示了最终的Root Rule Chain应该是什么样子:
如何验证Rule Chain和Post telemetry
使用以下JavaScript代码模拟Fire Alarm System设备。
- FireAlarmEmulator.js.
- 要运行脚本你需要执行以下步骤:
- 复制Fire Alarm System设备访问令牌,然后将其粘贴到脚本中。
你可以从设备页面复制访问令牌。
- FireAlarmEmulator.js.
使用Rest APIs遥测上传APIs从设备Smoke Detector发布遥测。
curl -v -X POST -d '{"smoke":"true"}' http://demo.thingsboard.io/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
**你需要将$ACCESS_TOKEN替换为实际的设备令牌**
另外你可以:
- 通过添加警报部件以可视化警报来配置仪表板。
- 定义用于警报处理的其他逻辑例如发送电子邮件。
请参阅另请参阅部分下的第三和第四链接,以了解如何执行此操作。
另请参阅
- Switch节点指南-有关如何在Thignsboard中使用Switch节点的更多信息。
- 验证传入遥测教程-有关如何操作的更多信息使用脚本过滤器节点来验证传入遥测。
- 创建和清除警报:配置信息中心指南-了解如何添加仪表板的警报部件。
- 发送邮件教程.
- RPC功能指南-有关RPC如何在Thignsboard中工作的更多信息,请参考RPC功能指南。