本教程的目的是演示如何可以将Check Relation节点设置为用于检查实体之间的关系。
让我们假设以下用例:
你有2台设备:
带有Smoke Detector的Smoke Sensor当数据出现时将数据发送到ThingsBoard。
Fire Alarm System当有烟雾时提供火灾警报。
但是有多种实现此情况的方法,例如,可以使用将传入消息路由到一个或多个输出链的Switch节点来实现。
有关如何使用Switch节点的更多信息请在另请参见部分。
在开始本教程之前,你需要阅读以下指南:
在ThingsBoard中添加两个Device实体:
烟雾探测器表示为设备。它的名称为Smoke Detector类型为 Smoke Sensor。
火警系统表示为设备。它的名称是Fire Alarm System类型是Fire Alarm Device。
创建类型的关系用途:
以下屏幕截图显示了如何执行此操作:
在本节中我们将解释本教程中每个节点的用途:
在本教程中我们修改了Root Rule Chain并创建了Related Fire Alarm System
以下屏幕截图显示了以上规则链的外观:
下载json文件以获取Root Rule Chain。不要忘了将此规则链标记为root。
另外你需要创建Related Fire Alarm System规则链,也可以下载json文件。
下一节将向你展示如何创建它。
转到Rule Chains -> Add new Rule Chain
配置:
创建新规则链,按点击Edit按钮并配置链。
在此规则链中你将创建4个节点如以下各节所述:
添加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 |
添加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 |
该节点会将原始消息转换为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};
此规则链已准备就绪,我们应该保存它。
初始规则链已通过添加以下节点进行了修改:
return msg.smoke== 'true';
添加Clear Alarm节点并将其连接到关联类型为False的Filter Script节点。
此节点将为消息始发者Smoke Detector加载配置了警报类型的最新警报,并清除警报(如果存在)。
输入名称Clear Smoke Alarm和警报类型Smoke Alarm。
添加Create alarm节点,并将其连接到关联类型为True的Filter Script节点。
该节点尝试为消息发起方加载配置了警报类型的最新警报即Smoke Detector。
输入名称Create Smoke Alarm和警报类型Smoke Alarm。
添加Rule Chain节点并将其连接到关联类型为True的Filter Script节点。
该节点将传入消息转发到指定的规则链Related Fire Alarm System。
输入名称Related Fire Alarm System。
以下屏幕截图显示了最终的Root Rule Chain应该是什么样子:
使用以下JavaScript代码模拟Fire Alarm System设备。
要运行脚本你需要执行以下步骤:
复制Fire Alarm System设备访问令牌,然后将其粘贴到脚本中。
你可以从设备页面复制访问令牌。
使用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功能指南。
入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。
安装指南 - 了解如何在各种操作系统上安装ThingsBoard。
设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
数据分析 - 了解如何使用规则引擎执行基本的分析任务。
硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
高级功能 - 了解高级ThingsBoard功能。
开发指南 - 了解ThingsBoard中的贡献和开发。