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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 1: Строка 1:
{{Node-RED/Панель перехода}}
{{Node-RED/Панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
{{Черновик}}


=Как игнорировать сообщения, значения которых не поменялись<ref>[https://cookbook.nodered.org/basic/report-by-exception cookbook.nodered.org - Drop messages that have not changed value]</ref>=
=Как игнорировать сообщения, значения которых не поменялись<ref>[https://cookbook.nodered.org/basic/report-by-exception cookbook.nodered.org - Drop messages that have not changed value]</ref>=
Строка 31: Строка 28:


=См.также=
=См.также=
 
{{ads}}
=Внешние ссылки=
=Внешние ссылки=



Версия от 10:08, 7 августа 2022

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


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

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

См.также

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