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
└── ...
Очень хороший материал. Немного краток, но все подробности есть в инете.
Захотел поднять HA в кубере. Но в процессе развертывания наткнулся на ваши статьи. И стало таааак лениво =) В итоге поднял быстренько в compose. Спасибо за труд.
З.Ы. оформление топ
Поправьте описание configuration.yaml
Должно быть.
mqtt:
server: ‘!secret.yaml server’
user: ‘!secret.yaml user’
password: ‘!secret.yaml password’