Node RED что к чему и главное зачем Разбираемся

Node-RED: что к чему и главное зачем. Разбираемся.

node-red editing site

Написать эту статью меня побудил шок от первого знакомства с 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: редактирование свойств узла 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 присутствует три способа публикации холстов:

  • Full — публикуется и перезапускается сразу весь холст.
  • Modified Flows — публикуется сразу целый поток, если хотя бы один из его узлов был модифицирован.
  • Modified Nodes — публикуется только то, что было непосредственно изменено.

Если объем холста небольшой, то можно публиковать все скопом. А вот в более нагруженных системах, где не следует прерывать исполнение уже работающих потоков лучше воспользоваться другими опциями публикации.

ноде рэд, консоль

Node-RED: вывод в отладочную консоль

Итак, опубликовав холст, переключаемся на вкладку отладчика (нажать на значок жучка справа) и нажимаем на синюю кнопку узла inject. По нашему нажатию сгенерировалось событие, которое было передано узлу debug, который, в свою очередь, вывел его на экран на вкладке отладки. А поскольку мы выбрали вывод всего сообщения события, то нам и вывелся объект. Его можно развернуть и прочитать все отдельные свойства, в данном случае их всего три:

  • _msgid — содержит уникальный идентификатор события, генерируется системой.
  • topic — та самая метка, которую мы прописали в параметрах inject.
  • payload — смысловая нагрузка обычно хранится тут. В нашем случае циферки это временная метка.

Вот таким вот незамысловатым образом и работает 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, натыкаешься на примеры, что приводят пользователи, выраженные не в красивом графическом выражении узлов и связей между ними, а в виде непонятного набора циферок и буковок. Что с этим делать — непонятно втройне.

нодред, текст, джесон

Пример экспорта нескольких нод в виде текста

Оказывается, что таким образом можно обмениваться настройками узлов и даже потоками. Передать в графической форме все настройки на холсте потока просто невозможно, часть из них кроется в дебрях подменю, если еще не дальше. Поэтому был придуман способ по обмену подобными сведениями между пользователями.

Если вдруг вы встретили где-то подобный код в формате JSON, то его можно скопировать и вставить в ваш поток через «Гамбургер» — Import. Далее система попросит указать конкретное место, куда будет добавлено вставленное. И можно будет разбираться с примером.

Аналогично все действует и в обратную сторону. Необходимо выделить нужные узлы и через «Гамбургер» — Export произвести на свет JSON набор инструкций выбранных объектов на странице.

Источники данных

Как мы уже выяснили, источниками данных для обработки в Node-RED может выступать все, что способно посылать хоть какие-то данные. Но эти источники данных должны быть оформлены должны образом, так как зачастую требуется указать конкретные адреса, логины и пароли или нечто-то подобное.

Данные сведения доступны все с того же главного экрана Node-RED. Необходимо только перейти в Configuration nodes (шестеренка). На этой вкладке указываются все источники данных, какие вообще заведены в системе. Так же есть возможность просмотреть их в разрезе отдельных палитр потоков, а можно просто выделить неиспользуемые источники.

Управление источниками возможно по двойному щелчку на пиктограмме источника. Там же, в меню источник можно удалить. Удалять следует только те источники, что не используются в потоках системы. Иначе они начнут работать непредсказуемо.

Все события между узлами в потоках Node-RED передаются посредством объектов сообщений. Такой объект прямо и называется msg. У каждого сообщения есть несколько полей, которые возникают вместе с возникновением самого сообщения.

Первое поле это _msgid — уникальный идентификатор сообщения в системе. Еще одно поле — payload — обычно сюда заносится смысловая составляющая сообщения. Вообще, поскольку в основе системы обработки данных в Node-RED лежит JavaScript, язык невероятной гибкости, то с сообщениями можно обходиться вполне фривольно. Можно добавлять новые поля, можно изменять их значения, можно даже превращать поля в объекты. Например, в ходе обработки потока сообщение может претерпеть изменения из msg.payload в msg.payload.items[]. Т.е. произошла конвертация одиночного свойства в объект, который может содержать как поля, так и другие объекты.

При обработке последовательностей сообщений, когда вы намеренно разделяете данные из источника данных в отдельные сообщения, то у сообщения появляется дополнительное свойство .parts. Данный объект, а это объект, так как сам содержит несколько свойств, определяет то, в какой очередности и порядке выстроились сообщения.

Читайте также:  Автосервисы установка сигнализации с автозапуском в Альметьевске

Вместо заключения

