什么是规则引擎


规则引擎是一个易用的框架,用于构建基于事件驱动的工作流。有3个主要组成部分:

  • Message - 任何传入的事件。它可以是来自设备、设备生命周期事件、REST API事件、RPC请求等的传入数据。
  • Rule Node - 对传入消息执行的函数。有许多不同的节点类型可以过滤、转换或对传入消息执行某些操作。
  • Rule Chain - 节点之间通过关系相互连接,因此规则节点的出站消息被发送到下一个连接的规则节点。

典型用例


ThingsBoard 规则引擎是一个高度可定制的框架,用于复杂的事件处理。下面是一些常见的用例,可以通过 ThingsBoard 规则链进行配置:

  • 在保存到数据库之前,对传入的遥测或属性进行数据校验和修改。
  • 将设备的遥测数据或属性值复制到相关资产中,以便聚合遥测数据。例如,来自多个设备的数据可以聚合到相关资产中。
  • 根据定义的条件来创建/更新/清楚警报。
  • 基于设备的生命周期时间来出发动作。举个例子,当设备上线或离线是创建警报。
  • 为处理进程加载其他的数据。举个例子,为设备加载定义在用户或租户属性中温度阈值。
  • 触发对外部系统的REST API调用。
  • 当复杂事件发生时发送电子邮件,并在电子邮件模板中使用其他实体的属性。
  • 在事件处理期间考虑用户的偏好设置。
  • 根据定义的条件实现RPC调用。
  • 与Kafka、Spark、AWS服务等外部管道集成。

Hello-World-Example


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

添加温度验证节点

在 Thingsboard 用户界面进入 Rule Chains 部分,打开 Root Rule Chain
入门 - 图1

Script Filter 规则节点拖放到链路上。会弹出节点配置窗口。我们将使用这个脚本进行数据验证:

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

入门 - 图2

如果没有定义温度属性或温度有效—脚本将返回 True ,否则将返回 False 。如果脚本返回 True ,则传入消息将路由到与 True 关系连接的下一个节点。
现在,我们希望这个脚本验证所有 telemetry requests。我们需要删除现有的 Message Type Switch 节点与 Save Telemetry 节点之间的 Post Telemetry 关系:

入门 - 图3

Post Telemetry 关系将 Message Type Switch 节点与 Script Filter 节点连接起来:

入门 - 图4
入门 - 图5

接下来,我们需要使用 True 关系将 Script Filter 节点与 Save Telemetry 节点连接起来。因此,所有有效的遥测将被保存:

入门 - 图6

另外,我们还可以使用 False 关系将 Script Filter 节点连接到 Log Other 节点。这样所有无效的遥测数据都将被记录在系统日志中:

入门 - 图7

按Save按钮应用更改。

校验结果

为了验证结果,我们需要创建设备并将遥测提交到Thingsboard。进入设备部分,创建新设备:

入门 - 图8

我们会使用 Rest API来实现设备遥测数据的发送。首先,我们需要从设备 Thermostat Home 中复制设备访问令牌。

入门 - 图9

将发送的温度设为99℃。我们看到遥测数据没有出现在设备最新的遥测部分。

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

** 你需要将$ACCESS_TOKEN替换成当前设备的令牌
_
入门 - 图10

发送temperature = 24可以看见遥测数据保存成功

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

入门 - 图11

相关文档


您可以使用以下链接来了解有关Thingsboard Rule Engine的更多信息:


下一步