Установка Node-RED на контроллер Wiren Board вручную
Это устаревший способ установки. Начиная с релиза testing (на базе Debian Trixie) Node-RED устанавливается на контроллер готовым пакетом wb-node-red одной командой — см. основную инструкцию.
Описание
На этой странице описана ручная установка Node-RED на контроллер через npm. Пакет wb-node-red работает только на релизах на базе Debian Trixie, поэтому на более ранних релизах устанавливайте Node-RED по этой инструкции.
Если нужна версия Node-RED свежее той, что ставится через npm, используйте установку в Docker.
Установка
Чтобы не потерять установленный софт и его данные, обновляйте ПО контроллера только через менеджер пакетов apt. Подробнее читайте в статье Программное обеспечение Wiren Board.
Встроенный флеш-накопитель контроллера разбит на разделы и для пользователя отведён самый большой из них, который монтируется в папку /mnt/data. Нужно учесть эту особенность при установке программ, а также при обновлении прошивки контроллера.
Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.
Установите необходимые компоненты:
apt update && apt install -y nodejs git make g++ gcc build-essential
Запустите установку Node-RED:
npm install -g --unsafe-perm node-red
Если потребуется обновить версию Node-RED, выполните команду установки ещё раз.
Создание сервиса
Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке /etc/systemd/system/ создайте файл nodered.service:
nano /etc/systemd/system/nodered.service
Затем вставьте в этот файл строки:
[Unit] Description=Node-RED graphical event wiring tool Wants=network.target [Service] Type=simple User=root Group=root WorkingDirectory=/home 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 [Install] WantedBy=multi-user.target
Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой:
systemctl enable nodered && systemctl start nodered
Проверьте статус сервиса командой, в выводе должна быть строчка Active: active (running):
# 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
Веб-интерфейс Node-RED
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880
Настройка доступа к интерфейсу Node-RED
При первом запуске Node-RED доступ к веб-интерфейсу не ограничен. Если вам необходимо контролировать, какие действия могут выполнять пользователи в интерфейсе Node-RED, то необходимо настроить уровень доступа следующим образом:
- В консоли контроллера запустить команду
node-red admin hash-pw
- Далее ввести пароль, нажать Enter. Система выдаст хеш введенного пароля. Его необходимо скопировать и использовать далее.
- В консоли контроллера запустить команду
nano /root/.node-red/settings.js- Откроется текстовый редактор.
- Найти блок
adminAuth:
//adminAuth: {
// type: "credentials",
// users: [{
// username: "admin",
// password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcx>
// permissions: "*"
// }]
//},
- Раскомментировать его.
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcx>
permissions: "*"
}]
},
- В поле
usernameввести имя пользователя. В полеpasswordввести ранее скопированный хеш пароля.- Пример настройки:
adminAuth: { type: "credentials", users: [{ username: "wirenboard", password: "$2y$08$EODPHZ9o5pXn2uOj8EPyTOxfpKbdmJWSZupINKuQZAz/pZ1v0lay6", permissions: "*" }] },
- Если значение
permissionsустановлено на"*", это означает, что пользователь имеет полный доступ ко всем функциям и возможностям интерфейса Node-RED.
- Сохранить изменения с помощью Ctrl+O.
- Перезапустить Node-RED командой
systemctl restart nodered
Если необходимо настроить еще один уровень доступа, то повторить действия из пунктов 1 — 3. Далее также в вышеуказанный блок добавить параметры для еще одного пользователя с указанием прав доступа. Сохранить изменения и перезапустить Node-RED.
Пример настройки:
adminAuth: {
type: "credentials",
users: [{
username: "wirenboard",
password: "$2y$08$EODPHZ9o5pXn2uOj8EPyTOxfpKbdmJWSZupINKuQZAz/pZ1v0lay6",
permissions: "*"
},
{
username: "user",
password: "$2y$08$xaV6PiE0Pq5tRzZPndY7wOOY0ybBdK9aygscSxiu4qoLAA7Tc8yza",
permissions: "read"
}]
},
Значения для permissions могут быть следующими:
"read": разрешает только чтение;"write": разрешает запись (например, изменение потоков);"delete": разрешает удаление;"deploy": разрешает развертывание изменений;"*": полный доступ ко всем функциям и возможностям.
Решение проблем
Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно проверить логи сервиса nodered.
Если в логах будет видна ошибка во флоу, то:
- Подключиться к контроллеру по SSH.
- Остановить службу, если она запущена:
systemctl stop nodered
- Запустить Node-RED в безопасном режиме:
node-red --safe
- Установить проблему и остановить запущенный в безопасном режиме Node-RED.
- Снова запустить сервис:
systemctl start nodered
Если вы ставили Node-RED в docker, воспользуйтесь инструкцией на странице Установка Node-RED в docker.
Удаление
Если вы переходите на пакет wb-node-red — не удаляйте каталог ~/.node-red, пока не перенесёте флоу по инструкции.
Если вам больше не нужен Node-RED, то его можно удалить:
- Остановите, отключите и удалите сервис:
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
- Удалите сам Node-RED:
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие программы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
apt remove nodejs