Первоначально Node-RED может отпугнуть нерадивого пользователя, как она, например, отпугнула и меня. Мне очень не хотелось тратить свое время на изучение какой-то новой и непонятной системы, которую нужно куда-то устанавливать, потом как-то настраивать, а затем непонятным образом использовать. В реальности все оказалось куда проще. Установка Node-RED вместе с конфигурированием заняла вполовину меньше времени, чем установка того же Mosquitto. А для того, чтобы разобраться с системой при наличии хоть какой-то задачи, ушла всего пара вечеров, половина которых была потрачена на банальное вспоминание «как же писать на JavaScript», хотя и без него вполне можно было бы и обойтись.

И чуть позже первоначальное нежелание связываться с новой системой полностью пропало. А на его место пришел восторг от того, что при помощи Node-RED можно решить уйму вопросов, связанных с межсистемной автоматизацией, и с такой легкостью, что задаешься вопросом — ребята, а где вы были раньше? Почему нельзя было попасться мне на глаза?

Опубликовано 05.07.2020 автором kvv в следующих категориях:
Soft не только лишь все статья

Источник

How to install Node-RED and survive

If this is all new to you, Home Assistant is one of the most flexible and sophisticated open-source smart home platform, and Node-RED is a visual programming tool making rule creation a walk in the park (ish).

Pre-Requisites

  • Install a Home Assistant – Well, the first thing you need to do make sure that you have Home Assistant. If you don’t and keen to try, it would take you 10 minutes using this guide. If you are new to Home Assistant or not the most experienced user, I suggest to install Hass.io. It is a simpler flavour of Home Assistant, which manages updates and add-ons in the easy way.
  • Buy or integrate couple of devices to play way. If you need some inspiration, please use our suggestions on the $250 kit for the smart home beginners, allowing you to create rules and experiment with the seven devices included.

Installing Node-RED

Once you have Home Assistant running, you need to install the a Node-Red. The way to do it mainly depend on the version of the Home Assistant you decided to install.

A) Installing Node-RED for Hass.io

This is the simplest way forward. You need to use a great add-on by Frenck (amazing guy) in the community add-on repository.

  1. Add repository to your Hass.io. It is done on the Hass.io folder, under ADD-ON STORE tab. It would be auto installed for the majority of users, but just paste the url below if it is not the case for you. https://github.com/hassio-addons/repository
  2. Set a password in “Config” section, buy credential_secret , which is used to encrypt sensitive data.
    This is just a “password”, which you should save on a secondary location.
  3. Put true or false under ssl setting depending if you need it. Recommend true if you not sure.
  4. Press Start “Node-RED” add-on.
  5. Check the logs of “Node-RED” to see if everything went well.
  6. Log in with your Home Assistant username/password.
  7. The add-on works straight out the box! No need to configure a server

BOOM, BEAUTIFUL! YES, that is it. Frenck you are a genius!

B) Installing Node-RED with Docker

If you are more ambitious, you might have installed Hassbian or on the generic server using docker. In that case, I recommend you to install Node-red using docker or even better docker-compose method.

docker run -d \ –name=node-red \ –restart=always \ -p 1880:1880 \ -u 1000:1000 \ -v /home/adrian/node-red:/data \ nodered/node-red-docker:v8

Источник

Способы установки Home Assistant

Первая сложность с которой сталкиваются люди при работе с Home Assistant — как его поставить. Есть очень много способов установки системы.

С точки зрения использования системы все способы установки можно разбить на две группы:

  • Где есть супервизор (supervisor)
  • Где нет супервизора

Супервизор — это необязательная часть системы. Можно использовать Home Assistant и без супервизора.

Если есть супервизор, то в Home Assistant появляются дополнительные возможности:

  • Можно «в один клик» устанавливать разные дополнения
  • Появляется простая возможность делать бекапы системы
  • Супервизор проверяет что система работает корректно, например уведомляет если заканчивается место
  • Появляются дополнительные сервисы hassio.*

Есть сайт с официльной статистикой использования Home Assistant — https://analytics.home-assistant.io.

Вот статистика разных типов установок с этого сайта (скриншот сохранен 17 мая 2021 года):

Home Assistant OS — установка на хост

Это официально рекомендованный способ установки. Установка очень быстрая и простая. Устанавливается Home Assistant вместе с супервизором.

Очень часто этот способ используют для того чтобы установить Home Assistant на Raspberry Pi.

Нужно скачать специальный файл. Этот файл — это образ в котором находится не только Home Assistant, но еще и операционная система.

Вот несколько популярных образов:

Полный список всех образов находится на GitHub.

Этот образ нужно залить на sd карту (в случае Raspberry Pi) или на жесткий диск (в случае Nuc).

