What is ThingsBoard Rule Engine?

规则引擎是一个简单易用的框架,基于工作流,使用该框架来创建事件。规则引擎包含以下三个组件

  • 消息- 任何传入事件。可以指设备传入的数据,设备生命周期事件,REST API事件,RPC请求等。
  • 规则节点 - 在传入消息上执行的函数。不同的节点类型可以对传入消息进行筛选、转换或执行某些操作。
  • 规则链 - 因为节点可以根据各自之间的关联相互连接,所以可以将规则节点的出站消息发送到下一个连接的规则节点。

经典实用案例 TB规则引擎是处理复杂事件的高度可定制的框架,下面介绍了几个可使用规则链配置的典型案例:

  • 数据存入数据库之前可对传入的遥测数据或属性进行数据验证及修改;
  • 将遥测数据或属性从设备复制到相关的资产,以便数据聚集。例如,来自多个设备的数据可以聚合到相关资产中;
  • 根据已定义的条件创建、更新或清除警报;
  • 加载处理所需的附加数据。例如加载定义在设备租户或租户属性中的设备;
  • 触发对外部系统的REST API调用;
  • 当复杂事件发生时发送电子邮件,并在邮件模板中使用另一个实体的属性;
  • 在事件处理期间考虑用户首选项;
  • 基于已定义的条件进行RPC调用;
  • 与Kafka、Spark、AWS服务等外部管道集成。

假设设备使用DHT22传感器收集并推送温度数据到TB。DHT22可测量的温度范围值为-40°C 到 +80°C。 在本教程中,我们将配置TB规则引擎来存储DHT22可测量的温度范围内的的所有温度值,并将所有其他读数记录到系统日志中。

添加温度验证节点 点击进入规则链模块,打开根规则链。

将“脚本”过滤器规则节点拖拽至根实体主页面并松开,节点配置窗口打开。我们将使用如下脚本进行数据验证

return typeof msg.temperature === 'undefined' 
        || (msg.temperature >= -40 && msg.temperature <= 80);

如果温度属性没有定义或者温度值有效——脚本将返回True,否则返回False。如果脚本返回True,传入消息将被路由到与真实关系相关的下一个节点。 我们希望所有的遥测请求都通过这个验证脚本。我们需要移除消息类型转换节点之间存在的的Post Telemetry关系,保存遥测节点:

使用Post Telemetry关系连接消息类型转换节点与脚本过滤器节点:

接下来我们使用True关系连接脚本过滤器节点与Save Telemetry节点将所有有效遥测数据保存到系统中:

同样的我们需要使用False关系连接脚本过滤器节点与Log Other节点来将所有无效遥测数据记录到系统日志中:

点击保存按钮应用所有修改。

验证结果 为了操作这一步骤,我们需要创建设备并将遥测数据提交到TB。所以我们现在打开设备模块来创建新设备

我们将使用Rest API来发布遥测数据。因此,我们需要从设备Thermostat Home拷贝设备访问token。

我们以发布温度=99为例。我们发现遥测数据未被添加到设备最新遥测模块

curl -v -X POST -d '{"temperature":99}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

我们需要使用真实的设备token替换$ACCESS_TOKEN

我们再发布温度=24,这次我们发现遥测数据被成功保存。

curl -v -X POST -d '{"temperature":24}' http://localhost:8080/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

results matching ""

    No results matching ""