wb_editors
14 445
правок
FuzzyBot (обсуждение | вклад) (Обновление для соответствия новой версии исходной страницы.) |
FuzzyBot (обсуждение | вклад) (Обновление для соответствия новой версии исходной страницы.) |
||
Строка 1: | Строка 1: | ||
<languages/> | <languages/>{{DISPLAYTITLE:Установка Node-RED на контроллер Wiren Board}} | ||
{{DISPLAYTITLE: | [[Файл:Node-red.PNG|500px|thumb|right| Node-RED на контроллере Wiren Board]] | ||
[[Файл:Node-red.PNG| | |||
== Описание == | == Описание == | ||
Node-RED - это инструмент визуального программирования | {{YouTube | ||
|link= https://youtu.be/cKQmU4LZo4c | |||
|text= Видеоурок по Node-RED на Wiren Board от SetPoint | |||
}} | |||
Node-RED — это инструмент визуального программирования, основанный на Node.js и который разрабатывается и поддерживается открытым сообществом. | |||
Подробное описание, инструкции и примеры использования можно найти на сайте [https://nodered.org/ nodered.org], а поддержку сообщества в телеграм-канале [https://t.me/SprutAI_NodeRED Node-RED]. | |||
{{Wbincludes:Installing Software In Console}} | |||
== Установка == | |||
< | Для установки Node-RED 2.2 на контроллер Wiren Board подключитесь к нему по [[SSH]] и введите в консоль несколько команд. | ||
</ | Установите необходимые компоненты: | ||
<syntaxhighlight lang="bash"> | |||
apt update && apt install -y nodejs git make g++ gcc build-essential | |||
</syntaxhighlight> | |||
Запустите установку Node-RED: | |||
<syntaxhighlight lang="bash"> | |||
npm install -g --unsafe-perm node-red@2.2 | |||
</syntaxhighlight> | |||
Если потребуется обновить версию Node-RED, выполните команду установки ещё раз. | |||
== Создание сервиса == | |||
Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>: | |||
<syntaxhighlight lang="bash"> | |||
< | mcedit /etc/systemd/system/nodered.service | ||
/etc/systemd/system/nodered.service | </syntaxhighlight> | ||
</ | |||
Затем | Затем вставьте в этот файл строки: | ||
<pre> | <pre> | ||
[Unit] | [Unit] | ||
Строка 56: | Строка 59: | ||
</pre> | </pre> | ||
Сохраните изменения и закройте файл.Теперь | Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой: | ||
< | |||
systemctl | <syntaxhighlight lang="bash"> | ||
</ | systemctl enable nodered && systemctl start nodered | ||
</syntaxhighlight> | |||
Проверьте статус сервиса командой, в выводе должна быть строчка <code>Active: active (running)</code>: | |||
<syntaxhighlight lang="console"> | |||
# systemctl status nodered | |||
● 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 | |||
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> | |||
== | == Удаление == | ||
Если вам больше не нужен Node-RED, то его можно удалить: | |||
# Остановите, отключите и удалите сервис: | |||
< | #:<syntaxhighlight lang="bash"> | ||
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service | |||
npm | </syntaxhighlight> | ||
</ | # Удалите сам Node-RED: | ||
#:<syntaxhighlight lang="bash"> | |||
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red | |||
</syntaxhighlight> | |||
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду: | |||
:<syntaxhighlight lang="bash"> | |||
< | apt remove nodejs | ||
</syntaxhighlight> | |||
</ | |||
==Веб-интерфейс Node-RED== | |||
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. | После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. | ||
Например: http://192.168.42.1:1880 | |||
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org] | Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org] | ||
== WB Nodes == | |||
[[Файл: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>. | |||
=== Установка === | |||
Установим его через [[#Веб-интерфейс Node-RED | веб-интерфейс Node-RED]]: | |||
{{Node-RED Installing plugin | |||
|search= wirenboard | |||
|name= node-red-contrib-wirenboard | |||
}} | |||
После установки, в левой панели появится секция Wiren Board. | |||
=== Настройка === | |||
После того как вы установили 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.}} | |||
Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED. | |||
=== Проверка настроек === | |||
Чтобы проверить правильность настроек: | |||
# Добавьте в рабочую область любую ноду из группы Wiren Board, например, '''WB-input'''. | |||
# Дважды кликните на ноде '''WB-input''', откроется окно '''Edit in node'''. | |||
# В окне '''Edit in node''' нажмите кнопку '''Refresh Device List'''. | |||
Если соединение настроено верно, то в выпадающем списке поля '''Сhannel''' появится список доступных для использования каналов. | |||
=== Примеры === | |||
В комплекте с 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> | |||
== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board == | |||
=== Настройка подключения === | |||
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]] | |||
Альтернативный вариант — использовать ноды '''mqtt in''' и '''mqtt out'''. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]]. | |||
Для настройки MQTT-соединения в Node-RED выполните следующие действия: | |||
#Перетащите ноду '''mqtt in''' в рабочую область. | |||
#Войдите в конфигурацию ноды и нажмите на '''Карандаш''' напротив поля '''Server'''. | |||
#На вкладке '''Connecting''' задайте адрес брокера и номер порта. | |||
#:В поле '''Name''' введите любое имя сервера. | |||
#:На вкладке '''Security''' можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым. | |||
#После заполнения всех полей нажмите кнопку '''Update'''. Созданный брокер теперь можно использовать для настройки всех подключений. | |||
#Выберите созданные брокер из списка в поле '''Server'''. | |||
#Введите адрес mqtt-топика в поле '''Topic'''. | |||
#Нажмите кнопку '''Done'''. | |||
По такому же принципу настраивается нода '''mqtt out'''. | |||
<gallery mode="packed" heights="150px" caption="Настройка MQTT-брокера (Server)> | |||
Image: NodeRed_mqtt2.jpg | Вкладка ''Connecting'' | |||
Image: NodeRed_mqtt3.jpg | Вкладка ''Security'' | |||
</gallery> | |||
=== Отправка команд === | |||
Для отправки команды контроллеру по 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> | |||
После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, [[Node-RED_Alice | Умный дом с Алисой]]. | |||
<gallery mode="packed" heights="150px"> | |||
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы | |||
</gallery> | |||
== Примеры использования == | |||
Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board: | |||
* [[Node-RED_Telegram | Настройка Telegram-бота]]. | |||
* [[Node-RED_Alice | Настройка Алисы на контроллере Wiren Board]]. | |||
* [[Node-RED Apple HomeKit | Настройка Apple HomeKit на контроллере Wiren Board]]. | |||
* [[Node-RED Dashboards|Создание панелей (Dashboards) в Node-RED]]. | |||
* [https://youtu.be/cKQmU4LZo4c Видео от нашего партнёра: Wiren Board + Node-RED] |