Главная страницаHome AssistantHome Assistant в Docker ContainerDocker часть 7: Zigbee2MQTT
Docker часть 7: Zigbee2MQTT

Docker часть 7: Zigbee2MQTT

Zigbee — это беспроводной протокол, подобный WiFi, но разработанный специально для устройств IoT. Устройства соединяются в ячеистую сеть, где устройства с питанием от сети (например, лампочки и умные розетки) выступают в качестве роутеров для увеличения радиуса действия сети. Координатор Zigbee находится в центре сети Zigbee и обеспечивает взаимодействие с устройствами, не относящимися к Zigbee.

Home Assistant предлагает 2 интеграции Zigbee: встроенную ZHA и deCONZ, которая работает через надстройку. Другой популярной альтернативой является Zigbee2MQTT, который использует обнаружение MQTT Home Assistant для создания устройств и объектов в Home Assistant.

В этом посте будет обсуждаться установка Zigbee2MQTT, так как он использует контейнер Docker для координатора (мы уже установили брокера MQTT).

Обнаружение Zigbee координатора

В нашей конфигурации создания Docker нам нужно назначить координатор Zigbee, который будет подключен через USB, к контейнеру Docker.

Подключите координатор по USB и введите команду в терминале

ls -l /dev/serial/by-id/

Мы будем использовать этот уникальный путь по by-id в нашей конфигурации позже вместо типичного /dev/ttyUSB0, потому что всегда существует риск того, что устройство получит новый TTY, назначенный после перезагрузки, особенно с другими подключаемыми устройствами.

В нашем случае используется Sonoff Zigbee 3.0 usb Dongle E.

Перейдем в .env файл и добавим новую переменную ZIGBEE_ADAPTER_TTY

Установка Zigbee2MQTT контейнера

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

version: '3.0'

services:
  portainer:         # часть 2
    [...]
  homeassistant:     # часть 3
    [...]
  hass-configurator: # часть 4
    [...]
  mariadb:           # часть 5
    [...]
  adminer:           # часть 5
    [...]
  mosquitto:         # часть 6
    [...]

  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt
    restart: unless-stopped
    devices:
      - ${ZIGBEE_ADAPTER_TTY}:/dev/ttyACM0    
    ports:
      - "8020:8020"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./zigbee2mqtt:/app/data
      - /run/udev:/run/udev:ro
    depends_on:
      - mosquitto

Мы пока не будем запускать наш контейнер, так как сначала мы хотим настроить нашу конфигурацию.

Конфигурация Zigbee2MQTT

Создаем папку с конфигурацией

mkdir zigbee2mqtt

Создаем файл конфигурации и записываем в него данные

sudo nano zigbee2mqtt/configuration.yaml

# записываем в него
homeassistant: true

permit_join: false

mqtt:
  base_topic: zigbee2mqtt
  server: '!secret server'
  user: '!secret user'
  password: '!secret password'
  client_id: zigbee

serial:
  port: /dev/ttyACM0

frontend:
  port: 8020

Далее необходимо создать файл с секретами, в которых будет храниться наше соединение с MQTT

sudo nano zigbee2mqtt/secret.yaml

# записываем в него. Не забудьте поменять IP и PASSWORD
server: "mqtt://<IP>:1883"
user: "homeassistant"
password: "<PASSWORD>"

Имея эту конфигурацию, мы можем запустить контейнер, используя docker compose up -d zigbee2mqtt.

Добавление Zigbee2MQTT в Home Assistant

Для удобства использования добавим Z2M в боковую колонку, так же как мы делали с Portainer, File Editor, Adminer.

Для этого откроем configuration.yaml и в блоке panel_iframe добавим новую секцию

panel_iframe:
  portainer:    # часть 2
    [...]
  configurator: # часть 4
    [...]
  adminer:      # часть 5
    [...]
  
  zigbee2mqtt:
    title: Zigbee2MQTT
    icon: mdi:zigbee
    url: "http://<ip>:8020"
    require_admin: true

Подключение устройств через Zigbee2MQTT

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

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

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

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

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

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

Комментарии
  • Роман
    Роман
    07.02.2024 21:44

    Очень хороший материал. Немного краток, но все подробности есть в инете.
    Захотел поднять HA в кубере. Но в процессе развертывания наткнулся на ваши статьи. И стало таааак лениво =) В итоге поднял быстренько в compose. Спасибо за труд.
    З.Ы. оформление топ

  • Roman
    Roman
    07.03.2024 12:28

    Поправьте описание configuration.yaml
    Должно быть.
    mqtt:
    server: ‘!secret.yaml server’
    user: ‘!secret.yaml user’
    password: ‘!secret.yaml password’

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