Ошибка MQTT failed to connect, exiting... означает, что Zigbee2MQTT не смог подключиться к MQTT-брокеру и завершил работу сразу после запуска. В ветках форума помогали правки на стороне самого Zigbee2MQTT: настройки MQTT расходились между вкладкой конфигурации аддона (дополнения Home Assistant) и configuration.yaml, либо в конфигурации стояли необязательные строки key и cert. Решения, подтвержденные документацией, - исправить настройки MQTT в configuration.yaml, удалить лишние строки key и cert или оставить в конфигурации только последовательный порт.
Как выглядит проблема
Проблема проявляется в трех вариантах:
- аддон Zigbee2MQTT завершается при запуске с ошибкой
MQTT failed to connect, exiting..., а в журнале супервизора появляется ошибка Ingress (встроенный доступ к веб-интерфейсу аддона из Home Assistant); - Zigbee2MQTT падает после onboarding (первичной настройки), если выбран вариант MQTT с логином и паролем без SSL: аддон ищет файл fullchain.pem;
- Zigbee2MQTT завершается при старте с этой ошибкой, хотя брокер Mosquitto работает.
В логах при этом встречаются такие строки:
MQTT failed to connect, exiting...
error: z2m: MQTT failed to connect, exiting... (ENOENT: no such file or directory, open 'fullchain.pem')
Вариант с fullchain.pem означает, что Zigbee2MQTT не нашел файл сертификата. В журнале супервизора в одном из вариантов появляется еще и ошибка Ingress:
Ingress error: Cannot connect to host 172.30.33.1:8099 ssl:default [Connect call failed ('172.30.33.1', 8099)]
Про другие неполадки на этапе первичной настройки рассказывает страница onboarding Zigbee2MQTT с недоступными полями.
Причины
Явно названа одна причина, в 1 ветке из 3: настройки MQTT на вкладке конфигурации аддона Zigbee2MQTT не совпадали с configuration.yaml.
| Причина | Как проверить | Что сделать |
|---|---|---|
| Настройки MQTT на вкладке конфигурации аддона не совпадают с configuration.yaml | Сравнить значения MQTT на вкладке конфигурации аддона и в configuration.yaml | Исправить настройки MQTT в configuration.yaml |
Что помогло
Каждое из трех решений подтверждено документацией Zigbee2MQTT. Каждое помогло в 1 ветке форума из 1, где его пробовали.
Оставить только последовательный порт
На чистой установке Home Assistant пользователь задал в конфигурации Zigbee2MQTT только последовательный порт, и аддон запустился без ошибки подключения к MQTT. Документация это подтверждает: настройки последовательного порта достаточно для запуска Zigbee2MQTT.
Удалить key и cert из секции mqtt
Пользователь прошел onboarding, выбрал MQTT с логином и паролем без SSL, и Zigbee2MQTT стал падать с ошибкой ENOENT: no such file or directory, open 'fullchain.pem'. Удаление строк key и cert из секции mqtt в configuration.yaml устранило ошибку. По документации пути к SSL/TLS-ключу и сертификату клиента - необязательные опции, по умолчанию ничего не задано (раздел MQTT).
Исправить настройки MQTT в configuration.yaml
В ветке, где причина была установлена, пользователь исправил настройки MQTT в configuration.yaml, и аддон подключился к брокеру. Документация напоминает, что для работы Zigbee2MQTT требуется соединение с MQTT-сервером (раздел MQTT в документации). Базовая настройка аддона и configuration.yaml разобрана в гайде по установке Zigbee2MQTT в Home Assistant.
Если не помогло
В ветке с ошибкой Ingress пробовали и другие способы, результата они не дали:
- Убрать подчеркивания из логина и пароля MQTT - не помогло (1 сообщение о неудаче).
- Оставить в Mosquitto пустой список
logins: []и пускать к MQTT пользователей Home Assistant - не помогло (1 сообщение о неудаче). - Переписать configuration.yaml: сервер
mqtt://core-mosquitto:1883, опцииca,keyиcertс путями к файлам, выключенные legacy-опцииhomeassistant_legacy_entity_attributes,legacy_api,legacy_availability_payload- не помогло (1 сообщение о неудаче).
Частые вопросы
Почему Zigbee2MQTT не подключается к MQTT, если брокер Mosquitto работает?
В описанных ветках причину находили в настройках самого Zigbee2MQTT, а не в брокере. В ветке, где причина названа, значения на вкладке конфигурации аддона расходились с configuration.yaml, после исправления настроек подключение восстановилось. У другого пользователя Zigbee2MQTT при попытке старта искал файл fullchain.pem, а ошибку устранило удаление строк key и cert из секции mqtt.
Обязательны ли опции key и cert в секции mqtt?
Нет, они необязательны. В документации Zigbee2MQTT пути к SSL/TLS-ключу и сертификату клиента названы опциональными, по умолчанию ничего не задано. Удаление строк key и cert из секции mqtt помогло одному пользователю. Обратный шаг в другой ветке форума - добавление опций ca, key и cert с путями к файлам - ошибку не устранил.
Помогает ли убрать подчеркивания из логина и пароля MQTT?
Нет, в единственной ветке, где это пробовали, не помогло. Один пользователь форума убрал подчеркивания из учетных данных MQTT, но Zigbee2MQTT по-прежнему завершался с ошибкой MQTT failed to connect, exiting.... Вместо этого сверьте совпадение настроек MQTT во вкладке конфигурации аддона и в configuration.yaml, а также лишние опции сертификатов.
Хватит ли одного последовательного порта в конфигурации?
Да, настройки последовательного порта достаточно для запуска. В документации Zigbee2MQTT сказано, что такой конфигурации хватает, чтобы Zigbee2MQTT запустился. На чистой установке Home Assistant пользователь задал в конфигурации аддона только порт, и ошибка подключения к MQTT исчезла.
Что означает Ingress error с адресом 172.30.33.1:8099?
Это ошибка Ingress в журнале супервизора: Home Assistant не смог подключиться к веб-интерфейсу Zigbee2MQTT по адресу 172.30.33.1:8099. В ветке форума она появилась вместе с падением аддона после ошибки MQTT failed to connect, exiting.... Отдельного решения для строки Ingress в ветках не приводили. Искать нужно причину самого падения: настройки MQTT и необязательные строки key и cert, как описано выше.



