Второй координатор Zigbee2MQTT: зачем нужен и как настроить

Пошаговая настройка второго координатора Zigbee2MQTT в Home Assistant: зачем он нужен, как избежать конфликтов, типичные ошибки и проверка результата.
Когда умный дом перерастает из «поиграться с одной лампочкой» во что-то серьёзное, рано или поздно упираешься в потолок возможностей одного Zigbee-координатора. Я прошёл этот путь: сначала одна розетка, потом выключатели, датчики протечки, умные шторы — и вот уже сеть из 60+ устройств висит на одном USB-адаптере. А потом начались чудеса: устройства стали «отваливаться», команды доходить с задержкой, а соседский Wi-Fi создавал помехи на канале 11.
Решение — второй координатор Zigbee2MQTT. Звучит как усложнение, но на практике это спасение для большой сети. Давайте разберёмся, зачем это нужно, когда без этого не обойтись и как всё настроить без танцев с бубном.
Зачем нужен второй координатор?
Прежде чем нырять в настройку, давайте честно ответим на вопрос: а нужен ли он вам вообще?
Когда хватает одного координатора
Если у вас до 25–30 устройств и они все находятся в пределах прямой видимости или через одну-две стены от координатора — второй координатор вам не нужен. Zigbee — это mesh-сеть, где каждое сетевое устройство (розетка, выключатель, реле) является ретранслятором. При грамотном размещении даже 40 устройств могут работать на одном координаторе вполне стабильно.
Когда пора расширяться
Вот типичные сценарии, когда один координатор перестаёт справляться:
Большое количество устройств. Zigbee-сеть одного координатора имеет практический потолок примерно в 40–50 активных устройств. Дальше начинаются проблемы: команды теряются, устройства «засыпают» и не просыпаются, опрос датчиков занимает вечность. Формально спецификация Zigbee 3.0 позволяет больше, но на практике дешёвые USB-адаптеры на CC2531 или даже Sonoff Dongle Plus начинают задыхаться.
Разнесённые зоны. Квартира — это одно, а частный дом с гаражом, мастерской и двором — совсем другое. Один координатор физически не может покрыть всё, особенно если между зонами железобетонные стены или несколько этажей.
Разные радиоканалы. Если у вас есть устройства, которые упорно не хотят работать на канале 15 (например, старые китайские датчики, залоченные на 11-й), проще поднять второй координатор на другом канале, чем мучиться с перепрошивкой каждого.
Разделение критичной и не очень инфраструктуры. Освещение и сигнализация не должны зависеть от того, что кто-то решил поиграть с новыми датчиками. Разделив сети, вы получаете изоляцию отказов.
Почему не просто добавить роутер?
Логичный вопрос: зачем второй координатор, если можно добавить Zigbee-роутеры (ретрансляторы)? Они дешевле и проще. Но у роутеров есть ограничение: они не расширяют адресное пространство координатора. Если проблема в количестве устройств — роутеры не помогут. Кроме того, роутер — это обычно розетка или выключатель, который кто-то может выключить физически, и вся ветка сети ляжет.
Второй координатор — это полноценная вторая сеть со своим адресным пространством, своими настройками и своим каналом.
Архитектура решения
Итак, у нас будет два (или больше) экземпляра Zigbee2MQTT, каждый со своим USB-адаптером. Оба подключаются к одному MQTT-брокеру, но работают с разными топиками. Home Assistant видит оба как отдельные интеграции.
Схематично это выглядит так:
┌─────────────────────────────────────────────┐
│ Home Assistant │
│ (интеграция MQTT / Zigbee2MQTT) │
└──────────────┬──────────────────────────────┘
│
┌──────┴──────┐
│ MQTT Broker │
│ (Mosquitto) │
└──────┬──────┘
┌──────┴──────┐
│ Zigbee2MQTT│
│ (основной) │
└──────┬──────┘
┌──────┴──────┐
│ Zigbee2MQTT│
│ (второй) │
└─────────────┘
Ключевой момент: у каждого экземпляра Zigbee2MQTT должен быть свой data-каталог и свой префикс топиков в MQTT.
Что нам понадобится
Для второго координатора нужен второй USB-адаптер. Варианты:
- Sonoff Zigbee 3.0 USB Dongle Plus (ZBDongle-P) — мой фаворит, на чипе EFR32MG21. Стабильный, мощный, поддерживает Zigbee 3.0.
- ConBee II — тоже неплох, но драйверы иногда капризничают.
- CC2531 с прошивкой — бюджетно, но слабовато для большой сети.
- CC2652P — отличный вариант на чипе Texas Instruments.
Если у вас Home Assistant установлен как HAOS на Raspberry Pi или аналогичном одноплатнике, убедитесь, что USB-портов хватает. Если нет — добавьте USB-хаб с активным питанием. Это важно: некоторые Zigbee-адаптеры чувствительны к питанию, и на пассивном хабе они могут работать нестабильно.
Пошаговая настройка
Шаг 1. Подключаем адаптер и проверяем его видимость
Подключаем второй USB-адаптер к хосту, где крутится Home Assistant. Проверяем, что система его видит:
ls -la /dev/ttyUSB* /dev/ttyACM*
Вы должны увидеть два устройства. Например:
crw-rw---- 1 root dialout 188, 0 июл 12 10:00 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 июл 12 10:01 /dev/ttyUSB1
Или:
crw-rw---- 1 root dialout 166, 0 июл 12 10:00 /dev/ttyACM0
crw-rw---- 1 root dialout 166, 1 июл 12 10:01 /dev/ttyACM1
Тут есть тонкость: при перезагрузке устройства могут поменяться местами. Чтобы этого избежать, узнаем серийный номер адаптера:
udevadm info --query=all --name=/dev/ttyACM0 | grep ID_SERIAL
Запомните или запишите серийники обоих адаптеров. Мы к ним ещё вернёмся.
Шаг 2. Создаём второй конфиг Zigbee2MQTT
Если вы используете аддон Zigbee2MQTT в HAOS, то у вас уже есть каталог /addons_config/zigbee2mqtt. Создайте рядом каталог для второго экземпляра:
mkdir -p /addons_config/zigbee2mqtt-secondary
Теперь создаём конфигурационный файл. Основной конфиг выглядит примерно так:
# /addons_config/zigbee2mqtt/configuration.yaml
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: mqtt://localhost:1883
serial:
port: /dev/ttyACM0
advanced:
network_key: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
pan_id: 0x1a62
channel: 15
Для второго координатора создаём такой конфиг:
# /addons_config/zigbee2mqtt-secondary/configuration.yaml
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt_secondary
server: mqtt://localhost:1883
serial:
port: /dev/ttyACM1
advanced:
network_key: [16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
pan_id: 0x2b73
channel: 20
Обратите внимание на ключевые отличия:
base_topic— другой префикс топиков. Иначе второй экземпляр будет конфликтовать с первым.network_key— должен отличаться от первого. Это критично, если обе сети работают в эфире одновременно.pan_id— тоже должен отличаться.channel— рекомендую выбрать канал, отстоящий от первого минимум на 5. Если первый на 15, второй ставьте на 20 или 25. Это уменьшит взаимные помехи.
Шаг 3. Настройка в Docker (если используете контейнеры)
Для тех, кто запускает Zigbee2MQTT в Docker, всё аналогично. Создаём второй контейнер:
docker run -d
--name zigbee2mqtt-secondary
--restart=unless-stopped
--device=/dev/ttyACM1
-v /path/to/zigbee2mqtt-secondary-dаta:/app/data
-e TZ=Europe/Moscow
koenkk/zigbee2mqtt
Только не забудьте заменить /path/to/zigbee2mqtt-secondary-data на реальный путь и убедиться, что /dev/ttyACM1 — это именно ваш второй адаптер.
Шаг 4. Настройка udev-правил (чтобы устройства не путались)
Помните серийники, которые мы узнавали на первом шаге? Теперь создадим udev-правила, чтобы каждый адаптер всегда получал одно и то же имя:
sudo nano /etc/udev/rules.d/99-zigbee.rules
Содержимое:
# Первый координатор (основной)
SUBSYSTEM=="tty", ATTRS{serial}=="YOUR_SERIAL_1", SYMLINK+="zigbee-primary"
# Второй координатор
SUBSYSTEM=="tty", ATTRS{serial}=="YOUR_SERIAL_2", SYMLINK+="zigbee-secondary"
Подставьте свои серийники вместо YOUR_SERIAL_1 и YOUR_SERIAL_2. После этого перезагружаем правила:
sudo udevadm control --reload-rules
sudo udevadm trigger
Теперь в конфигах можно использовать стабильные имена:
serial:
port: /dev/zigbee-primary
и
serial:
port: /dev/zigbee-secondary
Шаг 5. Добавляем второй экземпляр в Home Assistant
Если вы используете аддоны HAOS, то в веб-интерфейсе Home Assistant перейдите в Настройки → Аддоны → Zigbee2MQTT. Там будет кнопка «Создать копию» или вы можете вручную добавить новый аддон с другим именем. Укажите путь к новому каталогу конфигурации.
Если вы используете Docker — просто запустите второй контейнер, как описано выше.
Шаг 6. Подключение устройств ко второй сети
Теперь самое интересное — перевести часть устройств на второй координатор. Есть два пути:
Путь 1: Полный сброс устройств. Это самый надёжный способ. Устройство сбрасывается к заводским настройкам (обычно 5-кратное нажатие кнопки или удержание 10 секунд), после чего добавляется в новую сеть через веб-интерфейс Zigbee2MQTT.
Путь 2: Переход из одной сети в другую. Некоторые устройства умеют «переезжать» без сброса. Для этого нужно включить разрешение на присоединение во второй сети (permit_join: true), а затем выполнить определённую последовательность действий на устройстве. Но это работает не со всеми устройствами, и я рекомендую не рисковать — сброс и повторное добавление занимает 2 минуты, а вот «полуживое» устройство, которое не может решить, в какой сети оно живёт, будет приносить проблемы неделями.
Шаг 7. Проверка результата
После добавления устройств во вторую сеть проверяем:
- В веб-интерфейсе Zigbee2MQTT (второго экземпляра) должны отображаться все добавленные устройства.
- В Home Assistant устройства должны появиться автоматически (если
homeassistant: trueв конфиге). - Проверьте, что устройства из первой сети не «пропали» и работают как раньше.
Типичные ошибки и как их избежать
Ошибка 1: Одинаковые base_topic
Если оба экземпляра Zigbee2MQTT используют один и тот же base_topic, они начнут перехватывать команды друг друга. Устройства будут хаотично включаться и выключаться, а в логах появятся ошибки вида:
Error: Topic 'zigbee2mqtt/0x00158d0003a1b2c3/set' not found
Решение: всегда используйте уникальные base_topic для каждого экземпляра.
Ошибка 2: Одинаковый network_key
Если обе сети используют один ключ, устройства из одной сети могут случайно попытаться присоединиться к другой. Это создаёт хаос в маршрутизации.
Решение: генерируйте уникальный ключ для каждой сети. Можно использовать генератор случайных чисел:
python3 -c "import random; print([random.randint(0, 255) for _ in range(16)])"
Ошибка 3: Конфликт USB-портов
После перезагрузки адаптеры могут поменяться местами, и второй экземпляр Zigbee2MQTT попытается работать с адаптером первого. В итоге оба экземпляра падают с ошибкой Failed to connect to adapter.
Решение: используйте udev-правила с привязкой к серийному номеру (мы это сделали на шаге 4).
Ошибка 4: Помехи между сетями
Если обе сети работают на одном или соседних каналах, они будут создавать помехи друг другу. Симптомы: устройства «отваливаются», команды выполняются с задержкой.
Решение: разносите каналы. Zigbee использует каналы 11–25. Если первая сеть на 15, вторая должна быть на 20 или 25. Проверить загруженность каналов можно в веб-интерфейсе Zigbee2MQTT (вкладка «Сеть»).
Ошибка 5: Забыли про permit_join
После добавления устройств не забудьте отключить permit_join. Оставленный открытым разрешение на присоединение — это приглашение для соседских устройств и потенциальная дыра в безопасности.
Расширенная настройка: разделение устройств по зонам
Один из практичных сценариев — разделение устройств не «как получилось», а по зонам. Например:
- Первый координатор — квартира: освещение, розетки, выключатели.
- Второй координатор — гараж и двор: датчики протечки, сирена, умный замок калитки.
Для этого в конфиге второго экземпляра можно задать другое имя устройства в Home Assistant:
# В configuration.yaml второго экземпляра
device_options:
friendly_name: "Гараж"
Но проще переименовать устройства уже после добавления в Home Assistant — через веб-интерфейс или через configuration.yaml самого Home Assistant.
Мониторинг и обслуживание
После настройки второго координатора стоит настроить мониторинг. В Home Assistant можно создать дашборд, который показывает:
- Количество устройств в каждой сети.
- Уровень сигнала (LQI) ключевых устройств.
- Статус соединения с MQTT-брокером.
Для этого в Zigbee2MQTT есть встроенные сенсоры. Например, в Home Assistant появятся сущности:
sensor.zigbee2mqtt_secondary_network_connectivity
sensor.zigbee2mqtt_secondary_network_channel
sensor.zigbee2mqtt_secondary_network_pan_id
А для каждого устройства — сенсор качества связи:
sensor.garage_door_sensor_linkquality
Когда второй координатор не поможет
Честно говоря, есть ситуации, когда проблема не в количестве устройств, а в чём-то другом. Прежде чем покупать второй адаптер, проверьте:
- Не перегружен ли USB-порт. Если адаптер работает через дешёвый USB-хаб без питания, он может терять пакеты.
- Не слишком ли далеко координатор от центра устройств. Иногда достаточно переставить адаптер на удлинителе повыше и подальше от металлических предметов.
- Не мешает ли Wi-Fi. Если ваш роутер работает на канале 6 (2.4 ГГц), а Zigbee на канале 15 — они не пересекаются. А вот Wi-Fi на канале 11 может создавать помехи Zigbee на канале 15.
Если все эти факторы исключены, а устройства всё равно «отваливаются» — тогда да, второй координатор — правильное решение.
Заключение
Второй координатор Zigbee2MQTT — это не роскошь, а необходимость для больших и разнесённых инсталляций. Он даёт:
- Масштабирование — до 80–100 устройств суммарно вместо 40–50 на одном.
- Изоляцию отказов — проблема в одной сети не роняет другую.
- Гибкость — можно использовать разные каналы и разные ключи для разных зон.
Настройка занимает около часа, если следовать инструкции и не наступать на грабли с одинаковыми топиками и каналами. А если вы только начинаете знакомство с Zigbee и Home Assistant, рекомендую сначала прочитать статью про настройку Sonoff Zigbee 3.0 USB Dongle Plus — там разобраны базовые моменты работы с Zigbee2MQTT и ZHA.
Если у вас уже есть опыт эксплуатации нескольких координаторов — расскажите в комментариях, с какими сложностями столкнулись и как решили. Иногда самый ценный опыт — из чужих граблей.
Проверка результата
После всех манипуляций пройдитесь по чек-листу:
-
Оба экземпляра Zigbee2MQTT запущены и не падают с ошибками. Проверьте логи:
bash docker logs zigbee2mqtt-secondaryили вкладку «Журнал» аддона в HAOS. -
Устройства из первой сети работают — включите/выключите пару розеток через Home Assistant.
-
Устройства из второй сети работают — аналогичная проверка.
-
Нет конфликтов топиков — в логах обоих экземпляров не должно быть ошибок вида
Topic already exists. -
Устройства не «прыгают» между сетями — проверьте, что каждое устройство видно только в одном веб-интерфейсе Zigbee2MQTT.
-
Качество сигнала — для устройств на границе зоны покрытия проверьте LQI. Если он ниже 80 — подумайте о добавлении роутера в эту зону.
-
Перезагрузка — перезагрузите хост и убедитесь, что оба адаптера определились правильно (благодаря udev-правилам) и оба экземпляра Zigbee2MQTT поднялись автоматически.
Если все пункты выполнены — можно себя похвалить. Ваш умный дом стал заметно надёжнее, и у вас есть запас на расширение.
Полезные ссылки по теме
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Xiaomi Miot Auto в Home Assistant: установка, настройка и подключение устройств Xiaomi
Sonoff Zigbee 3.0 USB Dongle Plus в Home Assistant: настройка ZHA и Zigbee2MQTT
LocalTuya. Перепрошивка розеток Tuya: Как отвязать розетку от облака.
Home Assistant: А есть ли аналоги?
Matter и Thread в Home Assistant: новый стандарт умного дома 2024
Wi-Fi интеграции Home Assistant: подключение локальных устройств без облака