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

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


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

Проблема

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

Решение

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

Пример

Nodered recipe report-by-exception.png
[{"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» позволяет игнорировать сообщения, если их значения остались без изменений. Это очень полезно для определения изменений (как в нашем случае).

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

См.также

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