Как установить node red на windows

Обновлено: 06.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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


В этой статье я хочу разобрать один из самых популярных опенсорс-инструментов, 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.

Исходный код проекта был открыт в сентябре 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, поэтому пусть у машины будет автоматически выделенный публичный адрес.

Для подключения к машине по SSH необходимо указать публичный ключ. Сгенерируем SSH-ключи командой ssh-keygen -t rsa -b 2048 в терминале, потребуется придумать ключевую фразу.

Теперь требуемый ключ хранится в

/.ssh/is_rsa.pub , копируем его в поле SSH-ключ и нажимаем Создать ВМ.

Сеть и SSH

Подключение к ВМ

После завершения подготовки ВМ в сервисе Compute Cloud появится наша машина с заполненным полем Публичный IPv4.

Также нам необходим логин, который мы указывали на предыдущем шаге в разделе Доступ. Выполним подключение к машине по SSH командой $ ssh <login>@<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:

Запуск Node-RED

Подготовка и настройка сервиса 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 для обработки данных, проходящих через этот узел.

devicemqtt-out-узел с настраиваемым MQTT-подключением, предназначен для публикации данных в топик.

Device flow

Два раза кликаем по узлу device.

Нам необходимо заменить <id_реестра> на ID нашего реестра в IoT Core. Далее редактируем данные в Server. Во вкладке Security указываем username — это ID созданного нами устройства, а password — пароль, придуманный на этапе создания устройства. Затем нажимаем Update, далее Done.

Протестируем соединение: в правом верхнем углу нажмем Deploy. Под узлом device появится подпись connected.

Flow получился намного интереснее предыдущего, видны новые узлы.

Parsing JSON и JSON возвращают полученные измерения уже в виде отдельных объектов, которые далее передаются узлам, отвечающим за элементы Dashboard.

App Flow

Теперь необходимо настроить узел registry. Аналогично первому flow записываем наш ID реестра и переходим в настройки сервера iot-core-subscription.

Во вкладке Security добавляем данные реестра, сохраняем изменения и нажимаем Deploy.

Если все поля заполнены верно, то после развертывания под узлом registry тоже появится подпись connected.

Последння вкладка в окне справа (с иконкой столбчатой диаграммы) отвечает за Dashboard. Перейти в Dashboard можно по кнопке:

Ссылка на Dashboard

Каждые три секунды устройство из flow testing connection генерирует данные, отправляет их в топик нашего реестра, а flow Smart Utilities, в свою очередь, подписывается на этот топик и обновляет Dashboard в соответствии с данными, приходящими из IoT Core.

Dashboard

В качестве результатов и краткого заключения

Я умышленно не стал слишком детально описывать, как создается само приложение, поскольку есть исходник потока в JSON. Да и сама идея проекта Node-RED предполагает, что любой желающий может «взглянуть на поток и понять, что он делает, без необходимости разбираться в отдельных строках кода на каждом узле». Но в код лучше заглянуть.

Ссылки на полезные материалы

Отдельное спасибо за помощь при создании статьи:


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

В этой статье я опишу установку и настройку Node-RED на Raspberry Pi deCONZ и интеграцию ZigBee устройств в HomeKit.

Установка deCONZ

Я использую официальный образ deCONZ без HomeBridge (Raspbian Buster Desktop). HomeBridge лучше установить отдельно. Например так .

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

Подключаемся к малине по SSH и устанавливаем Node-RED следующей командой:

Соглашаемся два раза, нажав ''Y''.

После успешной установки Node-RED, запускаем веб-интерфейс, вбив в браузере: IP малины:1880.

o01-1.jpg

Слева видим список всех доступных нам нод. В правом верхнем углу - кнопку Deploy (она нужна, чтобы задействовать все изменения, которые мы делаем). Чуть правее от нее - 3 полоски (это кнопка меню).

Установка необходимых нам contributions:

В данной статье мы будем использовать всего несколько нод. Существует два способа их установки:

  • Через терминал
  • Через веб-интерфейс Node-RED

1600x_image.jpg?1569078610

Установим контрибьюшн для связи с HomeKit через веб-интерфейс. Для этого нужно перейти:

Меню->Manage palette ->install, ввести в строке поиска node-red-contrib-homekit-bridged и нажать install.

Теперь в нодах (раздел advanced) появилась нода HomeKit.

Также установим контрибьюшн для связи deCONZ и Node-RED. Эти ноды существенно упростили добавление устройств в Node-RED и HomeKit . Огромное спасибо @popov1988 за создание этих нод.

