Главная страницаHome AssistantHome Assistant в Docker ContainerDocker часть 9: Node-Red
Docker часть 9: Node-Red

Docker часть 9: Node-Red

В этой части 9 мы добавим Node-RED, который даст нам наглядный и многофункциональный метод автоматизации. С его помощью можно более наглядно делать автоматизации Home Assistant. Но это не означает, что надо все бросать и переходить на этот инструмент. В первую очередь изучите официальный сайт. И решите для себя надо оно или нет.

Установка Node-RED контейнера

Расширяем наш docker-compose.yaml конфигом для контейнера Node-RED.

services:
  [...]
  
  nodered:
    container_name: nodered
    image: nodered/node-red
    restart: unless-stopped
    ports:
      - "1880:1880/tcp"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./nodered/data:/data
    depends_on:
      - homeassistant
      - mosquitto

Поскольку наша автоматизация Node-RED зависит от Home Assistant, и мы можем делать некоторые вещи через MQTT, мы хотим убедиться, что наш HA Container и брокер Mosquitto работают.

Запускам новый контейнер docker compose up -d.

Права доступа к файлам

После запуска у нас в контейнере будут появляться ошибки к файлам.

Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'

Это связано с тем, как работает сопоставление пользователей внутри и снаружи контейнера Docker.

Наш том Docker для каталога данных был создан (и принадлежит) нашему пользователю root с идентификатором uid=0 gid=0. Пользователь nodered внутри контейнера, которому принадлежит каталог /data, однако имеет разные идентификаторы: 1000:1000 (uid:gid). Мы можем исправить это, изменив владельца тома Docker на пользователя с идентификатором 1000:1000, запустив sudo chown -R 1000:1000 ./nodered/data.

Docker должен заметить изменение разрешений и перезапустить контейнер. Если нет, заново создайте контейнер из интерфейса Portainer.

Теперь мы можем открыть интерфейс Node-RED по адресу http://<ip>:1880.

Настройка Home Assistant

Боковая панель

Как и ранее добавляем iframe в боковую панель, для более удобного доступа. Переходим в configuration.yaml и добавляем новый блок.

panel_iframe:
  [...]

  nodered:
    title: Node-RED
    icon: mdi:lan
    url: "http://<ip>:1880/"
    require_admin: true

Перезапустите Home Assistant через меню «Панель разработчика», и на боковой панели появится значок Node-RED.

Токен доступа

Чтобы настроить это соединение, нам понадобится долгосрочный токен доступа, так что давайте возьмем его.

Нажмите на свое имя пользователя в нижней части боковой панели Home Assistant и прокрутите страницу профиля вниз, пока не увидите раздел Долгосрочные токены доступа.

Нажмите «Создать токен» и введите имя (например, Node-RED) для токена во всплывающем окне. Наконец, скопируйте токен доступа и вставьте его в безопасное место, так как впоследствии вы не сможете открыть токен.

Настройка Node-RED

Сначала нам нужно добавить узлы Home Assistant в Node-RED.

  1. Откройте меню в правом верхнем углу и нажмите «Управление палитрой», чтобы получить обзор доступных и установленных узлов.
  2. Откройте вкладку «Установить».
  3. Найдите и установите node-red-contrib-home-assistant-websocket.

Далее нам нужно настроить соединение между Node-RED и Home Assistant.

  1. Перейдите на главный экран и перетащите узел events: all на доску.
  2. Дважды щелкните узел, чтобы открыть его конфигурацию.
  3. Выберите «Добавить новый сервер…» рядом с «Сервер» и щелкните значок карандаша.
  4. Дайте конфигурации сервера имя (например, Home Assistant).
  5. НЕ устанавливайте флажок Using the Home Assistant Add-on.
  6. Рядом с базовым URL введите адрес, который вы используете для доступа к Home Assistant http://<ip>:8123
  7. Введите токен доступа, который мы получили от Home Assistant ранее.
  8. Нажмите «Добавить», а после чего «Сохранить»

Отныне мы сможем общаться с Home Assistant от Node-RED. Мы можем прослушивать изменения состояния и вызывать службы, предоставляемые Home Assistant и интеграциями HA.

MQTT и Node-RED

Давайте также настроим соединение Node-RED с нашим брокером MQTT, чтобы мы могли напрямую общаться с устройствами через MQTT от Node-RED.

Эта настройка очень похожа на то, как мы настраиваем подключение Home Assistant. Основное отличие в том, что нам не нужно добавлять пакет, так как MQTT поддерживается по умолчанию.

  1. Добавьте узел MQTT.
  2. Дважды щелкните, чтобы открыть его конфигурацию.
  3. На вкладке «Соединение» введите адрес сервера (<ip>) и порт (1883) нашего брокера, а также выберите протокол MQTT V5.
  4. На вкладке «Безопасность» введите имя пользователя и пароль только что созданного пользователя MQTT.
  5. Нажмите «Добавить», а после чего «Сохранить». Обратите внимание, что вам может потребоваться ввести тему MQTT для прослушивания, просто введите подстановочный знак #.

Выполнив эту часть, мы теперь можем настроить самые захватывающие и визуально приятные потоки автоматизации и общаться напрямую с нашим MQTT-брокером без промежуточного слоя.

Пример работы

Ранее в части 7 мы подключали кнопку через Zigbee2MQTT, давайте достанем событие из events: all. Для этого добавим узел debug. После чего нажмем на кнопки и состояние дебага должно измениться. Если все прошло успешно, то ваша конфигурация Node-Red является полностью рабочей.

Итоговая структура проекта

home-assistant
├── .env
├── docker-compose.yaml
├── esphome
├── fileeditor
├── homeassistant
├── mosquitto
├── nodered
│   └── ...
├── portainer
└── zigbee2mqtt

Список всех частей

Был ли полезен материал?

Мне очень важно получать обратную связь. Пожалуйста, оцените материал. Так я пойму в какую сторону его стоит изменить.

Оставить комментарий