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

Официальный способ установки — пакетами, в докер только в крайнем случае. Вынес правки пользователя в отдельную страницу и дал ссылку.
(Официальный способ установки — пакетами, в докер только в крайнем случае. Вынес правки пользователя в отдельную страницу и дал ссылку.)
Строка 1: Строка 1:
<languages/><translate>
<languages/><translate>
<!--T:19-->
<!--T:19-->
Строка 18: Строка 17:
{{Wbincludes:Installing Software In Console}}
{{Wbincludes:Installing Software In Console}}


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


<!--T:24-->
Установите необходимые компоненты:
<syntaxhighlight lang="bash">
apt update && apt install -y nodejs git make g++ gcc build-essential
</syntaxhighlight>


== Установка == <!--T:23-->
<!--T:25-->
Для установки Node-RED на контроллер Wiren Board подключитесь к нему по [[SSH]] и введите в консоль несколько команд.
Запустите установку Node-RED:
*:<syntaxhighlight lang="bash">
npm install -g --unsafe-perm node-red
</syntaxhighlight>
 
<!--T:26-->
Если потребуется обновить версию Node-RED, выполните команду установки ещё раз.
 
В релизах wb-2207 и старее устаревшая версия NodeJS, поэтому свежий Node-RED можно поставить только в docker — [[Node-RED_docker|инструкция по установке Node-RED в docker]].
 
== Создание сервиса == <!--T:27-->
 
<!--T:28-->
Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>:
 
<!--T:29-->
<syntaxhighlight lang="bash">
nano /etc/systemd/system/nodered.service
</syntaxhighlight>
 
<!--T:30-->
Затем вставьте в этот файл строки:
<pre>
[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target
 
<!--T:31-->
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home
 
<!--T:32-->
Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256"
ExecStart=/usr/bin/env node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
 
<!--T:33-->
[Install]
WantedBy=multi-user.target
</pre>
 
<!--T:34-->
Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой:
 
<!--T:35-->
<syntaxhighlight lang="bash">
systemctl enable nodered && systemctl start nodered
</syntaxhighlight>
 
<!--T:36-->
Проверьте статус сервиса командой, в выводе должна быть строчка <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
 
<!--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>


# Установите docker по [[docker | инструкции]].
== Удаление == <!--T:38-->
# Создайте каталог под служебные файлы:
Если вам больше не нужен Node-RED, то его можно удалить:
# Остановите, отключите и удалите сервис:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
mkdir /mnt/data/root/nodered
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
chown -R 1000:1000 /mnt/data/root/nodered
chmod -R 777 /mnt/data/root/nodered
</syntaxhighlight>
</syntaxhighlight>
# Запустите образ nodered — docker автоматически загрузит его из интернет и запустит:
# Удалите сам Node-RED:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
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
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
</syntaxhighlight>
</syntaxhighlight>


После установки и запуска, откройте браузер и введите [[How_to_find_IP_address | адрес своего контроллера]] в сети и порт 1880. Например: http://192.168.42.1:1880 Консоль можно закрыть.
<!--T:39-->
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
:<syntaxhighlight lang="bash">
apt remove nodejs
</syntaxhighlight>


==Веб-интерфейс Node-RED== <!--T:40-->
==Веб-интерфейс Node-RED== <!--T:40-->
Строка 88: Строка 172:


=== Решение проблем ===
=== Решение проблем ===
Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно подключиться к контроллеру по [[SSH]] и посмотреть логи контейнера nodered.
Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно проверить  логи сервиса nodered.
<syntaxhighlight lang="bash">
docker logs nodered
</syntaxhighlight>


Если в логах будет видна ошибка во флоу, то надо пересоздать контейнер с safe-запуском:
Если в логах будет видна ошибка во флоу, то:
#  
# Подключиться к контроллеру по [[SSH]].
# Остановить службу, если она запущена:
# Остановить службу, если она запущена:
#: <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
</syntaxhighlight>
</syntaxhighlight>
# После этой команды Node-Red запустится в безопасном режиме и не запустит деплой при старте. После исправления ошибки надо снова пересоздать контейнер с правильной командой.
# Запустить 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 nodered/node-red
node-red --safe
</syntaxhighlight>
</syntaxhighlight>
 
# Установить проблему и остановить запущенный в безопасном режиме Node-RED.
Для доступа в контейнер (например, для установки и использования node-red-admin) можно воспользоваться такой командой:
# Снова запустить сервис:
<syntaxhighlight lang="bash">
#: <syntaxhighlight lang="bash">
docker exec -it nodered /bin/bash
systemctl start nodered
</syntaxhighlight>
 
После этого можно установить node-red-admin:
<syntaxhighlight lang="bash">
npm install --location=global --unsafe-perm node-red-admin
</syntaxhighlight>
</syntaxhighlight>


Если вы ставили Node-RED в docker, воспользуйтесь инструкцией на странице [[Node-RED_docker|Установка Node-RED в docker]].
== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board == <!--T:49-->
== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board == <!--T:49-->
=== Настройка подключения ===
=== Настройка подключения ===