Skip to content

ThingsBoard 规则链:check existence fields ​

正文与配图来自原稿。本篇讲筛选器节点 check existence fields(检测字段是否存在)。

1、概述 ​

check existence fields 用来检测字段是否存在,可以检查规则节点消息(msg)和元数据(metadata)中的字段。

2、节点理解 ​

2.1、概述 ​

节点配置如图:

check existence fields 节点配置

配置项含义
名称给这个节点命名
Message data检查 msg 里是否存在的字段;输入字段名后按 Enter 添加,可配多个
Message metadata检查 metadata 里是否存在的字段
Check that all selected keys are present「检查所有选择的键是否都存在」。勾选后:Message data 与 Message metadata 里配置的字段都必须存在才返回 True,否则 False
说明对该节点的描述信息

3、案例实操 ​

演示:温度传感器上报温度;检测 temperature 是否存在——存在则保存遥测,不存在则打印 log。

3.1、创建设备配置 ​

创建设备配置 temperature sensor:

创建设备配置 temperature sensor

3.2、创建设备 ​

创建设备 temperatureSensorA,设备配置选择 temperature sensor:

创建设备 temperatureSensorA

3.3、规则链添加 check existence fields ​

规则链示意:仅在 Message data 中配置 temperature 字段。

规则链整体

仅检查 msg.temperature

4、测试 ​

用 MQTTX 模拟设备:

MQTTX 连接

模拟上报温度 90℃:

上报 temperature=90

查看 check existence fields 节点日志:out 为 True,进入保存遥测分支:

节点 out=True

设备遥测中已有数据写入:

设备遥测已写入

再在 Message metadata 中增加要检查的字段 address,并勾选「全部键都存在」一类要求后再次上报:

额外检查 metadata.address

此时节点日志 out 为 False:metadata 里没有 address。设备上报内容一般在 msg 里;metadata 多为设备元数据,或由其它规则节点查询后写入。

因缺少 address 返回 False

False 分支进入 log,可见打印记录:

False 分支 log

5、扩展 ​

这个节点检查字段比较方便,但容易用错——尤其是否要求 msg 与 metadata 中配置的键全部存在。日常工作中也常用 script 做字段校验:

用 script 做判断

注意图中黄色的 script 节点,专门用于判断。用法示例:

script:msg.hasOwnProperty

用 JS:msg.hasOwnProperty("temperature") —— msg 中存在 temperature 则 True,否则 False。


补充(辅) ​

  • 只查上报体:只填 Message data,不要误加 metadata 键。
  • 勾选「所有键都存在」时,任一缺失都会走 False。
  • hasOwnProperty 只判断「有没有这个键」,不保证值非空;要非空需再写判断。

相关文章 ​