Перевод ZBDongle‑E в RCP для Zigbee2MQTT: пошагово

Чтобы перевести Sonoff ZBDongle‑E в RCP для Zigbee2MQTT, обычно прошивают MultiPAN RCP, затем настраивают Zigbee2MQTT на работу не с USB-портом, а через tcp://…:9999 с adapter: ember. Ниже — короткая инструкция и как откатиться назад.

Если вам нужен только Zigbee2MQTT без Thread/Matter, режим RCP почти никогда не нужен: проще и стабильнее прошивка Zigbee Coordinator (NCP) и подключение к /dev/serial/by-id/....

Оглавление

Когда нужен RCP на ZBDongle‑E

RCP имеет смысл в двух сценариях:

  • Thread/Matter: донгл используется как радиомодуль для Thread (это отдельная история от Zigbee2MQTT).
  • MultiPAN (Zigbee + Thread на одном донгле): Zigbee “отдаётся” наружу сервисом multiprotocol, а Zigbee2MQTT подключается к нему по сети (TCP).

Если ваша цель — просто поднять Zigbee2MQTT и забыть, чаще выигрывает схема “один донгл = один протокол”.

Прошивка MultiPAN RCP

  1. Остановите Zigbee2MQTT/ZHA/любые сервисы, которые используют донгл (иначе порт будет занят).
  2. Выберите способ прошивки:
    • Через веб-прошивальщик в браузере (обычно нужен Chromium-браузер и доступ к USB).
    • Через аддон прошивки в Home Assistant (если донгл подключён прямо к хосту HA).
  3. В списке прошивок выберите именно MultiPAN RCP (не OpenThread RCP).
  4. Запустите прошивку и дождитесь завершения, затем переподключите донгл.

После перехода на MultiPAN у части установок “ломается” существующая Zigbee-сеть (например, из‑за смены идентификаторов/адреса адаптера). Если сеть большая, заранее сделайте бэкап Zigbee2MQTT и планируйте время на возможную перепривязку устройств.

Настройка Zigbee2MQTT через TCP:9999

Логика такая: донгл в режиме RCP обслуживает multiprotocol-сервис, а Zigbee2MQTT подключается к “прокладке” по TCP.

  1. Поднимите/включите multiprotocol сервис (в Home Assistant это обычно отдельный аддон), укажите в нём ваш ZBDongle‑E.
  2. Убедитесь, что Zigbee-интерфейс публикуется на TCP-порту (часто это 9999).
  3. В configuration.yaml Zigbee2MQTT пропишите подключение по TCP:
serial:
  adapter: ember
  port: tcp://IP_ИЛИ_ИМЯ_ХОСТА:9999
  1. Запустите Zigbee2MQTT. Если с первого раза не поднялось — сделайте ещё один перезапуск: multiprotocol-стек иногда инициализируется дольше, чем ожидает Zigbee2MQTT.

Если вы откатываетесь обратно на “обычный Zigbee”, фиксируйте порт как /dev/serial/by-id/..., а не /dev/ttyUSB0 — так он не будет “прыгать” после перезагрузок.

Частые ошибки

  • Zigbee2MQTT не стартует после RCP: проверьте, что указан port: tcp://…:9999, а не /dev/ttyUSB…, и что adapter: ember.
  • Таймауты/нет связи с адаптером: multiprotocol-сервис не запущен, выбран не тот USB-девайс, либо порт 9999 не опубликован наружу.
  • Прошивальщик не видит донгл: попробуйте другой USB-порт (часто стабильнее USB 2.0), короткий кабель с линиями данных, отключите все сервисы, которые могли “держать” устройство.
  • После прошивки устройства пропали из сети: планируйте миграцию — иногда проще создать сеть заново и перепривязать устройства, чем “чинить” старую после смены режима.

FAQ

Можно ли оставить RCP и подключать Zigbee2MQTT по USB, как раньше?
Обычно нет: в MultiPAN Zigbee2MQTT чаще работает через TCP (через multiprotocol), а не напрямую с UART.

Что выбрать: OpenThread RCP или MultiPAN RCP, если нужен Zigbee2MQTT?
Для Zigbee2MQTT в контексте RCP почти всегда нужен MultiPAN RCP. OpenThread RCP — это про Thread и сам по себе Zigbee2MQTT не “ускоряет” и не упрощает.

Как откатиться обратно на Zigbee Coordinator (NCP)?
Остановите Zigbee2MQTT/multiprotocol, прошейте прошивку Zigbee Coordinator, затем верните порт в Zigbee2MQTT на /dev/serial/by-id/... (и оставьте adapter: ember).