Node-RED:Библиотеки/node-red-node-rbe

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

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


Модуль «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»).

Ноды

Функция

См.также

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