Installing Node-RED on a Wiren Board controller
Description
Node-RED is a visual programming tool based on Node.js and developed and maintained by an open community.
A detailed description, instructions and examples of use can be found on the site nodered.org, and community support in the telegram channel Node-RED.
Copy the commands from the instructions, paste them into controller console using the Shift+Insert keys and run with the Enter key. In case of errors, carefully read the output, there will be instructions and hints.
Installation
To install Node-RED 2.2 on a Wiren Board controller, connect to it via SSH and enter a few commands into the console.
Install the necessary components:
apt update && apt install -y nodejs git make g++ gcc build-essential
Run the Node-RED installation:
npm install -g --unsafe-perm node-red@2.2
If you need to upgrade your Node-RED version, run the install command again.
Creating a project
To autostart Node-RED, you need to configure the service. To do this, in the /etc/systemd/system/
folder, create the nodered.service
file:
mcedit /etc/systemd/system/nodered.service
Then paste the lines into this file:
[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
Save changes and close the file. Now enable the service and start it with the command:
systemctl enable nodered && systemctl start nodered
Check the status of the service with the command, the output should contain the line 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
Delete
If you no longer need Node-RED, then you can remove it:
- Stop, disable and remove the service:
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
- Remove Node-RED:
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
Node.js can also be removed, but make sure you don't have other programs installed that use it, such as zigbee2mqtt. To remove node.js run the command:
apt remove nodejs
Веб-интерфейс Node-RED
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880
Инструкции по работе c Node-RED можно найти на сайте nodered.org
WB Nodes
Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь Andrej_Popov написал модуль node-red-contrib-wirenboard
.
Установка
Установим его через веб-интерфейс Node-RED:
- Зайдите в веб-интерфейс Node-RED.
- В правом верхнем углу вызовите меню.
- В открывшемся окне выберите вкладку Управление палитрой (Manager palette).
- Перейдите на вкладку Установка (Install), введите в поле поиска wirenboard и нажмите на клавиатуре Enter.
- Установите пакет с названием 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 пропишите
localhost
. В поле Name укажите произвольное имя, а в поле MQTT Port — 1883. - Сохраните настройки сервера нажатием на кнопку Done.
- Закройте окно Edit in node нажатием на Cancel.
После настройки подключения, примените настройку сервера нажатием кнопки 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 есть примеры для Apple HomeKit и Яндекс.Алисы, найти их можно в Menu → Import → Examples.
- Примеры из комплекта WB-Nodes
Использование нод mqtt in и mqtt out для взаимодействия с Wiren Board
Настройка подключения
Альтернативный вариант — использовать ноды mqtt in и mqtt out. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице MQTT-каналы.
Для настройки MQTT-соединения в Node-RED выполните следующие действия:
- Перетащите ноду mqtt in в рабочую область.
- Войдите в конфигурацию ноды и нажмите на Карандаш напротив поля Server.
- На вкладке Connecting задайте адрес брокера и номер порта.
- В поле Name введите любое имя сервера.
- На вкладке Security можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
- После заполнения всех полей нажмите кнопку Update. Созданный брокер теперь можно использовать для настройки всех подключений.
- Выберите созданные брокер из списка в поле Server.
- Введите адрес mqtt-топика в поле Topic.
- Нажмите кнопку Done.
По такому же принципу настраивается нода mqtt out.
- Настройка MQTT-брокера (Server)
Отправка команд
Для отправки команды контроллеру по MQTT используется нода mqtt out. При этом в поле Topic указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды mqtt out нужно написать /on
, иначе параметр в топик не запишется. Например, /devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on
. Подробнее читайте на странице MQTT.
- Настройка нод для работы с MQTT
Для отправки параметра в ноду mqtt out можно использовать ноду inject.
- Перетащите ноду inject в рабочую область.
- Подключите ее ко входу ноды mqtt out.
- Зайдите в настройки ноды inject и задайте Имя ноды, Тип переменной и ее Значение. Нажмите кнопку Done.
После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, Умный дом с Алисой.
Примеры использования
Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board: