Что такое node red
Знакомство с Node-RED и потоковое программирование в Yandex IoT Core
В этой статье я хочу разобрать один из самых популярных опенсорс-инструментов, Node-RED, с точки зрения создания простых прототипов приложений с минимумом программирования. Проверим гипотезу о простоте и удобстве таких средств, а также рассмотрим взаимодействие Node-RED с облачной платформой на примере Yandex.Cloud.
Написано уже немало статей на тему того, как средства визуального программирования помогают строить приложения интернета вещей, управлять устройствами и автоматизировать дом (управление освещением, автоматизация квартиры — часть 1 и часть 2). Но мало кто упоминает о другом полезном свойстве подобных иструментов. Это быстрое прототипирование, то есть эмуляция самих устройств без использования микроконтроллеров и визуализация результатов их работы без глубоких познаний в программировании или веб-дизайне.
Есть ряд ограничений, связанных с хранением данных клиентов в облачных дата-центрах других государств. Поэтому у пользователей зарубежных ресурсов все чаще появляется устойчивое желание использовать гибридные подходы, применять локализованные облачные сервисы, расположенные на территории России. В таких случаях для реализации сценариев интернета вещей вполне оправдано объединение открытых технологий IBM с готовым облачным сервисом Яндекса.
Кратко о Node-RED, его истории, создателях и сообществе
Как гласит первоисточник, Node-RED — это инструмент потокового программирования, первоначально разработанный командой IBM Emerging Technology Services и в настоящее время являющийся частью JS Foundation.
В качестве ключевой составляющей Node-RED выступает парадигма потокового программирования, которое было изобретено в 70-х Джеем Полом Моррисоном. Потоковое программирование — это способ описания поведения приложения в виде сети черных ящиков или «узлов», как они называются в Node-RED. Каждый узел имеет четкую цель — к нему поступают некоторые данные, он что-то делает с этими данными, а затем передает их на следующий узел. Сеть отвечает за поток данных между узлами.
Эта модель отлично подходит для того, чтобы представить ее визуально: так она становится более доступной для широкого круга пользователей. Если кто-то пытается разобраться в проблеме, он может разбить задачу на отдельные шаги, взглянуть на поток и понять, что он делает, без необходимости разбираться в отдельных строках кода в каждом узле.
Node-RED работает в среде исполнения Node.js, а для создания или редактирования потока («Flow») используется браузер. В браузере вы можете создавать свое приложение путем перетаскивания необходимых узлов («Node») из палитры в рабочую область и соединять их вместе. Одним кликом по кнопке «Deploy» приложение разворачивается в среде исполнения и запускается.
Палитра узлов может быть легко расширена путем установки новых узлов, созданных сообществом, а созданные вами потоки могут быть легко переданы в виде файлов JSON.
Node-RED начал свою жизнь в начале 2013 года как совместный проект Ника О’Лири и Дэйва Конвея-Джонса из группы IBM Emerging Technology Services.
Проект стартовал как подтверждение концепции визуализации и манипулирования мэппингами между топиками сообщений в протоколе Message Queuing Telemetry Transport (MQTT). Node-RED быстро стал более универсальным инструментом, который можно было легко расширять в любом направлении.
Исходный код проекта был открыт в сентябре 2013 года. С тех пор он разрабатывался в открытом виде, кульминацией развития стало признание Node-RED одним из фундаментальных проектов JS Foundation в октябре 2016 года.
Почему проект называется Node-RED?
Название было веселой игрой слов, звучащих как «Code Red».
Это название приклеилось к проекту и стало существенным шагом вперед по сравнению с тем, как он назывался в первые несколько дней.
Часть «Node» отражает суть модели потокового программирования (поток/узел) и основную среду выполнения Node.JS.
Окончательного решения о том, что же означает часть «RED», принято так и не было.
Одно из предложений — «Rapid Event Developer» (быстрый разработчик событий), но мы никогда не чувствовали себя обязанными что-либо формализовать.
Мы придерживаемся названия Node-RED.»
Node-RED предоставляется по лицензии Apache 2.0. Важно понимать и осознавать условия лицензии — по этой ссылке есть краткая выдержка с основными свойствами.
Лицензия разрешает коммерческое использование, но при этом накладывает и ряд ограничений. Вот основные из них: при использовании торговой марки Node-RED (принадлежащей OpenJS Foundation) нельзя ее искажать; кроме того, есть ограничение ответственности (Liability/Warranty) — участники проекта не могут быть привлечены к ответственности в случае причинения убытков в процессе некорректного использования их продукта.
Постановка задачи — интеграция Node-RED c Yandex IoT Core
Сначала хочу отметить: вся эта затея сугубо самообразовательная и подкреплена только непреодолимой тягой энтузиастов к познанинию нового. Например, хотелось изучить возможности облачных сред и сервисов Яндекса, которые могут быть безвозмездно получены для тестирования своих гениальных идей. Ну а чтобы была польза для дела, было решено посмотреть, насколько совместимы реализованные в проекте Node-RED узлы (из коробки на уровне MQTT) с интерфейсами сервиса IoT Core.
Задача выглядит просто:
Чтобы было повеселее, предположим, есть гениальная идея — создать уникальное приложение «Подключаемых автомобилей», которое требует быстрой апробации некоторых концепций. Пусть создание прототипа будет первым шагом на этом пути.
Создание облачной среды и установка Node-RED
Создание ВМ
Для создания виртуальной машины, на которой мы далее запустим Node-RED, зайдем в Yandex.Cloud и перейдем в Консоль. В сервисе Compute Cloud нажимаем Создать ВМ.
Задаем машине любое разрешенное имя и в качестве операционной системы выбираем CentOS. Для запуска Node-RED подходит любая из приведенных ОС, но в статье мы рассмотрим порядок работы только с CentOS.
Выполнение тестового сценария не требует больших ресурсов, поэтому выставляем все на минимум. Этот ход также позволит сэкономить ресурсы пробного периода, если вы решили развернуть Node-RED только для ознакомления.
Работа с ВМ будет осуществляться через SSH, поэтому пусть у машины будет автоматически выделенный публичный адрес.
Теперь требуемый ключ хранится в
Подключение к ВМ
После завершения подготовки ВМ в сервисе Compute Cloud появится наша машина с заполненным полем Публичный IPv4.
Установка Node-RED
Теперь мы можем установить Node-RED. Самый удобный способ для новой, пустой системы — Linux installers for Node-RED из репозитория проекта. Так как мы используем CentOS 8, нам необходима вторая команда для ОС, основанных на RPM:
Скрипт установит LTS-версию Node.js, базовую версию Node-RED, создаст скрипт автозапуска для systemd и по желанию создаст правила для порта 1880 в файрволе. Для проверки успешности установки можно запустить команду:
Примечание: для выхода из Node-RED нажмите Ctrl+C.
Как активировать автозапуск и старт службы с помощью systemctl:
После этого по адресу http://
Подготовка и настройка сервиса Yandex IoT Core
Возвращаемся в Консоль, выбираем IoT Core и нажимаем Создать реестр. Указываем любое подходящее имя. Далее определимся со способом авторизации.
IoT Core поддерживает два способа: с помощью сертификатов и по логину-паролю. Для нашего тестового сценария намного быстрее использовать последний, поэтому заполним поле Пароль. Длина пароля — минимум 14 символов.
После создания переходим в реестр во вкладку Устройства слева и нажимаем Добавить устройство.
Аналогично реестру задаем имя и пароль.
Теперь в пункте Обзор реестра появился его ID и пароль (в скрытом виде), которые мы указали при создании реестра. То же самое с устройством: на странице устройства есть его ID.
Пример создания простого приложения в Node-RED
В меню в правом верхнем углу Node-RED нажмем Import. Flow в формате .json берем отсюда и либо копируем содержимое в поле, либо скачиваем файл и нажимаем select a file to import.
В новой вкладке появится flow testing connection.
Рассмотрим добавленные узлы. Send data — узел типа Inject, предназначен для ручного или автоматического запуска flow.
Device payload — узел-функция, позволяет выполнять JavaScript для обработки данных, проходящих через этот узел.
device — mqtt-out-узел с настраиваемым MQTT-подключением, предназначен для публикации данных в топик.
Два раза кликаем по узлу device.
Нам необходимо заменить на ID нашего реестра в IoT Core. Далее редактируем данные в Server. Во вкладке Security указываем username — это ID созданного нами устройства, а password — пароль, придуманный на этапе создания устройства. Затем нажимаем Update, далее Done.
Протестируем соединение: в правом верхнем углу нажмем Deploy. Под узлом device появится подпись connected.
Flow получился намного интереснее предыдущего, видны новые узлы.
Так, registry — mqtt-in-узел, принимает сообщения из указанного в настройках топика и передает их следующим узлам.
Измеряемые данные приходят в строке, поэтому применяется узел разбора сообщений json. Он может конвертировать JSON-объект в его JS-представление и обратно.
Parsing JSON и JSON возвращают полученные измерения уже в виде отдельных объектов, которые далее передаются узлам, отвечающим за элементы Dashboard.
Теперь необходимо настроить узел registry. Аналогично первому flow записываем наш ID реестра и переходим в настройки сервера iot-core-subscription.
Во вкладке Security добавляем данные реестра, сохраняем изменения и нажимаем Deploy.
Если все поля заполнены верно, то после развертывания под узлом registry тоже появится подпись connected.
Последння вкладка в окне справа (с иконкой столбчатой диаграммы) отвечает за Dashboard. Перейти в Dashboard можно по кнопке:
Каждые три секунды устройство из flow testing connection генерирует данные, отправляет их в топик нашего реестра, а flow Smart Utilities, в свою очередь, подписывается на этот топик и обновляет Dashboard в соответствии с данными, приходящими из IoT Core.
В качестве результатов и краткого заключения
Node-RED действительно может скачать любой желающий, безвозмездно. При первом знакомстве он вызывает вопросы в плане логики работы и прививает свою непередаваемую любовь к узлу «debug» и вкладке «debug messages». Но когда осмотришься и разберешься, то все встает на свои места и становится очень просто выполнять любые действия. Совсем без познаний в программировании обойтись не получится — требуется хоть какое-то представление о том, что такое переменные, условия, циклы, массивы, JSON сообщения и как осуществлять их разбор. Однако узлы из раздела «Network», такие как «mqtt in/out», заработали с сервисом Yandex IoT Core вообще без проблем при условии правильной конфигурации.
Я умышленно не стал слишком детально описывать, как создается само приложение, поскольку есть исходник потока в JSON. Да и сама идея проекта Node-RED предполагает, что любой желающий может «взглянуть на поток и понять, что он делает, без необходимости разбираться в отдельных строках кода на каждом узле». Но в код лучше заглянуть.
Ссылки на полезные материалы
Отдельное спасибо за помощь при создании статьи:
Node-RED
Low-code programming for event-driven applications
Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.
It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.
Browser-based flow editing
Node-RED provides a browser-based flow editor that makes it easy to wire together flows using the wide range of nodes in the palette. Flows can be then deployed to the runtime in a single-click.
JavaScript functions can be created within the editor using a rich text editor.
A built-in library allows you to save useful functions, templates or flows for re-use.
Built on Node.js
The light-weight runtime is built on Node.js, taking full advantage of its event-driven, non-blocking model. This makes it ideal to run at the edge of the network on low-cost hardware such as the Raspberry Pi as well as in the cloud.
With over 225,000 modules in Node’s package repository, it is easy to extend the range of palette nodes to add new capabilities.
Social Development
The flows created in Node-RED are stored using JSON which can be easily imported and exported for sharing with others.
An online flow library allows you to share your best flows with the world.
Get Started
Node-RED is built on Node.js, taking full advantage of its event-driven, non-blocking model. This makes it ideal to run at the edge of the network on low-cost hardware such as the Raspberry Pi as well as in the cloud.
Run locally
On a device
In the cloud
Who’s using Node-RED?
All logos used with permission. These links do not constitute an endorsement or approval by the Node-RED project of any of the products, services or opinions of the companies listed.
Community more
On the blog more
Node-RED: Low-code programming for event-driven applications.
Copyright OpenJS Foundation and Node-RED contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Многобукфф
Vladislav’s personal blog site
Node-RED: что к чему и главное зачем. Разбираемся.
Написать эту статью меня побудил шок от первого знакомства с Node-RED. Я давно уже не работал с продуктами с историей из недр IBM, поэтому как-то поотвык. Все дело в том, что IBM имеет давние традиции по написанию программного обеспечения. Они в стародавние времена, когда основатели Microsoft еще ходили в коротких штанишках, уже пожинали в полном объеме все проблемы, связанные с написанием крупных программных продуктов. Именно там, на вершине IT-прогресса, выкристаллизовывался тот самый подход, который позволил IBM в дальнейшем делать очень интересные программные продукты. Как правило, они отличаются по логике работы и внешнему виду от всего, к чему мы, работая за компьютером, обычно привыкли. Но как только начинаешь понимать логику и процессы работы в продуктах от IBM, то не перестаешь все время задавать себе один и тот же вопрос: «А как же раньше мы без этого работали?» За свою долгую историю «Голубой гигант», как называются компанию в США, прошел путь от табуляторов до одной из богатейших транснациональных компаний в мире. И богатство компании приносит в первую очередь ее интеллектуальная собственность: ноу-хау, патенты и прочее. Из того чем компания занималось особенно запомнилась: OS/360 (потомки этой операционной системы с обратной совместимостью живут и сейчас, а ведь прошло уже более полувека, почти вся история современной вычислительной техники), OS/2 (эта операционная система по сути крутится внутри всех современных Windows), Visual Age (интегрированные среды разработки с существенной визуальной составляющей).
Как известно, многие компании не выжимают все соки из своих сотрудников, а позволяют им уделять часть рабочего времени своим проектом. Такой подход позволяет не только укрепить лояльность персонала к компании, но и повысить отдачу от людей. Ведь если ты тратишь время и ресурсы на что-то свое причем на работе, то сама работа превращается в хобби. А у сотрудника появляется дополнительная мотивация к более продуктивному и творческому труду в том числе и по основному своему виду деятельности. Вот именно оттуда, из хобби на работе, и вылезла Node-RED. Сваяли ее те же ребята, что работали над IBM Watson (программно-аппаратная система искусственного интеллекта). А почему назвали Node-RED? Во-первых, в основе самой системы лежит фреймворк Node.js. Собственно, это первая часть наименования, а RED — да ну просто это круто. Code Red — круто, поэтому и Node-RED это так же очень круто.
Так что же такое Node-RED?
Поточно-ориентированные программные системы далеко не новы. Их концепции были сформулированы еще в 70-х годах прошлого века. Постепенно теоретический базис развивался, креп и на свет начали появляться различные системы, которые так или иначе реализуют систему с модулями, связанными между собой неким интерфейсом. Из подобного можно вспомнить Yahoo Pipes или Apache NiFi, разнообразные системы класса BPM или даже банальнейший IFFTT. В общем концепций и реализаций много, но почему тогда именно Node-RED так захватила мое внимание?
Node-RED позиционируется авторами, как некая система, призванная объединять разрозненные аппаратные и программные системы. В основе работы системы лежит событие, которое генерируется либо внешним источником, либо таймером (процессом) внутри Node-RED. Событие это не просто импульс, дающий толчок к какому-либо действию. Событие еще несет определенную смысловую нагрузку и может содержать множество полезной информации, ведь событие в Node-RED есть обычный объект языка JavaScript. Этот объект, содержит стандартный набор полей, но может расширяться и модифицироваться (можно менять структуру и значения) посредством обработки внутри Node-RED. Ну а там, где есть JavaScript, там есть невероятная гибкость и свобода в разработке. Язык, появившийся как средство автоматизации на стороне пользовательского браузера, благодаря своей простоте и гибкости, вырвался на широкий простор и применяется все чаще и больше. А там, где JavaScript, там соответственно и JSON. И все это с Node.js. Выглядит заманчиво, не так ли?
Node_RED: редактирование свойств узла Inject
В действительности все оказалось еще лучше. Node-RED это бесплатный инструмент позволяющий автоматизировать связи между всем, что только может автоматизироваться и подключено к сети. В базовой поставке имеется необходимый набор для старта. Тут есть интерфейсы для подключения к MQTT, наборы логики, парсеры форматов, вывод в консоль и блок произвольной функции.
Но если этого мало, то благодаря поддержке многочисленного комьюнити можно организовать связь не только с MQTT, но и со многими другими системами. Так при помощи Node-RED и плагинов можно подключиться к Telegram, Google Hangouts, WhatsApp, оборудованию работающему с eWlink и даже Yandex Алисе (правда через задницу, но иначе с Алисой никак), различным базам данных и внешним веб-сайтам. При помощи Node-RED можно написать своих ботов, что совсем не плохо, заполнять сведениями хранилища данных, информировать пользователей о происходящих событиях, работать как система алертинга. Но если и этого недостаточно, то никто не запрещает написать свой плагин и использовать связь со своей специфической железкой по своему собственному протоколу.
Node-RED как система работает в основном в средах Linux. Присутствуют как готовые репозитории, так и наличествует возможность собственноручной компиляции. Не обойдены стороной и основные облачные платформы: IBM Cloud, AWS Cloud, Azure. При желании систему можно установить и на Android, потребление мизерное, ресурсы не кушаются. Вот только целесообразность такого действия под вопросом. А что же до Windows? На Windows последних редакцией Node-RED работает не хуже, чем на родных операционках, только для запуска потребуется подсистема Linux для Windows. Но это все равно лучше, чем ничего.
Особенностью реализации задумок на Node-RED кроется в том, что, работая через обычный браузер, пользователь может создавать весьма сложные цепочки действий и без единой строчки кода. Если исхитриться, что для любой обработки может хватить штатных узлов Node-RED. Но если уж требуется что-то, что легче реализовать через программный код, то и такую вещь можно реализовать, использовав специальный узел, в котором вводится код на JavaScript. И бояться ошибиться не стоит, средства отладки дадут исчерпывающую информацию о том, что пошло не так.
Итак, вроде бы ясно, что Node-RED — инструмент с одной стороны простой, с другой очень гибкий и позволяющий реализовать практически все хотелки по связи систем и без траты лишних мозговых калорий. Настало время копнуть немного глубже и познакомиться с Node-RED в деталях.
Работаем с Node-RED
Итак, предположим, что с невероятными усилиями вы прочитали инструкцию по установке Node-RED, запустили браузер и теперь с вожделением смотрите на экран, стараясь понять с чего бы начать.
Node-RED: добавили второй узел и соединили их связью
Потоки для событий формируются визуальным способом на «холсте» потока. Холст выглядит как тетрадный лист в клеточку. Таких листов в одной системе может быть много. Достаточно только добавить новый нажав плюсик в заголовке листа. Если нажать два раза на имя холста, то откроются его свойства, где его можно переименовать, либо удалить.
Чтобы начать строить поток, необходимо перетаскивать ноды (узлы) из палитры прямо на холст. Попробуем перетащить ноду inject. Нода генерирует событие, когда на нее нажимаешь мышкой, поэтому она лучше других подходит для опытов. После переноса новой ноды или при изменении связей между нодами, либо их местоположения на холсте, они помечаются синим кружочком. Синий кружок означает, что состояние изменилось и необходимо произвести публикацию изменений на сервер.
Но, прежде чем публиковать изменения, нам следует добавить еще один элемент на холст потока. Если inject это источник события, но нам нужен получатель. В качестве получателя возьмем ноду debug. Поместим ее на холст и соединим обе ноды связью. Для этого достаточно мышкой потянуть серый кружок от одной ноды к другой. Если нода может только принимать события, то кружок у нее будет только слева, если только отправлять, то кружок будет только справа. А ноды способные и генерировать события и принимать их имею кружки с обеих сторон. И сам поток на холсте «рисуется» слева-направо.
Если нажать одинарным щелчком на любой узел, то в правой панели система выдаст описание ноды и ее характеристики. А двойной щелчок на ноде откроет ее свойства, где и можно произвести все необходимые настройки. Попробуем открыть свойства узла inject на холсте.
Вкладка свойств индивидуальна для нод различных их видов. У каких-то много свойств, у каких-то мало. У узла inject можно задать тип смыслового поля объекта. По умолчанию это временная метка, создаваемая системой в момент возникновения события. Но можно выбрать и другие параметры. Поле Topic отвечает за дополнительную характеризацию события. Если в одном потоке и по одному маршруту будет бежать множество различных событий, то вылавливать посланные именно от этого inject можно как раз по полю Topic. Ну и далее есть возможность ввести повтор автоматической генерации событий узлом, а также его имя, что будет отображаться на холсте.
Прежде чем делать публикацию модифицируем и узел debug. В поле Output вместо msg выберем complete msg object, дабы иметь возможность посмотреть весь объект события, что был сгенерирован узлом inject. Кстати, у ноды debug справа есть зеленый флажок, если он закрашен, значит это активная нода и она будет выводить сообщения.
Наконец-то настало время опубликовать полученный поток. В Node-RED присутствует три способа публикации холстов:
Если объем холста небольшой, то можно публиковать все скопом. А вот в более нагруженных системах, где не следует прерывать исполнение уже работающих потоков лучше воспользоваться другими опциями публикации.
Node-RED: вывод в отладочную консоль
Итак, опубликовав холст, переключаемся на вкладку отладчика (нажать на значок жучка справа) и нажимаем на синюю кнопку узла inject. По нашему нажатию сгенерировалось событие, которое было передано узлу debug, который, в свою очередь, вывел его на экран на вкладке отладки. А поскольку мы выбрали вывод всего сообщения события, то нам и вывелся объект. Его можно развернуть и прочитать все отдельные свойства, в данном случае их всего три:
Вот таким вот незамысловатым образом и работает Node-RED. Плодить связи, добавлять узлы, ставить логические условия, изменять события прямо на лету, все это делается посредством палитры узлов, их параметров и связей.
Кстати, если выделять мышкой конкретный вывод во вкладке debug, то на холсте будет подсвечиваться тот самый узел, что вывел эту конкретную запись. Там же, на вкладке debug можно фильтровать сообщения и ловить только то, что интересует разработчика в данный конкретный момент.
Вот, собственно, так и работает вся система.
Углубляемся в Node-RED
Node-RED штука обладающая невероятной мощью, только вот разобраться с ней не всегда просто с первого раза, тем более быстро постичь всю её силу. По этой банальнейшей причине приведу некоторые рекомендации и разъяснения по работе с Node-RED.
Плагины
Если вам, по какой-то причине, не хватает функций узлов, что уже присутствуют в поставке Node-RED, то их количество можно существенно преумножить.
Node-RED: вызов управления палитрой
Новые наборы узлов добавляются в систему через пункт системного меню Manage palette, что скрывается в «гамбургере» в правом верхнем углу. В Manage palette можно увидеть, какие плагины узлов уже установлены в системе, при необходимости их можно отключить или удалить из системы.
Установка нод осуществляется с предварительным поиском нужных узлов через поиск, и только потом появится возможность их инсталляции. Перед установкой система дополнительно поинтересуется нашим желанием получить дополнительную информацию о плагине и нодах. И при согласии переместит нас на страничку плагина на сайте Node-RED.
Альтернативным способом установки может быть поиск плагинов на сайте Node-RED, но он мне показался менее информативным и удобным, нежели поиск и установка непосредственно из системы. А также установка через обработчик пакетных файлов NPM.
Dashboard
Node-RED это не только ценный мех, тьфу. Это не только система для связи между отдельными устройствами и функциями.
Node-RED: пример вывода дэшборда
Node-RED это еще и простенький визуализатор для обрабатываемых данных. Да, он не такой мощный, как например у Grafana, но в некоторых случаях его может быть вполне достаточно для построения простой панели управления, без каких-либо изысков, но работающей прямо из коробки. Важно так же, что весь вывод на панель управления осуществляется все теми же узлами из стандартной палитры, и в точно такой же модели поточной обработки данных.
Импорт-экспорт
Иногда, читая какое-нибудь обсуждение вопросов связанных с Node-RED, натыкаешься на примеры, что приводят пользователи, выраженные не в красивом графическом выражении узлов и связей между ними, а в виде непонятного набора циферок и буковок. Что с этим делать — непонятно втройне.
Пример экспорта нескольких нод в виде текста
Оказывается, что таким образом можно обмениваться настройками узлов и даже потоками. Передать в графической форме все настройки на холсте потока просто невозможно, часть из них кроется в дебрях подменю, если еще не дальше. Поэтому был придуман способ по обмену подобными сведениями между пользователями.
Источники данных
Как мы уже выяснили, источниками данных для обработки в Node-RED может выступать все, что способно посылать хоть какие-то данные. Но эти источники данных должны быть оформлены должны образом, так как зачастую требуется указать конкретные адреса, логины и пароли или нечто-то подобное.
Данные сведения доступны все с того же главного экрана Node-RED. Необходимо только перейти в Configuration nodes (шестеренка). На этой вкладке указываются все источники данных, какие вообще заведены в системе. Так же есть возможность просмотреть их в разрезе отдельных палитр потоков, а можно просто выделить неиспользуемые источники.
Управление источниками возможно по двойному щелчку на пиктограмме источника. Там же, в меню источник можно удалить. Удалять следует только те источники, что не используются в потоках системы. Иначе они начнут работать непредсказуемо.
Все события между узлами в потоках Node-RED передаются посредством объектов сообщений. Такой объект прямо и называется msg. У каждого сообщения есть несколько полей, которые возникают вместе с возникновением самого сообщения.
Первое поле это _msgid — уникальный идентификатор сообщения в системе. Еще одно поле — payload — обычно сюда заносится смысловая составляющая сообщения. Вообще, поскольку в основе системы обработки данных в Node-RED лежит JavaScript, язык невероятной гибкости, то с сообщениями можно обходиться вполне фривольно. Можно добавлять новые поля, можно изменять их значения, можно даже превращать поля в объекты. Например, в ходе обработки потока сообщение может претерпеть изменения из msg.payload в msg.payload.items[]. Т.е. произошла конвертация одиночного свойства в объект, который может содержать как поля, так и другие объекты.
Вместо заключения
Первоначально Node-RED может отпугнуть нерадивого пользователя, как она, например, отпугнула и меня. Мне очень не хотелось тратить свое время на изучение какой-то новой и непонятной системы, которую нужно куда-то устанавливать, потом как-то настраивать, а затем непонятным образом использовать. В реальности все оказалось куда проще. Установка Node-RED вместе с конфигурированием заняла вполовину меньше времени, чем установка того же Mosquitto. А для того, чтобы разобраться с системой при наличии хоть какой-то задачи, ушла всего пара вечеров, половина которых была потрачена на банальное вспоминание «как же писать на JavaScript», хотя и без него вполне можно было бы и обойтись.
И чуть позже первоначальное нежелание связываться с новой системой полностью пропало. А на его место пришел восторг от того, что при помощи Node-RED можно решить уйму вопросов, связанных с межсистемной автоматизацией, и с такой легкостью, что задаешься вопросом — ребята, а где вы были раньше? Почему нельзя было попасться мне на глаза?
Опубликовано 05.07.2020 автором kvv в следующих категориях:
Soft не только лишь все статья