Node-RED:Библиотеки/node-red-node-rbe: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 4: | Строка 4: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=node-red-node-rbe= | =Модуль «node-red-node-rbe»<ref>[https://flows.nodered.org/node/node-red-node-rbe flows.nodered.org - node-red-node-rbe]</ref>= | ||
Эта нода добавляет в [[Node-RED]] возможность пропускать или не пропускать дальше в поток сообщения в зависимости от того, отличается ли новое значение от предыдущего ([[RBE-режим]]), и от того, попадает ли новое значение в заданный диапазон ([[deadband]]- и [[narrowband-режим]]ы). | |||
== Установка == | |||
Запустите в пользовательской директории [[Node-RED]] (обычно это '''«~/.node-red»''') команду ниже: | |||
<syntaxhighlight lang="bash"> | |||
npm i node-red-node-rbe | |||
</syntaxhighlight> | |||
== Использование == | |||
Нода '''«RBE»''' работает '''«потопиково»'''. То есть одна нода '''«RBE»''' может одновременно обрабатывать разные серии сообщений отдельно друг от друга – согласно их значениям в свойстве '''«msg.topic»'''. Допустим, у вас есть сообщения, в '''«msg.topic»''' которых хранится '''«humidity»''' – они будут обрабатывать как один поток сообщений, и есть сообщения, в '''«msg.topic»''' которых хранится '''«light»''' – они будут обрабатываться как другой поток сообщений. | |||
Режим работы ноды '''«RBE»''' задается в поле '''«Mode»'''. | |||
== RBE-режимы == | |||
В этих режимах – '''«block unless value changes»''' (''«пропустить, если значение изменилось»'') и '''«block unless value changes (ignore initial value)»''' (''«пропустить, если значение изменилось, но игнорировать начальное значение»'') – нода не будет пропускать сообщения дальше в поток, если новое значение в '''«msg.payload»''' будет аналогично предыдущему. Работает с числами и строками. | |||
Этот режим полезен для фильтрации повторяющихся сообщений (имеющих одно и то же значение), что позволяет, например, снизить нагрузку на канал связи и т.д. | |||
== Deadband- и narrowband-режимы == | |||
В [[deadband-режим]]ах – '''«block unless value change is greater or equal to»''' (''«пропустить, если новое значение больше или равно...»'') и '''«block unless value change is greater than»''' (''«пропустить, если новое значение больше, чем...»'') – для пропуска сообщения дальше в поток в '''«msg.payload»''' входящего сообщения должно содержаться число, находящееся за пределами диапазона, который рассчитывается относительно предыдущего значения. | |||
В [[narrowband-режим]]ах – '''«block if value change is greater or equal to»''' (''«блокировать, если новое значение больше или равно...»'') и '''«block if value change is greater than»''' (''«блокировать, если новое значение больше, чем...»'') – нода '''«RBE»''', наоборот, будет пропускать дальше только те сообщения, значения которых попадают в диапазон, рассчитываемый относительно предыдущего значения. Это можно использовать, например, чтобы игнорировать случайные данные и прочие значения, выходящие за пределы нужного диапазона. | |||
В поле, которое находится ниже, можно задать, по какому значению будет выполняться сравнение – по выходящему или входящему. В первом случае значения будут примерно держаться заданного диапазона, тогда как во втором будет достаточно двух ''«плохих»'' значений подряд, чтобы с их помощью серьезно сместить диапазон в какую-либо сторону. Второй вариант может пригодиться, например, для равномерного увеличения или уменьшения значения. | |||
Диапазон для [[deadband]]- и [[narrowband-режим]]ов можно задать с помощью обычного числа (вроде '''«10»''') или процентов (вроде '''«5%»'''). | |||
К примеру, если у вас выставлен режим '''«block unless value change is greater or equal to»''', предыдущим значением было '''«100»''', а диапазон составляет '''10%''', то значение '''«110»''' пройдет, а '''«109»''' – нет. Следующим значением, которое пройдет, будет '''«121» (110 + 10% = 121)'''. | |||
Нода '''«RBE»''' полезна главным образом при работе с разными потоками сообщений. Т.е. одна такая нода позволяет одновременно работать, например, с сообщениями, присылаемыми от датчика температуры, и сообщениями из интернет-источника о курсе какой-то валюты. | |||
Нода '''«RBE»''' принимает только числа и строки, значения в которых можно пропарсить (вроде '''«18.4 C»''' или '''«$500»'''). | |||
==Ноды== | ==Ноды== | ||
Строка 16: | Строка 54: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Node-RED библиотеки}} | {{Навигационная таблица/Node-RED библиотеки}} | ||
{{Навигационная таблица/Телепорт}} | |||
[[Категория:Модуль]] | [[Категория:Модуль]] | ||
[[Категория:Модуль Node-RED]] | [[Категория:Модуль Node-RED]] | ||
[[Категория:Node-RED модуль]] | [[Категория:Node-RED модуль]] | ||
[[Категория:Модуль node-red-node-rbe]] | [[Категория:Модуль node-red-node-rbe]] |
Текущая версия от 18:14, 14 мая 2023
Модуль «node-red-node-rbe»[1]
Эта нода добавляет в Node-RED возможность пропускать или не пропускать дальше в поток сообщения в зависимости от того, отличается ли новое значение от предыдущего (RBE-режим), и от того, попадает ли новое значение в заданный диапазон (deadband- и narrowband-режимы).
Установка
Запустите в пользовательской директории Node-RED (обычно это «~/.node-red») команду ниже:
npm i node-red-node-rbe
Использование
Нода «RBE» работает «потопиково». То есть одна нода «RBE» может одновременно обрабатывать разные серии сообщений отдельно друг от друга – согласно их значениям в свойстве «msg.topic». Допустим, у вас есть сообщения, в «msg.topic» которых хранится «humidity» – они будут обрабатывать как один поток сообщений, и есть сообщения, в «msg.topic» которых хранится «light» – они будут обрабатываться как другой поток сообщений.
Режим работы ноды «RBE» задается в поле «Mode».
RBE-режимы
В этих режимах – «block unless value changes» («пропустить, если значение изменилось») и «block unless value changes (ignore initial value)» («пропустить, если значение изменилось, но игнорировать начальное значение») – нода не будет пропускать сообщения дальше в поток, если новое значение в «msg.payload» будет аналогично предыдущему. Работает с числами и строками.
Этот режим полезен для фильтрации повторяющихся сообщений (имеющих одно и то же значение), что позволяет, например, снизить нагрузку на канал связи и т.д.
Deadband- и narrowband-режимы
В deadband-режимах – «block unless value change is greater or equal to» («пропустить, если новое значение больше или равно...») и «block unless value change is greater than» («пропустить, если новое значение больше, чем...») – для пропуска сообщения дальше в поток в «msg.payload» входящего сообщения должно содержаться число, находящееся за пределами диапазона, который рассчитывается относительно предыдущего значения.
В narrowband-режимах – «block if value change is greater or equal to» («блокировать, если новое значение больше или равно...») и «block if value change is greater than» («блокировать, если новое значение больше, чем...») – нода «RBE», наоборот, будет пропускать дальше только те сообщения, значения которых попадают в диапазон, рассчитываемый относительно предыдущего значения. Это можно использовать, например, чтобы игнорировать случайные данные и прочие значения, выходящие за пределы нужного диапазона.
В поле, которое находится ниже, можно задать, по какому значению будет выполняться сравнение – по выходящему или входящему. В первом случае значения будут примерно держаться заданного диапазона, тогда как во втором будет достаточно двух «плохих» значений подряд, чтобы с их помощью серьезно сместить диапазон в какую-либо сторону. Второй вариант может пригодиться, например, для равномерного увеличения или уменьшения значения.
Диапазон для deadband- и narrowband-режимов можно задать с помощью обычного числа (вроде «10») или процентов (вроде «5%»).
К примеру, если у вас выставлен режим «block unless value change is greater or equal to», предыдущим значением было «100», а диапазон составляет 10%, то значение «110» пройдет, а «109» – нет. Следующим значением, которое пройдет, будет «121» (110 + 10% = 121).
Нода «RBE» полезна главным образом при работе с разными потоками сообщений. Т.е. одна такая нода позволяет одновременно работать, например, с сообщениями, присылаемыми от датчика температуры, и сообщениями из интернет-источника о курсе какой-то валюты.
Нода «RBE» принимает только числа и строки, значения в которых можно пропарсить (вроде «18.4 C» или «$500»).
Ноды
Функция
См.также
Внешние ссылки