Вводим в строке поиска node-red-contrib-deconz и устанавливаем.

Теперь перезагрузим Node-RED и почистим кэш, выполнив следующие команды:

k01-1.jpg

Как видим, у нас появились новые ноды:

  • homekit - для проброса устройств в HomeKit;
  • battery - для передачи уровня заряда батареи;
  • in - входящая нода от deCONZ;
  • get - получить текущий статус устройства;
  • event - в ыводит все события, которые приходят от deCONZ;
  • out - вывод в deCONZ.

Рассмотрим добавление на примере геркона от Aqara и проводного одноклавишного выключателя без нулевой линии Aqara, которые у нас уже добавлены в deCONZ. В процессе добавления первого устройства, нам потребуется добавить сервер deCONZ и мост HomeKit, но делается это единоразово.

Перетягиваем ноды: in и homekit на белое поле нашего флоу. Соединяем их ниточкой (в ноде in - с нижнего выхода).

В ноде in имеется 2 выхода(серые маленькие квадратики):

  • Верхний - для автоматизаций в Node-RED.
  • Нижний - для HomeKit.

1600x_image.jpg?1569087604

  • Дважды нажимаем на ноду in, нажимаем на карандашик.
  • В новой вкладке браузера открываем deCONZ->Settings->Gataway->Advanced и нажимаем на кнопку Authenticate app.
  • Возвращаемся в Node-RED и жмем кнопку "Получить настройки". Можно поменять IP адрес на локальный 127.0.0.1
  • Если по какой-то причине настройки сервера не выставились автоматически, то придется это сделать вручную.
  • Название сервера можно написать любое.
  • Нажимаем кнопку Add, Done.
  • Нажимаем кнопку Deploy в правом верхнем углу.
  • Сервер настроен.

В ноде in пишем любое название, выбираем созданный нами сервер и выбираем нужное нам устройство.

1600x_image.jpg?1569088596

Дважды нажимаем на ноду homekit, нажимаем на карандашик напротив строки Bridge.

Pin Code и Name пишем любые (Пин код должен быть строго в таком же формате ***-**-***).

Нажимаем кнопку Add, Confim. Мост настроен.

В строке "Bridge" ноды homekit выбираем созданный нами мост, в строке "Service" выбираем тип нашего устройства (в данном примере - это contact sensor), в строке "Name" - имя устройства в HomeKit.

Нажимаем кнопку Deploy в правом верхнем углу.

Теперь мы можем добавить мост в приложении Дом на устройстве Apple. Вместе с мостом добавится и наш датчик касания.

o01-1.jpg

У датчика касания есть батарейка, поэтому нам нужно добавить ноду батареи. Для этого перетягиваем ноду battery и homekit.

В ноде battery выбираем наш датчик и пишем любое имя в строке "название". Нажимаем Done.

В ноде homekit в строке "Service Hierarchy" выбираем Linked (т.к батарея у нас это дочерний сервис). В строке "Parent service" выбираем наше родительское устройство (т.е сам датчик касания). В строке "Service" выбираем BatteryService. Имя выбираем любое.

Возле кнопки Deploy нажимаем на треугольник и выбираем Modified Nodes.

Теперь в HomeKit мы сможем увидеть заряд батареи на нашем датчике касания.

Привет! Рассмотрим установку Node.js на Windows 7 и протестируем его работу.

При попытке установить последнюю версию Node.js на Windows 7, в моем случае v14.15.4 LTS (ссылка), возникает ошибка о том, что приложение поддерживается на Windows 8.1. и выше:

Node.js на Windows 7

Ошибка при установке Node.js на Windows 7

Решение


Node.js v13.14.0

2. Скачиваем версию для вашей операционной системы (у меня ссылка на v13.14.0-x64.msi). Открываем этот файл для установки:


3. В открывшемся окошке подтверждаем свою готовность к установке нажатием кнопки Next:


4. Соглашаемся с условиями лицензионного соглашения, ставим галочку и нажимаем Next:


5. По умолчанию, установка Node.js происходит в папку C: \Program Files\nodejs\ на Вашем компьютере. Поменяйте, при необходимости, и нажимайте Next:




Мои поздравления 🙂 Node.js установлен.

Проверка работы Node.js и npm

Осталось проверить работу Node.js, для этого:

1. Через Пуск открываем стандартную программу Windows Выполнить , если не нашли Командную строку:


1.1. Командой cmd открываем консоль:



3. Дальше командой npm -v проверяем наличие npm. Видим версию, в моем случае 6.14.4

Читайте также: