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

在保存到数据库之前,对传入遥测或属性进行数据验证和修改。

添加规则链 命名为数据验证和修改
image.png
温度转换节点脚本 [假设上传温度是215需要转换成21.5]

  1. msg.temperature = msg.temperature / 10;
  2. return {msg: msg, metadata: metadata, msgType: msgType};

温度验证筛选

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

调试

  1. 添加设备配置,命名为温度传感器配置,应用之前创建的规则链(图1)
  2. 添加新设备,命名为温度传感器1,设备配置选择之前创建的温度传感器配置(图2)
  3. 拷贝访问令牌,作为username,使用MQTTBox发送测试遥测数据{"temperature":125}到主题v1/devices/me/telemetry(图3)可以看到设备最新遥测数据中出现12.5(图4)

image.pngimage.pngimage.pngimage.png

  1. 发送测试遥测数据{"temperature":900}最新遥测数据没有出现90,被筛选节点过滤掉了
  2. 调试过程中打开相关节点的调试功能(图1),发送遥测数据后,会在事件中看到调试信息(图2)[规则链调试结束后可以使用左下角的debug按钮清除所有节点的调试功能(图3)]

image.pngimage.pngimage.png

根据定义的条件创建/更新/清除警报。

主要用到规则链的过滤节点类型中的交换节点
image.png
交换节点js [返回三个输出链 ‘create’,’update’,’clear’。警告级别 <0 危险 <10 警告 >10 清除]

  1. if(msg.temperature < 0){
  2. return ["create"];
  3. }
  4. if(msg.temperature >= 0 && msg.temperature < 10){
  5. return ["update"];
  6. }
  7. if(msg.temperature >= 10){
  8. return ["clear"];
  9. }
  10. return [];

规则链配置到设备配置文件后,调试

  1. 向topic v1/devices/me/telemetry 发送 {"temperature":-9},调试信息(图1),设备警告信息危险(图2)
  2. 向topic v1/devices/me/telemetry 发送 {"temperature":8} ,调试信息(图3),设备警告信息变为警告(图4)
  3. 向topic v1/devices/me/telemetry 发送 {"temperature":12},调试信息(图5),设备警告信息状态变为消除未确认(图6)

image.pngimage.png
image.pngimage.png
image.pngimage.png

根据设备生命周期事件触发操作。例如,如果设备处于在线/离线状态,则创建警报。

主要用到规则链的过滤节点类型中的消息类型切换节点Disconnect EventConnect Event
image.png
使用MQTTBox测试设备上下线
image.png
在设备警告页查看结果
image.png

加载处理所需的其他数据。例如,在“设备的客户”或“租户”属性中定义的设备的负载温度阈值。

添加一个客户为其分配设备温度传感器1,并为此客户添加俩个服务端属性 高温阈值 highTemperatureThreshold 40 低温阈值 lowTemperatureThreshold 0
image.pngimage.png
新建规则链并应用到温度传感器1的设备配置上
image.pngimage.png
过滤温度节点脚本

  1. return msg.temperature > metadata.low &&
  2. msg.temperature < metadata.high;

调试 向v1/devices/me/telemetry 发送 {"temperature":12} 查看节点调试情况
image.pngimage.png
设备最新遥测数据处显示,再发送 {"temperature":50}则被过滤温度节点过滤不显示。
image.png

触发对外部系统的REST API调用。

规则链使用外部节点中的image.png

根据定义的条件进行RPC调用。

假设规则链功能为 温度低于18度->打开空调并设置目标温度23度;23~25关闭空调;高于30度打开空调并设置温度为18度.
image.png
构建rpc消息脚本内容

  1. var newMsg = {}
  2. var params = {}
  3. if(msg.temperature < 18){
  4. newMsg.method = "on";
  5. params.value = "23";
  6. }
  7. if(msg.temperature >= 23 && msg.temperature < 25){
  8. newMsg.method = "off";
  9. }
  10. if(msg.temperature > 30){
  11. newMsg.method = "on";
  12. params.value = "18";
  13. }
  14. newMsg.params = params;
  15. return {msg: newMsg, metadata: metadata, msgType: msgType};

应用到设备配置后调试,设备订阅v1/devices/me/rpc/request/+ 结果如下

image.png

与外部管道(如Kafka,Spark,AWS服务等)集成。

使用外部节点即可将消息流转到其他地方
image.png
点赞按钮.gif