Node-RED:Библиотеки/node-red/Join: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 92: | Строка 92: | ||
[[Категория:Нода модуля node-red]] | [[Категория:Нода модуля node-red]] | ||
[[Категория:Нода node-red]] | [[Категория:Нода node-red]] | ||
{{ИнфоОСтр | |||
|Название=Нода «Join» | |||
|Метки=join, node join, node-red join, join node-red, нода join, join нода | |||
|Описание= | |||
[[Файл:Nodered node join.PNG|center]] | |||
Объединяет серию сообщений в одно сообщение. | |||
}} | |||
{{SEO | |||
|Заголовок статьи=Node-RED:Нода «Join» / Онлайн справочник - wikihandbk.com | |||
|Ключевые слова= | |||
|Описание статьи=Объединяет серию сообщений в одно сообщение. | |||
|Изображение статьи для Open Graph=http://wikihandbk.com/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Nodered_node_join.PNG | |||
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Node-RED:Библиотеки/node-red/Join</nowiki> | |||
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki> | |||
|Высота изображения статьи для schemaNewsArticle= | |||
|Ширина изображения статьи для schemaNewsArticle= | |||
|Дата публикации для schemaNewsArticle=2019-05-21 | |||
|Автор=Мякишев Е.А. | |||
|Издатель=myagkij | |||
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki> | |||
|Ширина логотипа издателя для schemaNewsArticle=60 | |||
|Высота логотипа издателя для schemaNewsArticle=45 | |||
}} |
Версия от 22:20, 19 июня 2019
Нода «Join»
Объединяет серию сообщений в одно сообщение. Работает в трех режимах:
- Режим «automatic» – если нода «Join» работает в паре с нодой «Split», она будет автоматически объединять созданные ею сообщения, тем самым реверсируя дробление исходного сообщения
- Режим «manual» – здесь можно задать разные способы объединения сообщений
- Режим «reduce sequence» – применяет регулярное выражение ко всем сообщениям в серии, чтобы сократить их до одного сообщения
Свойства присылаемого сообщения
- Свойство «parts» (объект) – для автоматического объединения серии сообщений все они должны иметь это свойство. Его генерирует нода «Split», но его также можно создать вручную. У этого свойства есть несколько подсвойств:
- «id» – идентификатор группы сообщений
- «index» – позиция сообщения в группе
- «count» – общее количество сообщений в группе
- «type» – тип сообщения (строка/массив/объект/буфер)
- «ch» – данные, используемые для того, чтобы разбить сообщение на несколько сообщений (используется для строки и буфера)
- «key» – ключ из пары «ключ/значение», из которой было создано сообщение (используется для объекта)
- «len» – длина каждого сообщения, если исходное сообщение было разбито на фрагменты фиксированной длины
- Свойство «complete» – если в этом свойстве будет задано «true», нода отправит исходящее сообщение в его текущем состоянии
Подробное описание
Режим «automatic»
Этот режим использует свойство «parts» входящих сообщений, чтобы определить правильный порядок их объединения. Это позволяет автоматически реверсировать действия, выполненные нодой «Split».
Режим «manual»
В этом режиме можно задать разный результат объединения сообщений:
- Строка («a String») или буфер («a Buffer») – создаются при помощи объединения заданного свойства (например, «msg.payload») каждого сообщения с использованием специального объединительного символа (например, «\n»)
- Массив («an Array») – создается при помощи добавления заданного свойства (например, «msg.payload») каждого сообщения или всего сообщения в выходной массив
- Объект с парами «ключ/значение» («a key/value Object») – здесь «ключ» – это одно свойство сообщения (например, «msg.topic»), а «значение» – другое (например, «msg.payload»), которые объединяются в один объект
- Объединенный объект («а merged Object») – создается при помощи объединения заданного свойства (например, «msg.payload») каждого сообщения в один объект
Другие свойства выходящего сообщения берутся из последнего сообщения, полученного перед отправкой результата.
Поле «After a number of message parts» («count») можно использовать, чтобы задать, сколько сообщений должно быть получено перед генерированием выходного сообщения. Если у вас на выходе задан объект, то в меню редактирования также будет пункт «and every subsequent message», где можно задать, чтобы после достижения значения в поле «count» нода «Join» отправляла сообщение для каждого последующего полученного сообщения.
В поле «After a timeout following the first message» («seconds») можно задать время, которое должно пройти, прежде чем нода отправит сообщение со всем, что собрала в данный момент.
Если в ноду «Join» придет сообщение со свойством «msg.complete», заданным на «true», сборка нового сообщения тут же прекратится, и нода «Join» отправит его дальше. Это сбросит все незаконченные счетчики. Если в ноду «Join» придет сообщение со свойством «msg.reset», заданным на «true», неполное сообщение будет удалено и не будет отправлено. Это также сбросит все незаконченные датчики.
Режим «reduce sequence»
В этом режиме к каждому сообщению в серии будет применено регулярное выражение, результаты которого будут объединены в одно сообщение.
Поле «Initial value»
Начальное значение, к которому будет суммироваться результат («$A»).
Поле «Reduce exp»
JSONata-выражение, вызываемое для каждого сообщения в серии. Его результат будет передан следующему вызову этого JSONata-выражения, и с каждым вызовом новое значение-результат будет суммироваться к предыдущему. В выражении можно использовать следующие специальные переменные:
- «$A» – суммированное выражение
- «$I» – индекс сообщения в серии
- «$N» – количество сообщений в серии
Поле «Fix-up exp»
Опциональное JSONata-выражение, применяемое после JSONata-выражения из поля «Reduce exp» ко всем сообщениям в серии. В нем можно использовать следующие специальные переменные:
- «$A» – суммированное выражение
- «$N» – количество сообщений в серии
По умолчанию выражение из поля «Reduce exp» применяется по порядку – от первого к последнему сообщениям в серии. Но при помощи галочки в пункте «Evaluate in reverse order (last to first)» этот порядок можно реверсировать.
В примере ниже в ноду «Join» приходит серия числовых значений, а она рассчитывает из них среднее значение:
- «Reduce exp» – $A+payload
- «Initial value» – 0
- «Fix-up exp» – $A/$N
Хранение сообщений
Нода «Join» сохраняет полученные сообщени я во внутренний буфер, что позволяет ей работать с разными сериями сообщений. Задать лимит сообщений для этого буфера можно в настройке среды выполнения «nodeMessageBufferMaxLength».
См.также
Внешние ссылки
{{#set: |Название=Нода «Join» |Метки=join, node join, node-red join, join node-red, нода join, join нода|+sep=,
|Описание=
Объединяет серию сообщений в одно сообщение. |Полная ссылка на страницу=Нода «Join» }}