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

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


=Как обрабатывать сообщения, приходящие через заданные периоды, игнорируя промежуточные сообщения<ref>[https://cookbook.nodered.org/basic/rate-limit-message-stream cookbook.nodered.org - Handle messages at a regular rate]</ref>=
=Как обрабатывать сообщения, приходящие через заданные периоды, игнорируя промежуточные сообщения<ref>[https://cookbook.nodered.org/basic/rate-limit-message-stream cookbook.nodered.org - Handle messages at a regular rate]</ref>=
Строка 20: Строка 17:
[[File:nodered_recipe_rate-limit-message-stream.png|center]]
[[File:nodered_recipe_rate-limit-message-stream.png|center]]


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
[{"id":"8a1bcd7d.f6b67","type":"inject","z":"ac14500e.2c57d","name":"Inject Array","topic":"","payload":"[0,1,2,3,4,5,6,7,8,9]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1380,"wires":[["bd4bdd42.bd1b"]]},{"id":"bd4bdd42.bd1b","type":"delay","z":"ac14500e.2c57d","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":320,"y":1380,"wires":[["be20c513.237c78"]]},{"id":"be20c513.237c78","type":"debug","z":"ac14500e.2c57d","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":510,"y":1380,"wires":[]}]
[{"id":"8a1bcd7d.f6b67","type":"inject","z":"ac14500e.2c57d","name":"Inject Array","topic":"","payload":"[0,1,2,3,4,5,6,7,8,9]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1380,"wires":[["bd4bdd42.bd1b"]]},{"id":"bd4bdd42.bd1b","type":"delay","z":"ac14500e.2c57d","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":320,"y":1380,"wires":[["be20c513.237c78"]]},{"id":"be20c513.237c78","type":"debug","z":"ac14500e.2c57d","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":510,"y":1380,"wires":[]}]
</syntaxhighlight>
</syntaxhighlight>
Строка 29: Строка 26:


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


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

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

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


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

Проблема

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

Решение

Воспользуйтесь режимом «Rate Limit» в ноде «Delay», чтобы ограничить скорость проходящих через нее сообщений, а также активируйте у нее настройку «drop intermediate messages» («игнорировать промежуточные сообщения»).

Пример

[{"id":"8a1bcd7d.f6b67","type":"inject","z":"ac14500e.2c57d","name":"Inject Array","topic":"","payload":"[0,1,2,3,4,5,6,7,8,9]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":1380,"wires":[["bd4bdd42.bd1b"]]},{"id":"bd4bdd42.bd1b","type":"delay","z":"ac14500e.2c57d","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":320,"y":1380,"wires":[["be20c513.237c78"]]},{"id":"be20c513.237c78","type":"debug","z":"ac14500e.2c57d","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":510,"y":1380,"wires":[]}]

Разбор

Изменить скорость сообщений, проходящих через поток, можно при помощи режима «Rate Limit» в ноде «Delay». Если также поставить в ее настройках галочку рядом с пунктом «drop intermediate messages», она будет игнорировать все сообщения, приходящие во время заданного интервала.

См.также

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