Для заливки образа на sd карту очень удобно использовать бесплатную программу balenaEtcher (ссылка — https://www.balena.io/etcher/). Есть версии этой программы под Windows, macOS и Linux.

После того как образ залит на носитель, нужно подключить его к компьютеру, включить компьютер и через некоторое время вы получаете работающий Home Assistant.

У этого способа установки есть особенность — вы получаете «черный ящик» Home Assistant полностью работает, но доступ к операционной системе на которой он работает очень ограничен.

Home Assistant OS — установка в виртуальную машину

Официальный способ установки. Устанавливается Home Assistant вместе с супервизором.

С помощью этого способа можно получить работющий Home Assistant на компьютере с Windows, macOs или Linux. На компьютере появляется вирутальная машина в которой работает Home Assistant.

Нужно сказчать файл с образом с GitHub.

А дальше из этого образа нужно создать виртуальную машину. Это можно сделать, например с помощью VirtualBox.

Home Assistant Supervised

Это официальный способ установки. Но разработчики Home Assistant не особо любят его рекомендовать. Устанавливается Home Assistant вместе с супервизором.

Это возможность установить Home Assistant на компьютер с Linux. Этот способ подходит людям кто знает и умеет использовать Linux консоль. При таком способе установки остается полный доступ к операционной системе, но так же появляется Home Assistant с супервизором.

Опасность этого способа установки — нужно очень точно следовать всем рекомендациям. Если что-то сделать не совсем так, то Home Assistant переходит в режим «You are running an unsupported installation.» или даже в «Your installation is running in an unhealthy state», а в этом режиме Home Assistant работает исключительно плохо.

Главное требование — операционная система Linux обязательно должна быть Debian 10 aka Buster. Другие версии Linux официально не поддерживаются. Поддержка отсутствет даже для тех Linux дистрибутивов которые сильно похожи на Debian (например, Rasbperry OS, Ubuntu).

Прямо сейчас этот способ установки работает и на других операционных системах (Rasbperry OS, Ubuntu), но использование этих операционных систем выдает предупреждение «You are running an unsupported installation.» и, возможно, что в будущем это будет выдавать не только предупреждение, но и вызывать какие-то проблемы с работой. Так что скорее всего, если ставить Home Assistant этим способом, то стоит соблюдать все требования, или использовать другой способ установки.

Home Assistant Container

Это официальный способ запуска Home Assistant. При использовании этого способа супервизора нет.

Читайте также:  Как развернуть терминальный сервер на базе Windows Server 2008 R2

Для этого способа нужно чтобы на машине был установлен докер. Этот способ можно использовать на любой операционной системе (Windows, macOS, Linux).

Это просто запуск докер контейнера из официального докерного образа Home Assistant. Можно запускать контейнер как напрямую через docker, можно через docker-compose, а можно использовать какие-то другие способы.

Самый простой способ для запуска HA этим способом — это одна команда:

Home Assistant Core

HassWP

Это неофицильный способ установки. Супервизора тут нет. Это возможность запустить Home Assistant на Windows машине очень быстро и просто, и сразу с некоторым наборо предустановленных дополенний.

Источник

node-red-contrib-home-assistant-websocket 0.33.1

BuyMeCoffee

Various nodes to assist in setting up automation using Node-RED communicating with Home Assistant.

Getting Started

Documentation can be found here.

Prerequisites

Have Node-RED installed and working, if you need to install Node-RED see here.

Installation

Install via Node-RED Manage Palette

Install via npm

The Community add-on ships with this node right out of the box.

Under the server node config just check the checkbox for I use the Home Assistant Add-on

Nodes

The installed nodes have more detailed information in the Node-RED info pane shown when the node is selected. Below is a quick summary

All Events

Listens for all types of events from home assistant with the ability to filter by event type

State Changed Event

Listens for only state_changed events from home assistant

State Trigger

Much like the State Changed Node however provides some advanced functionality around common automation use cases.

Poll State

Outputs the state of an entity at regular intervals, optionally also at startup and every time the entity changes if desired

Webhook

Need Custom Integration installed in Home Assistant for node to function

Outputs the data received from the created webhook in Home Assistant

Call Service

Sends a request to home assistant for any domain and service available ( light/turn_on , input_select/select_option , etc..)

Entity

Need Custom Integration installed in Home Assistant for node to function

Creates an entity in Home Assistant which can be manipulated from this node

Fire Event

Fire an event on the event bus

Current State

Fetches the last known state for any entity on input

Get Entities

Get entities based on search criteria with 3 different output options

Get History

Fetches HomeAssistant history on input

Get Template

Allows rendering of templates on input

Wait Until

When an input is received the node will wait until the condition is met or the timeout occurs then will pass on the last received message

Outputs when one of the configured entities enter or leaves one of the defined zones.

Contribute

Contributors

Node Info

Downloads

Nodes

Keywords

  • node-red
  • home-assistant
  • home assistant
  • home automation
  • websocket

Maintainers

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.

Источник



Установка Node-RED

Node-RED — это flow-based инструмент, созданный для визуального программирования, разработанный IBM для совмещения вместе: устройств, API, онлайн-сервисов и IoT, используемый также совместно с известному нами IBM Watson.

Многие задаются вопросом: зачем вообще использовать Node-red и Home Assistant вместе, ведь они по факту оба являются центрами автоматизации со своими отдельными интерфейсами и зачастую замещают друг друга во многом.

Но как и во всем (вспоминается самый простой пример: совместное использование Apache и NGINX), хотя у обоих функциональностей есть что-то схожее, но у них есть также и сильные/слабые стороны.

Так например: сильная сторона Home Assistant в огромном сообществе, количестве примеров и практически полнейшей всеядности (я не встречал еще чего-то, что нельзя было бы «затащить» в Home Assistant.

При этом слабые стороны Home Assistant, которые всем известны: автоматизации на YAML (ох, без кучи примеров и бест-кейсов из интернета даже разбираться не стоит) и ужасный проброс в HomeKit — прекрасно покрываются Node-red, который как будто создан для написания автоматизаций, и т.к. использует более продвинутый HAP-nodeJS в отличие от используемого HAP-python в Home Assistant, намного стабильнее работает с HomeKit.

Кроме этого, используя Node-red для отправки устройств в HomeKit, у нас появляется возможность самим создавать устройства и настраивать их под себя.

  1. У вас есть увлажнитель/очиститель, который в Home Assistant может быть проброшен в HomeKit как вентилятор. С Node-red вы можете пробросить любые параметры увлажнителя в HomeKit как вам угодно.
  2. Или у вас есть датчик PM2.5, датчик CO2, датчик еще чего-то. Всё это из Home Assistant будет уходить отдельными датчиками. Зачем? Когда через Node-red вы сможете создать один единственный датчик «качество воздуха» и отслеживать все эти характеристики в нем.
  3. Или у вашего очистителя/увлажнителя и тому подобное есть какой-то параметр, который не пробрасывается по-умолчанию в HomeKit. Не проблема, пробросьте его сами отдельно или добавьте к какому-то уже проброшенному устройству.

Вот такие поверхностные примеры — и даже они заставляют задуматься о переезде с «нативного» HomeKit от Home Assistant на Node-red.

Установка Node-RED

Благодаря тому, что Node-red не совсем opensource продукт, то его установка на наш Raspberry Pi займет буквально несколько минут и потребует всего двух команд: первой мы его устанавливаем, второй добавляем в автозапуск.

    Соответственно, для установки Node-RED вам необходимо вбить данную команду

Отмечу также, что закрыв этот процесс (CTRL+C) node-red не погасится, как это обычно бывает с другими службами. Очень удобно.
Ну и также несколько команд для запуска логов и остановки вам в помощь:

Подключение Home Assistant

После успешной установки Node-RED нам необходимо связать две системы.

  1. Заходим в интерфейс Node-red
  2. Открываем меню (справа вверху)
  3. Выбираем пункт Manage Palette
  4. Переходим на вкладку Install
  5. Вбиваем в поиск node-red-contrib-home-assistant-websocket
  6. Нажимаем на кнопку установить

После этого ждем установки данного модуля, для надежности в терминале можно открыть лог node-red для того, чтобы контролировать процесс. Пока наш новый модуль устанавливается перейдем к Home Assistant.

  1. Заходим в интерфейс Home Assistant http://yourip:8123/
  2. Нажимаем на букву около надписи Home Assistant в левом верхнем углу («буква» означает первый символ имени вашего профиля — по факту нажав на нее мы переходим в информацию о профиле)
  3. Проматываем в самый низ, доходим до блока «долгосрочные токены» и нажимаем на «Создать токен»
  4. Задаем название, допустим «node-red» и нажимаем ОК.
  5. После этого нам отобразится наш токен — копируем его в надежное место. Он пригодится нам дальше.

Возвращаемся обратно в Node-RED и заканчиваем настройку Home Assistant модуля.

  1. Слева, в колонке со всеми блоками, находим раздел «Home Assistant» — скорее всего он будет в самом низу
  2. Переносим блок «events:all» на пустой лист (обычным drag-n-drop) и открываем его двойным щелчком мыши
  3. Нажимаем на «карандашик» около Server, тем самым переходим в конфигурацию модуля
  4. И заполняем информацию следующим образом (в поле Token вставляем полученный нами ранее токен)
  5. Нажимаем на Update и закрываем все окна
  6. После чего сохраняем изменения в Node-RED нажимая кнопку Deploy в верхнем правом углу и для надежности перезагружаем Node-RED, выполнив команду

После чего обновляем страницу с Node-RED и довольствуемся тем, что теперь все события из Home Assistant будут попадать в Node-RED, а значит теперь мы сможем воспользоваться полностью его функционалом.

Источник