|
|
(не показана 101 промежуточная версия 7 участников) |
Строка 1: |
Строка 1: |
| <languages/><translate>
| | {{DISPLAYTITLE:Wiren Board 6: Node-RED}} |
| <!--T:19-->
| | [[Файл:Node-red.PNG|500px|thumb|right| Node-RED на WB6]] |
| {{DISPLAYTITLE:Установка Node-RED на контроллер Wiren Board}} | | [[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]] |
| [[Файл:Node-red.PNG|500px|thumb|right| Node-RED на контроллере Wiren Board]] | |
|
| |
|
| == Описание == <!--T:20--> | | == Описание == |
| {{YouTube
| | Node-RED — это инструмент визуального программирования. Работает на платформе Node.js. |
| |link= https://youtu.be/cKQmU4LZo4c
| |
| |text= Видеоурок по Node-RED на Wiren Board от SetPoint
| |
| }}
| |
| Node-RED — это инструмент визуального программирования, основанный на Node.js и который разрабатывается и поддерживается открытым сообществом. | |
|
| |
|
| <!--T:21-->
| | Более подробное описание, инструкции и примеры использования можно найти на сайте [https://nodered.org/ nodered.org] |
| Подробное описание, инструкции и примеры использования можно найти на сайте [https://nodered.org/ nodered.org], а поддержку сообщества в телеграм-канале [https://t.me/SprutAI_NodeRED Node-RED].
| |
|
| |
|
| <!--T:22-->
| | == Установка == |
| {{Wbincludes:Installing Software In Console}}
| | Для установки Node-RED на Wiren board 6 подключитесь к контроллеру по [[SSH]] и введите в консоль несколько команд. |
|
| |
|
| == Установка == <!--T:23-->
| | Настраиваем репозиторий Node JS: |
|
| |
|
| {{Wbincludes:Installing Software In Console Catalog And Update}}
| | <syntaxhighlight lang="bash"> |
| | curl -sL https://deb.nodesource.com/setup_12.x | bash - |
| | </syntaxhighlight> |
|
| |
|
| {{Wbincludes:Installing Software In Console}}
| | Устанавливаем необходимые компоненты: |
|
| |
|
| <!--T:24-->
| |
| Установите необходимые компоненты:
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt update && apt install -y nodejs git make g++ gcc build-essential
| | apt install -y nodejs git make g++ gcc build-essential |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| <!--T:25-->
| | Запускаем установку Node-RED: |
| Запустите установку Node-RED:
| | |
| :<syntaxhighlight lang="bash">
| | <syntaxhighlight lang="bash"> |
| npm install -g --unsafe-perm node-red | | npm install -g --unsafe-perm node-red |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| <!--T:26-->
| | == Создание Сервиса == |
| Если потребуется обновить версию Node-RED, выполните команду установки ещё раз.
| |
|
| |
|
| В релизах wb-2207 и старее устаревшая версия NodeJS, поэтому свежий Node-RED можно поставить только в docker — [[Node-RED_docker|инструкция по установке Node-RED в docker]].
| |
| Также в docker следует устанавливать если требуется версия более новая чем из пакетов.
| |
|
| |
| == Создание сервиса == <!--T:27-->
| |
|
| |
| <!--T:28-->
| |
| Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>: | | Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>: |
|
| |
|
| <!--T:29-->
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| nano /etc/systemd/system/nodered.service | | nano /etc/systemd/system/nodered.service |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| <!--T:30-->
| |
| Затем вставьте в этот файл строки: | | Затем вставьте в этот файл строки: |
| <pre> | | <pre> |
Строка 58: |
Строка 43: |
| Wants=network.target | | Wants=network.target |
|
| |
|
| <!--T:31-->
| |
| [Service] | | [Service] |
| Type=simple | | Type=simple |
Строка 65: |
Строка 49: |
| WorkingDirectory=/home | | WorkingDirectory=/home |
|
| |
|
| <!--T:32-->
| |
| Nice=5 | | Nice=5 |
| Environment="NODE_OPTIONS=--max_old_space_size=256" | | Environment="NODE_OPTIONS=--max_old_space_size=256" |
Строка 73: |
Строка 56: |
| SyslogIdentifier=Node-RED | | SyslogIdentifier=Node-RED |
|
| |
|
| <!--T:33-->
| |
| [Install] | | [Install] |
| WantedBy=multi-user.target | | WantedBy=multi-user.target |
| </pre> | | </pre> |
|
| |
|
| <!--T:34-->
| | Сохраните изменения и закройте файл. Теперь для включения сервиса нужно ввести команду: |
| Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой: | |
|
| |
|
| <!--T:35-->
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| systemctl enable nodered && systemctl start nodered | | systemctl enable nodered.service |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| <!--T:36-->
| | == Запуск == |
| Проверьте статус сервиса командой, в выводе должна быть строчка <code>Active: active (running)</code>:
| | После создания и настройки сервиса nodered его нужно запустить, для этого выполните команду: |
| <syntaxhighlight lang="console"> | | <syntaxhighlight lang="bash"> |
| # systemctl status nodered
| | service nodered start |
| ● nodered.service - Node-RED graphical event wiring tool
| |
| Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
| |
| Active: active (running) since Fri 2021-12-03 06:32:25 UTC; 24s ago
| |
| Main PID: 2757 (node)
| |
| CGroup: /system.slice/nodered.service
| |
| └─2757 node /usr/bin/node-red --max_old_space_size=256
| |
| | |
| <!--T:37-->
| |
| Dec 03 06:32:25 wirenboard-AWQBNTYP systemd[1]: Started Node-RED graphical event wiring tool.
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info]
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: Welcome to Node-RED
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: ===================
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Node-RED version: v2.1.4
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Node.js version: v12.19.0
| |
| Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Linux 5.10.35-wb6 arm LE
| |
| Dec 03 06:32:41 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:41 - [info] Loading palette nodes
| |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
|
| == Удаление == <!--T:38-->
| | ==Веб-интерфейс Node-Red== |
| Если вам больше не нужен Node-RED, то его можно удалить:
| |
| # Остановите, отключите и удалите сервис:
| |
| #:<syntaxhighlight lang="bash">
| |
| systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
| |
| </syntaxhighlight>
| |
| # Удалите сам Node-RED:
| |
| #:<syntaxhighlight lang="bash">
| |
| npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
| |
| </syntaxhighlight>
| |
| | |
| <!--T:39-->
| |
| Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
| |
| :<syntaxhighlight lang="bash">
| |
| apt remove nodejs
| |
| </syntaxhighlight>
| |
| | |
| ==Веб-интерфейс Node-RED== <!--T:40--> | |
| После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. | | После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. |
| Например: http://192.168.42.1:1880 | | Например: http://192.168.42.1:1880 |
|
| |
|
| <!--T:41-->
| |
| Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org] | | Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org] |
|
| |
|
| == Ноды ''mqtt in'' и ''mqtt out'' (рекомендуется) == <!--T:49--> | | == WB Nodes == |
| === Настройка подключения ===
| | Для упрощения взаимодействия Node-RED с WB пользователь [https://support.wirenboard.com/t/node-red-contrib-wirenboard/2019 Andrej_Popov] написал модуль <code>node-red-contrib-wirenboard</code>. |
| [[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
| |
| Для работы по MQTT используются ноды '''mqtt in''' и '''mqtt out'''. Также вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].
| |
| | |
| <!--T:50-->
| |
| Для настройки MQTT-соединения в Node-RED выполните следующие действия: | |
| #Перетащите ноду '''mqtt in''' в рабочую область.
| |
| #Войдите в конфигурацию ноды и нажмите на '''Карандаш''' напротив поля '''Server'''.
| |
| #На вкладке '''Connecting''' задайте адрес брокера и номер порта.
| |
| #:В поле '''Name''' введите любое имя сервера.
| |
| #:На вкладке '''Security''' можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
| |
| #После заполнения всех полей нажмите кнопку '''Update'''. Созданный брокер теперь можно использовать для настройки всех подключений.
| |
| #Выберите созданные брокер из списка в поле '''Server'''.
| |
| #Введите адрес mqtt-топика в поле '''Topic'''.
| |
| #Нажмите кнопку '''Done'''.
| |
| | |
| <!--T:51-->
| |
| По такому же принципу настраивается нода '''mqtt out'''.
| |
| <gallery mode="packed" heights="150px" caption="Настройка MQTT-брокера (Server)>
| |
| Image: NodeRed_mqtt2.jpg | Вкладка ''Connecting''
| |
| Image: NodeRed_mqtt3.jpg | Вкладка ''Security''
| |
| </gallery>
| |
| | |
| === Отправка команд === <!--T:52-->
| |
| Для отправки команды контроллеру по MQTT используется нода '''mqtt out'''. При этом в поле '''Topic''' указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды '''mqtt out''' нужно написать <code>/on</code>, иначе параметр в топик не запишется. Например, <code>/devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on</code>. Подробнее читайте на странице [[MQTT | MQTT]].
| |
| <gallery mode="packed" heights="150px" caption="Настройка нод для работы с MQTT">
| |
| Image: NodeRed_mqtt4.jpg | Пример настройки ноды '''mqtt in'''
| |
| Image: mqtt_out_no.jpg | Пример настройки ноды '''mqtt out'''
| |
| Image: NodeRed_mqtt1.jpg | Обмен данными через MQTT в Node-Red
| |
| </gallery>
| |
| Для отправки параметра в ноду '''mqtt out''' можно использовать ноду '''inject'''.
| |
| #Перетащите ноду '''inject''' в рабочую область.
| |
| #Подключите ее ко входу ноды '''mqtt out'''.
| |
| #Зайдите в настройки ноды '''inject''' и задайте ''Имя'' ноды, ''Тип переменной'' и ее ''Значение''. Нажмите кнопку '''Done'''.
| |
| <gallery mode="packed" heights="130px">
| |
| Image: Inject1.jpg | Пример настроек ноды '''inject''' для управления дискретным параметром
| |
| Image: Inject2.jpg | Поле настройки периодов повторения отправки ноды '''inject'''
| |
| </gallery>
| |
| <gallery mode="packed" heights="100px">
| |
| Image: Node_inject.jpg | Пример использования ноды '''inject'''
| |
| </gallery>
| |
| | |
| <!--T:53-->
| |
| После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, [[Node-RED_Alice | Умный дом с Алисой]].
| |
| | |
| <!--T:54-->
| |
| <gallery mode="packed" heights="150px">
| |
| Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
| |
| </gallery>
| |
| | |
| == WB Nodes (решение сообщества) == <!--T:42-->
| |
| | |
| [[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]]
| |
| [[Image: nr+wb-settings.png |600px|thumb|right|Настройка соединения с контроллером Wiren Board]]
| |
| Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь [https://support.wirenboard.com/t/node-red-contrib-wirenboard/2019 Andrej_Popov] написал модуль <code>node-red-contrib-wirenboard</code>.
| |
| | |
| === Установка === <!--T:43-->
| |
| Установим его через веб-интерфейс Node-RED:
| |
| {{Node-RED Installing plugin
| |
| |search= wirenboard
| |
| |name= node-red-contrib-wirenboard
| |
| }}
| |
| | |
| После установки, в левой панели появится секция Wiren Board.
| |
| | |
| === Настройка === <!--T:44-->
| |
| После того как вы установили WB Nodes, вам нужно настроить соединение с MQTT-брокером контроллера Wiren Board:
| |
| # Добавьте в рабочую область ноду '''WB-input''', которая находится в левой панели, в секции '''Wiren Board'''.
| |
| # Дважды кликните на ней, откроется окно '''Edit in node'''.
| |
| # Найдите в нём поле '''Server''' и нажмите на кнопку с карандашом. Откроется окно '''Add new wirenboard-server config node'''.
| |
| # Заполните поля '''Name''', '''Host''' и '''MQTT Port'''. Если Node-RED установлен на контроллере — в поле Host пропишите <code>localhost</code>. В поле '''Name''' укажите произвольное имя, а в поле '''MQTT Port''' — 1883.
| |
| # Сохраните настройки сервера нажатием на кнопку '''Done'''.
| |
| # Закройте окно '''Edit in node''' нажатием на '''Cancel'''.
| |
| {{note|info| После настройки подключения, примените настройку сервера нажатием кнопки '''Deploy''' справа вверху. Только после этого будет доступен список каналов контроллера Wiren Board.}}
| |
| | |
| <!--T:45-->
| |
| Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED.
| |
| | |
| === Проверка настроек === <!--T:46-->
| |
| Чтобы проверить правильность настроек:
| |
| # Добавьте в рабочую область любую ноду из группы Wiren Board, например, '''WB-input'''.
| |
| # Дважды кликните на ноде '''WB-input''', откроется окно '''Edit in node'''.
| |
| # В окне '''Edit in node''' нажмите кнопку '''Refresh Device List'''.
| |
| | |
| <!--T:47-->
| |
| Если соединение настроено верно, то в выпадающем списке поля '''Сhannel''' появится список доступных для использования каналов.
| |
| | |
| === Примеры === <!--T:48-->
| |
| В комплекте с WB-Nodes есть примеры для [[Node-RED Apple HomeKit | Apple HomeKit]] и Яндекс.Алисы, найти их можно в '''Menu''' → '''Import''' → '''Examples'''.
| |
| <gallery mode="packed" heights="200px" caption="Примеры из комплекта WB-Nodes">
| |
| Image: WB-Nodes Examples 1.png | Список примеров
| |
| Image: WB-Nodes Examples 2.png | Пример в рабочей области
| |
| </gallery>
| |
| | |
| === Решение проблем ===
| |
| Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно проверить логи сервиса nodered.
| |
| | |
| Если в логах будет видна ошибка во флоу, то:
| |
| # Подключиться к контроллеру по [[SSH]].
| |
| # Остановить службу, если она запущена:
| |
| #: <syntaxhighlight lang="bash">
| |
| systemctl stop nodered
| |
| </syntaxhighlight>
| |
| # Запустить Node-RED в безопасном режиме:
| |
| #: <syntaxhighlight lang="bash">
| |
| node-red --safe
| |
| </syntaxhighlight>
| |
| # Установить проблему и остановить запущенный в безопасном режиме Node-RED.
| |
| # Снова запустить сервис:
| |
| #: <syntaxhighlight lang="bash">
| |
| systemctl start nodered
| |
| </syntaxhighlight>
| |
| | |
| Если вы ставили Node-RED в docker, воспользуйтесь инструкцией на странице [[Node-RED_docker|Установка Node-RED в docker]].
| |
|
| |
|
| == Примеры использования == <!--T:55-->
| | Установим его через веб-интерфейс Node-Red: |
| Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board:
| | # [[#Веб-интерфейс Node-Red | Зайдите в веб-интерфейс Node-Red]]. |
| * [[Node-RED_Telegram | Настройка Telegram-бота]].
| | # В правом верхнем углу вызовите меню. |
| * [[Node-RED_Alice | Настройка Алисы на контроллере Wiren Board]].
| | # Выберите пункт '''Настройки''' (Settings). |
| * [[Node-RED Apple HomeKit | Настройка Apple HomeKit на контроллере Wiren Board]].
| | # В открывшемся окне выберите вкладку '''Палитра''' (Palette). |
| * [[Node-RED Dashboards|Создание панелей (Dashboards) в Node-RED]].
| | # Перейдите на вкладку '''Установка''' (Install), введите в поле поиска '''wirenboard''' и нажмите на клавиатуре '''Enter'''. |
| * [https://youtu.be/cKQmU4LZo4c Видео от нашего партнёра: Wiren Board + Node-RED]
| | # Будет найдено два пакета, установите пакет с названием '''node-red-contrib-wirenboard'''. |
| </translate>
| | # Закройте окно с настройками. Установка WB Nodes завершена. |
| * [https://habr.com/ru/company/wirenboard/blog/689098/ Умный дом на Wiren Board и Node-RED: четыре полезных сценария без программирования]
| |
| * [https://habr.com/ru/company/wirenboard/blog/689826/ Умный дом на Wiren Board и Node-RED: ещё три полезных сценария без программирования]
| |
| * [https://habr.com/ru/company/wirenboard/blog/713274/ Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED]
| |