Установка Node-RED на контроллер Wiren Board

Материал из Wiren Board
Другие языки:
Node-RED на контроллере Wiren Board

Описание

Видеоурок по Node-RED на Wiren Board от SetPoint

Node-RED — это инструмент визуального программирования, основанный на Node.js и который разрабатывается и поддерживается открытым сообществом.

Подробное описание, инструкции и примеры использования можно найти на сайте nodered.org, а поддержку сообщества в телеграм-канале Node-RED.

Копируйте команды из инструкции, вставляйте их в консоль контроллера с помощью клавиш Shift+Insert и запускайте клавишей Enter. В случае ошибок, внимательно читайте вывод, там будут инструкции и подсказки.


Установка

Для установки Node-RED на контроллер Wiren Board подключитесь к нему по SSH и введите в консоль несколько команд.

  1. Установите docker по инструкции.
  2. Создайте каталог под служебные файлы:
    mkdir /mnt/data/root/nodered
    chown -R 1000:1000 /mnt/data/root/nodered
    chmod -R 777 /mnt/data/root/nodered
    
  3. Запустите образ nodered — docker автоматически загрузит его из интернет и запустит:
    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
    

После установки и запуска, откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880 Консоль можно закрыть.

Веб-интерфейс Node-RED

После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880

Инструкции по работе c Node-RED можно найти на сайте nodered.org

WB Nodes

Установка WB Nodes на контроллер Wiren Board
Настройка соединения с контроллером Wiren Board

Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь Andrej_Popov написал модуль node-red-contrib-wirenboard.

Установка

Установим его через веб-интерфейс Node-RED:

  1. Зайдите в веб-интерфейс Node-RED.
  2. В правом верхнем углу вызовите меню.
  3. В открывшемся окне выберите вкладку Управление палитрой (Manager palette).
  4. Перейдите на вкладку Установка (Install), введите в поле поиска wirenboard и нажмите на клавиатуре Enter.
  5. Установите пакет с названием node-red-contrib-wirenboard.
  6. Закройте окно с настройками. Установка модуля завершена.

После установки, в левой панели появится секция Wiren Board.

Настройка

После того как вы установили WB Nodes, вам нужно настроить соединение с MQTT-брокером контроллера Wiren Board:

  1. Добавьте в рабочую область ноду WB-input, которая находится в левой панели, в секции Wiren Board.
  2. Дважды кликните на ней, откроется окно Edit in node.
  3. Найдите в нём поле Server и нажмите на кнопку с карандашом. Откроется окно Add new wirenboard-server config node.
  4. Заполните поля Name, Host и MQTT Port. Если Node-RED установлен на контроллере — в поле Host пропишите localhost. В поле Name укажите произвольное имя, а в поле MQTT Port — 1883.
  5. Сохраните настройки сервера нажатием на кнопку Done.
  6. Закройте окно Edit in node нажатием на Cancel.

После настройки подключения, примените настройку сервера нажатием кнопки Deploy справа вверху. Только после этого будет доступен список каналов контроллера Wiren Board.

Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED.

Проверка настроек

Чтобы проверить правильность настроек:

  1. Добавьте в рабочую область любую ноду из группы Wiren Board, например, WB-input.
  2. Дважды кликните на ноде WB-input, откроется окно Edit in node.
  3. В окне Edit in node нажмите кнопку Refresh Device List.

Если соединение настроено верно, то в выпадающем списке поля Сhannel появится список доступных для использования каналов.

Примеры

В комплекте с WB-Nodes есть примеры для Apple HomeKit и Яндекс.Алисы, найти их можно в MenuImportExamples.

Решение проблем

Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно подключиться к контроллеру по SSH и посмотреть логи контейнера nodered.

docker logs nodered

Если в логах будет видна ошибка во флоу, то надо пересоздать контейнер с safe-запуском:

  1. Остановить службу, если она запущена:
    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'
    
  2. После этой команды Node-Red запустится в безопасном режиме и не запустит деплой при старте. После исправления ошибки надо снова пересоздать контейнер с правильной командой.
    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
    

Использование нод mqtt in и mqtt out для взаимодействия с Wiren Board

Настройка подключения

Ноды MQTT в Node-Red

Альтернативный вариант — использовать ноды mqtt in и mqtt out. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице MQTT-каналы.

Для настройки MQTT-соединения в Node-RED выполните следующие действия:

  1. Перетащите ноду mqtt in в рабочую область.
  2. Войдите в конфигурацию ноды и нажмите на Карандаш напротив поля Server.
  3. На вкладке Connecting задайте адрес брокера и номер порта.
    В поле Name введите любое имя сервера.
    На вкладке Security можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
  4. После заполнения всех полей нажмите кнопку Update. Созданный брокер теперь можно использовать для настройки всех подключений.
  5. Выберите созданные брокер из списка в поле Server.
  6. Введите адрес mqtt-топика в поле Topic.
  7. Нажмите кнопку Done.

По такому же принципу настраивается нода mqtt out.

Отправка команд

Для отправки команды контроллеру по MQTT используется нода mqtt out. При этом в поле Topic указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды mqtt out нужно написать /on, иначе параметр в топик не запишется. Например, /devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on. Подробнее читайте на странице MQTT.

Для отправки параметра в ноду mqtt out можно использовать ноду inject.

  1. Перетащите ноду inject в рабочую область.
  2. Подключите ее ко входу ноды mqtt out.
  3. Зайдите в настройки ноды inject и задайте Имя ноды, Тип переменной и ее Значение. Нажмите кнопку Done.

После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, Умный дом с Алисой.

Примеры использования

Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board: