Node-RED: различия между версиями

2727 байт добавлено ,  1 месяц назад
Нет описания правки
 
(не показано 10 промежуточных версий 3 участников)
Строка 1: Строка 1:
<languages/><translate>
<languages/><translate>
<!--T:19-->
<!--T:19-->
Строка 18: Строка 17:
{{Wbincludes:Installing Software In Console}}
{{Wbincludes:Installing Software In Console}}


== Установка ==  <!--T:23-->


{{Wbincludes:Installing Software In Console Catalog And Update}}


== Установка ==  <!--T:23-->
{{Wbincludes:Installing Software In Console}}
Для установки Node-RED на контроллер Wiren Board подключитесь к нему по [[SSH]] и введите в консоль несколько команд.


# Установите docker по [[docker | инструкции]].
<!--T:24-->
# Создайте каталог под служебные файлы:
Установите необходимые компоненты:
#:<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
mkdir /mnt/data/root/nodered
apt update && apt install -y nodejs git make g++ gcc build-essential
chown -R 1000:1000 /mnt/data/root/nodered
chmod -R 777 /mnt/data/root/nodered
</syntaxhighlight>
</syntaxhighlight>
# Запустите образ nodered — docker автоматически загрузит его из интернет и запустит:
 
#:<syntaxhighlight lang="bash">
<!--T:25-->
docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host nodered/node-red
Запустите установку Node-RED:
:<syntaxhighlight lang="bash">
npm install -g --unsafe-perm node-red
</syntaxhighlight>
</syntaxhighlight>


После установки и запуска, откройте браузер и введите [[How_to_find_IP_address | адрес своего контроллера]] в сети и порт 1880. Например: http://192.168.42.1:1880 Консоль можно закрыть.
<!--T:26-->
Если потребуется обновить версию Node-RED, выполните команду установки ещё раз.
 
В релизах wb-2207 и старее устаревшая версия NodeJS, поэтому свежий Node-RED можно поставить только в docker — [[Node-RED_docker|инструкция по установке Node-RED в docker]].
Также в docker следует устанавливать если требуется версия более новая чем из пакетов.


==Веб-интерфейс Node-RED== <!--T:40-->
== Создание сервиса == <!--T:27-->  
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880.
Например: http://192.168.42.1:1880


<!--T:41-->
<!--T:28-->
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org]
Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>:


