EMQX 规则引擎之数据告警(从数组中取值)

作者 2025年03月25日 11:31 阅读 22

EMQX 规则引擎之数据告警

 

1、要发布的消息内容:

{"msgType":201,"txnNo":1741059781672,
"paramList":[
   {"addrId":1,"id":"06010072","value":"2"},
   {"addrId":1,"id":"06010071","value":"10"},
   {"addrId":1,"id":"06010070","value":"1"},
   {"addrId":1,"id":"06010038","value":"2000"},
   {"addrId":1,"id":"06010082","value":"2"},
   {"addrId":1,"id":"06010068","value":"3"}
],
"sn":"sn123456","result":1}

 

2、过滤出id='06010038' 且 value>100 的记录进行告警 ,注意,这里的100不要加单引号,让引擎按数字去运行,否则会按字符串进行比较。

FOREACH
    payload.paramList as e
DO                       
    clientid,
    e.addrId as name,
    e.value  as value, 
    e.id     as id   
INCASE 
    e.id = '06010038'                
    and e.value >= 100         
FROM "bus/in" 

 

3、 指定 数据源 和 输出的mqtt主题即可

数据输入Topic: bus/in

动作输出Topic: device/temp/alert

 

当有消息投递到主题  bus/in 上时,emqtt规则引擎会通过以上sql过滤出符合条件的记录,转发到 温度告警主题!  

同一个系统中,可以选择消息重发布,如果是第3方系统可选择mqtt或webhook向外部系统转发

 

发表评论