Node-RED:Рецепты/Как игнорировать сообщения, значения которых не поменялись

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Как игнорировать сообщения, значения которых не поменялись[1]

Проблема

Вам нужно игнорировать сообщение, если его значение в свойстве «payload» осталось таким же, как и у предыдущего сообщения. К примеру, у вас есть переключатель «вкл/выкл», отправляющий свои значения через равные промежутки времени, но вам это значение нужно знать только тогда, когда оно изменилось.

Решение

Воспользуйтесь нодой «RBE» («Report by Exception»), которая умеет блокировать сообщения, значения которых остались без изменений.

Пример

[{"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"]]}]

Разбор

Нода «RBE» позволяет игнорировать сообщения, если их значения остались без изменений. Это очень полезно для определения изменений (как в нашем случае).

Если проверяемое значение – это число, в ноде также можно задать порог того, насколько сильно должно измениться значение, чтобы сообщение прошло дальше.

См.также

Внешние ссылки