== WB Nodes ==  <!--T:42-->
<!--T:29-->
[[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]]
<syntaxhighlight lang="bash">
[[Image: nr+wb-settings.png |600px|thumb|right|Настройка соединения с контроллером Wiren Board]]
nano /etc/systemd/system/nodered.service
Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь [https://support.wirenboard.com/t/node-red-contrib-wirenboard/2019 Andrej_Popov] написал модуль <code>node-red-contrib-wirenboard</code>.
</syntaxhighlight>


=== Установка === <!--T:43-->
<!--T:30-->
Установим его через веб-интерфейс Node-RED:
Затем вставьте в этот файл строки:
{{Node-RED Installing plugin
<pre>
|search= wirenboard
[Unit]
|name= node-red-contrib-wirenboard
Description=Node-RED graphical event wiring tool
}}
Wants=network.target


После установки, в левой панели появится секция Wiren Board.
<!--T:31-->
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home


=== Настройка === <!--T:44-->
<!--T:32-->
После того как вы установили WB Nodes, вам нужно настроить соединение с MQTT-брокером контроллера Wiren Board:
Nice=5
# Добавьте в рабочую область ноду '''WB-input''', которая находится в левой панели, в секции '''Wiren Board'''.
Environment="NODE_OPTIONS=--max_old_space_size=256"
# Дважды кликните на ней, откроется окно '''Edit in node'''.
ExecStart=/usr/bin/env node-red $NODE_OPTIONS $NODE_RED_OPTIONS
# Найдите в нём поле '''Server''' и нажмите на кнопку с карандашом. Откроется окно '''Add new wirenboard-server config node'''.
KillSignal=SIGINT
# Заполните поля '''Name''', '''Host''' и '''MQTT Port'''. Если Node-RED установлен на контроллере — в поле Host пропишите <code>localhost</code>. В поле '''Name''' укажите произвольное имя, а в поле '''MQTT Port''' — 1883.
Restart=on-failure
# Сохраните настройки сервера нажатием на кнопку '''Done'''.
SyslogIdentifier=Node-RED
# Закройте окно '''Edit in node''' нажатием на '''Cancel'''.
{{note|info| После настройки подключения, примените настройку сервера нажатием кнопки '''Deploy''' справа вверху. Только после этого будет доступен список каналов контроллера Wiren Board.}}


<!--T:45-->
<!--T:33-->
Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED.
[Install]
WantedBy=multi-user.target
</pre>


=== Проверка настроек === <!--T:46-->
<!--T:34-->
Чтобы проверить правильность настроек:
Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой:
# Добавьте в рабочую область любую ноду из группы Wiren Board, например, '''WB-input'''.
# Дважды кликните на ноде '''WB-input''', откроется окно '''Edit in node'''.
# В окне '''Edit in node''' нажмите кнопку '''Refresh Device List'''.


<!--T:47-->
<!--T:35-->
Если соединение настроено верно, то в выпадающем списке поля '''Сhannel''' появится список доступных для использования каналов.
<syntaxhighlight lang="bash">
systemctl enable nodered && systemctl start nodered
</syntaxhighlight>


=== Примеры === <!--T:48-->
<!--T:36-->
В комплекте с WB-Nodes есть примеры для [[Node-RED Apple HomeKit | Apple HomeKit]] и Яндекс.Алисы, найти их можно в '''Menu''' → '''Import''' → '''Examples'''.
Проверьте статус сервиса командой, в выводе должна быть строчка <code>Active: active (running)</code>:
<gallery mode="packed" heights="200px" caption="Примеры из комплекта WB-Nodes">
<syntaxhighlight lang="console">
Image: WB-Nodes Examples 1.png | Список примеров
# systemctl status nodered
Image: WB-Nodes Examples 2.png | Пример в рабочей области
● nodered.service - Node-RED graphical event wiring tool
</gallery>
  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-->
Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно подключиться к контроллеру по [[SSH]] и посмотреть логи контейнера nodered.
Dec 03 06:32:25 wirenboard-AWQBNTYP systemd[1]: Started Node-RED graphical event wiring tool.
<syntaxhighlight lang="bash">
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info]
docker logs nodered
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>


Если в логах будет видна ошибка во флоу, то надо пересоздать контейнер с safe-запуском:
== Удаление == <!--T:38-->
#  
Если вам больше не нужен Node-RED, то его можно удалить:
# Остановить службу, если она запущена:
# Остановите, отключите и удалите сервис:
#: <syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
docker stop nodered ; docker rm nodered && docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256" --network=host --entrypoint "/bin/bash" nodered/node-red -c 'npm start -- --userDir /data --safe'
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>
</syntaxhighlight>
# После этой команды Node-Red запустится в безопасном режиме и не запустит деплой при старте. После исправления ошибки надо снова пересоздать контейнер с правильной командой.  
 
#: <syntaxhighlight lang="bash">
<!--T:39-->
docker stop nodered ; docker rm nodered && docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host nodered/node-red
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
:<syntaxhighlight lang="bash">
apt remove nodejs
</syntaxhighlight>
</syntaxhighlight>


== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board == <!--T:49-->
==Веб-интерфейс Node-RED== <!--T:40-->
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880.
Например: http://192.168.42.1:1880
 
<!--T:41-->
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org]
 
== Ноды ''mqtt in'' и ''mqtt out'' (рекомендуется) == <!--T:49-->
=== Настройка подключения ===
=== Настройка подключения ===
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
Альтернативный вариант — использовать ноды '''mqtt in''' и  '''mqtt out'''. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].
Для работы по MQTT используются ноды '''mqtt in''' и  '''mqtt out'''. Также вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].


<!--T:50-->
<!--T:50-->
Строка 154: Строка 182:
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
</gallery>
</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-->
== Примеры использования == <!--T:55-->
wb_editors
890

правок