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

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


=Как запустить поток, если сообщение не было получено спустя заданное время<ref>[https://cookbook.nodered.org/basic/trigger-timeout cookbook.nodered.org - Trigger a flow if a message isn’t received after a defined time]</ref>=
=Как запустить поток, если сообщение не было получено спустя заданное время<ref>[https://cookbook.nodered.org/basic/trigger-timeout cookbook.nodered.org - Trigger a flow if a message isn’t received after a defined time]</ref>=
Строка 20: Строка 17:
[[File:nodered_recipe_trigger-timeout.png|center]]
[[File:nodered_recipe_trigger-timeout.png|center]]


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
[{"id":"6ea53ad8.2362a4","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450,"y":1160,"wires":[]},{"id":"3da6946e.184a5c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1160,"wires":[["38caaff4.03f6d","6ea53ad8.2362a4"]]},{"id":"38caaff4.03f6d","type":"trigger","z":"ac14500e.2c57d","op1":"","op2":"timeout","op1type":"nul","op2type":"str","duration":"5","extend":true,"units":"s","reset":"","bytopic":"all","name":"Watchdog","x":270,"y":1200,"wires":[["ae477709.016088"]]},{"id":"ae477709.016088","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":1200,"wires":[]}]
[{"id":"6ea53ad8.2362a4","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450,"y":1160,"wires":[]},{"id":"3da6946e.184a5c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1160,"wires":[["38caaff4.03f6d","6ea53ad8.2362a4"]]},{"id":"38caaff4.03f6d","type":"trigger","z":"ac14500e.2c57d","op1":"","op2":"timeout","op1type":"nul","op2type":"str","duration":"5","extend":true,"units":"s","reset":"","bytopic":"all","name":"Watchdog","x":270,"y":1200,"wires":[["ae477709.016088"]]},{"id":"ae477709.016088","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":1200,"wires":[]}]
</syntaxhighlight>
</syntaxhighlight>
Строка 31: Строка 28:


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


Строка 37: Строка 34:
[[Категория:Рецепты Node-RED]]
[[Категория:Рецепты Node-RED]]
[[Категория:Рецепты]]
[[Категория:Рецепты]]
{{Навигационная таблица/Node-RED библиотеки}}
{{Навигационная таблица/Телепорт}}

Текущая версия от 18:25, 14 мая 2023

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


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

Проблема

Вам нужно запустить поток, если сообщение не было получено спустя заданное количество времени. Например, у вас есть датчик, от которого приходят данные каждые 5 секунд, и вам нужно знать, если данные от него вдруг не придут.

Решение

Узнать, пришло ли сообщение спустя заданное время, можно при помощи ноды «Trigger».

Пример

[{"id":"6ea53ad8.2362a4","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450,"y":1160,"wires":[]},{"id":"3da6946e.184a5c","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1160,"wires":[["38caaff4.03f6d","6ea53ad8.2362a4"]]},{"id":"38caaff4.03f6d","type":"trigger","z":"ac14500e.2c57d","op1":"","op2":"timeout","op1type":"nul","op2type":"str","duration":"5","extend":true,"units":"s","reset":"","bytopic":"all","name":"Watchdog","x":270,"y":1200,"wires":[["ae477709.016088"]]},{"id":"ae477709.016088","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":450,"y":1200,"wires":[]}]

Разбор

В примере выше в верхней ветке – обычный поток сообщений, а в нижней – поток с нодой «Trigger», через который также проходят эти сообщения.

Нода «Trigger» настроена здесь так, что сначала не отправляет ничего, но будет ждать 5 секунд прежде, чем отправит сообщение «timeout». Кроме того, в ее настройках поставлена галочка рядом с пунктом «extend delay if new message arrives». Это значит, что если сообщения будут приходить без перерыва, эта нода ничего никуда не отправит. Но если 5 секунд пройдет, а сообщения так получено и не будет, она отправит сообщение «timeout».

См.также

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