Skip to main content

Drop Messages That Have Not Changed Value

Problem

You want to drop a message if the value of its payload has not changed since the last message. For example, you have a sensor sending the state of a switch at regular intervals and you only want to know when the value has changed.

Solution

Use the RBE node (Report By Exception) to block messages unless its value has changed.

Example


Flow JSON
[{"id":"6079638d.df403c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"0","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":1500,"wires":[["87129503.c7b358"]]},{"id":"87129503.c7b358","type":"rbe","z":"ac14500e.2c57d","name":"report-by-exception","func":"deadband","gap":"","start":"","inout":"out","property":"payload","x":300,"y":1520,"wires":[["5e2ffc27.c61dd4"]]},{"id":"5e2ffc27.c61dd4","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":510,"y":1520,"wires":[]},{"id":"2dc49f96.3070c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":1540,"wires":[["87129503.c7b358"]]}]

Discussion

The RBE can be used to drop messages unless their value has changed. This is useful for detecting changes.

If the property being checked is a number, the node can also be configured with a threshold for how much the value must change for the message to be passed on.