官网介绍
ThingsBoard规则引擎是用于复杂事件处理的高度可定制的框架。以下是一些可以通过ThingsBoard规则链配置的常见用例:
在保存到数据库之前,对传入遥测或属性进行数据验证和修改。
添加规则链 命名为数据验证和修改
温度转换节点脚本 [假设上传温度是215需要转换成21.5]
msg.temperature = msg.temperature / 10;return {msg: msg, metadata: metadata, msgType: msgType};
温度验证筛选
return typeof msg.temperature === 'undefined'|| (msg.temperature >= -40 && msg.temperature <= 80);
调试
- 添加设备配置,命名为
温度传感器配置,应用之前创建的规则链(图1) - 添加新设备,命名为
温度传感器1,设备配置选择之前创建的温度传感器配置(图2) - 拷贝访问令牌,作为username,使用MQTTBox发送测试遥测数据
{"temperature":125}到主题v1/devices/me/telemetry(图3)可以看到设备最新遥测数据中出现12.5(图4)




- 发送测试遥测数据
{"temperature":900}最新遥测数据没有出现90,被筛选节点过滤掉了 - 调试过程中打开相关节点的调试功能(图1),发送遥测数据后,会在事件中看到调试信息(图2)[规则链调试结束后可以使用左下角的debug按钮清除所有节点的调试功能(图3)]
根据定义的条件创建/更新/清除警报。
主要用到规则链的过滤节点类型中的交换节点
交换节点js [返回三个输出链 ‘create’,’update’,’clear’。警告级别 <0 危险 <10 警告 >10 清除]
if(msg.temperature < 0){return ["create"];}if(msg.temperature >= 0 && msg.temperature < 10){return ["update"];}if(msg.temperature >= 10){return ["clear"];}return [];
规则链配置到设备配置文件后,调试
- 向topic
v1/devices/me/telemetry发送{"temperature":-9},调试信息(图1),设备警告信息危险(图2) - 向topic
v1/devices/me/telemetry发送{"temperature":8},调试信息(图3),设备警告信息变为警告(图4) - 向topic
v1/devices/me/telemetry发送{"temperature":12},调试信息(图5),设备警告信息状态变为消除未确认(图6)
根据设备生命周期事件触发操作。例如,如果设备处于在线/离线状态,则创建警报。
主要用到规则链的过滤节点类型中的消息类型切换节点的Disconnect Event 和 Connect Event
使用MQTTBox测试设备上下线
在设备警告页查看结果
加载处理所需的其他数据。例如,在“设备的客户”或“租户”属性中定义的设备的负载温度阈值。
添加一个客户为其分配设备温度传感器1,并为此客户添加俩个服务端属性 高温阈值 highTemperatureThreshold 40 低温阈值 lowTemperatureThreshold 0

新建规则链并应用到温度传感器1的设备配置上

过滤温度节点脚本
return msg.temperature > metadata.low &&msg.temperature < metadata.high;
调试 向v1/devices/me/telemetry 发送 {"temperature":12} 查看节点调试情况

设备最新遥测数据处显示,再发送 {"temperature":50}则被过滤温度节点过滤不显示。
触发对外部系统的REST API调用。
根据定义的条件进行RPC调用。
假设规则链功能为 温度低于18度->打开空调并设置目标温度23度;23~25关闭空调;高于30度打开空调并设置温度为18度.
构建rpc消息脚本内容
var newMsg = {}var params = {}if(msg.temperature < 18){newMsg.method = "on";params.value = "23";}if(msg.temperature >= 23 && msg.temperature < 25){newMsg.method = "off";}if(msg.temperature > 30){newMsg.method = "on";params.value = "18";}newMsg.params = params;return {msg: newMsg, metadata: metadata, msgType: msgType};
应用到设备配置后调试,设备订阅v1/devices/me/rpc/request/+ 结果如下
与外部管道(如Kafka,Spark,AWS服务等)集成。
使用外部节点即可将消息流转到其他地方








