跳到主要内容

流程控制-丢弃未发生变化的消息

丢弃与上一次消息相同的消息

问题背景

如果消息的有效载荷值自上一条消息以来没有发生变化,则需要丢弃该消息。例如,有一个传感器定期发送开关的状态,而只想知道该值何时发生变化。

解决方案

使用 异常报告 来阻止消息,除非其值已发生变化。

示例

drop-unchanged-msg

示例JSON

[{"id":"6079638d.df403c","type":"inject","z":"e028a121bc4ae061","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":250,"y":2000,"wires":[["87129503.c7b358"]]},{"id":"87129503.c7b358","type":"rbe","z":"e028a121bc4ae061","name":"消息过滤","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":430,"y":2020,"wires":[["5e2ffc27.c61dd4"]]},{"id":"5e2ffc27.c61dd4","type":"debug","z":"e028a121bc4ae061","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":670,"y":2020,"wires":[]},{"id":"2dc49f96.3070c","type":"inject","z":"e028a121bc4ae061","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":250,"y":2040,"wires":[["87129503.c7b358"]]}]

运行结果

交替点击注入节点:0-1 ,可以看到调试窗口输出 0-1,如果点击同一个注入,只会看到最后一次的数据,直到两次值发送变化才会再次输出

drop-unchanged-msg-result