指南

ThingsBoard教程和指南。

检查实体之间的关系

本教程的目的是演示如何可以将Check Relation节点设置为用于检查实体之间的关系。

用例

让我们假设以下用例:

  • 你有2台设备:

    • 带有Smoke DetectorSmoke Sensor当数据出现时将数据发送到ThingsBoard。

    • Fire Alarm System当有烟雾时提供火灾警报。

但是有多种实现此情况的方法,例如,可以使用将传入消息路由到一个或多个输出链的Switch节点来实现。

有关如何使用Switch节点的更多信息请在另请参见部分。

先决条件

在开始本教程之前,你需要阅读以下指南:

添加设备并创建它们之间的关系

在ThingsBoard中添加两个Device实体:

  • 烟雾探测器表示为设备。它的名称为Smoke Detector类型为 Smoke Sensor

  • 火警系统表示为设备。它的名称是Fire Alarm System类型是Fire Alarm Device

创建类型的关系用途:

  • 从烟雾探测器到火灾报警系统;

以下屏幕截图显示了如何执行此操作:

image image
image


消息流

在本节中我们将解释本教程中每个节点的用途:

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

image

  • Root Rule Chain:

image


下载json文件以获取Root Rule Chain。不要忘了将此规则链标记为root


image

另外你需要创建Related Fire Alarm System规则链,也可以下载json文件

下一节将向你展示如何创建它。

转到Rule Chains -> Add new Rule Chain

配置:

  • 名称 : Related Fire Alarm System

image

创建新规则链,按点击Edit按钮并配置链。

添加所需的节点

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

节点A: Check Relation
  • 添加Check Relation节点,并将其连接到Input节点。

    该节点将使用关系的类型和方向检查从设备Fire Alarm System到消息Smoke Detector的始发者的关系。 如果存在该关系,则消息将通过True链发送。

  • 填写下表中输入的数据字段:

FieldInput Data
Name Check Relation
Direction To
Type Device
Device Fire Alarm System
Relation type Uses

image

节点B: Change Orignator
  • 添加Change Orignator节点并将其连接到关联类型为TrueCheck Relation节点。
    该节点会将始发者从设备Smoke Detector更改为相关的设备Fire Alarm System并且提交的消息将作为来自另一个实体Fire Alarm System的消息进行处理。

  • 填写下表中输入的数据字段:

FieldInput Data
Name Change Originator
Originator source Related
Direction From
Max relationship level 1
Relation type Uses
Entity type Device

image

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

image

节点D: RPC call request
  • 添加RPC call request节点并将其连接到关系类型为SuccessScript Transformation节点
    该节点获取消息payload并将其作为响应发送到消息始发者Fire Alarm System
  • 输入名称Fire Alarm System
  • 输入值为60秒。

image

此规则链已准备就绪,我们应该保存它。

修改Root Rule Chain

初始规则链已通过添加以下节点进行了修改:

节E: Filter Script
  • 添加Filter Script节点并将其连接到关联类型为SuccessSave Timeseries节点。
    该节点将使用以下脚本检查传入消息的数据是否为smoke
return msg.smoke== 'true';
  • 输入名称Smoke Alarm Filter

image

节点F: Clear Alarm
  • 添加Clear Alarm节点并将其连接到关联类型为FalseFilter Script节点。
    此节点将为消息始发者Smoke Detector加载配置了警报类型的最新警报,并清除警报(如果存在)。

  • 输入名称Clear Smoke Alarm和警报类型Smoke Alarm

image

节点G: Create alarm
  • 添加Create alarm节点,并将其连接到关联类型为TrueFilter Script节点。
    该节点尝试为消息发起方加载配置了警报类型的最新警报即Smoke Detector

  • 输入名称Create Smoke Alarm和警报类型Smoke Alarm

image

节点H: Rule Chain
  • 添加Rule Chain节点并将其连接到关联类型为TrueFilter Script节点。
    该节点将传入消息转发到指定的规则链Related Fire Alarm System

  • 输入名称Related Fire Alarm System

image

以下屏幕截图显示了最终的Root Rule Chain应该是什么样子:

image



如何验证Rule Chain和Post telemetry

  • 使用以下JavaScript代码模拟Fire Alarm System设备。

    • FireAlarmEmulator.js.

    • 要运行脚本你需要执行以下步骤:

    • 复制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替换为实际的设备令牌**


imageimage


另外你可以:

  • 通过添加警报部件以可视化警报来配置仪表板。

  • 定义用于警报处理的其他逻辑例如发送电子邮件。

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


另请参阅

下一步

  • 入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。

  • 安装指南 - 了解如何在各种操作系统上安装ThingsBoard。

  • 设备连接 - 了解如何根据您的连接方式或解决方案连接设备。

  • 数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。

  • 数据分析 - 了解如何使用规则引擎执行基本的分析任务。

  • 硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。

  • 高级功能 - 了解高级ThingsBoard功能。

  • 开发指南 - 了解ThingsBoard中的贡献和开发。