Home Assistant

Как подключить MQTT в Home Assistant: пошаговая настройка

Пошаговая настройка MQTT в Home Assistant: брокер Mosquitto, подключение интеграции, автообнаружение устройств, автоматизации, безопасность и диагностика.

Проверено редакцией 03.10.2026: семантика QoS, удержанные сообщения, последняя воля и подстановочные знаки сверены с описанием протокола Mosquitto; порты приведены к документации дополнения: у веб-сокетов их два, 1884 и 8884

Как подключить MQTT в Home Assistant: пошаговая настройка

Коротко: MQTT это способ передать в Home Assistant состояние устройства и команду ему, когда производитель не дал нормальной интеграции. Работает через посредника: брокер принимает сообщения от одних устройств и раздаёт их другим. Ниже порядок настройки от установки брокера до первой автоматизации и разбор того, что чаще всего ломается.

Что такое MQTT и зачем он в умном доме

MQTT это протокол обмена короткими сообщениями по модели издатель-подписчик. Одно устройство публикует сообщение в тему, другое подписывается на эту тему и получает его. Прямой связи между ними нет, и знать адреса друг друга им не нужно.

В умном доме это решает три задачи. Первая: подключить устройство, для которого нет готовой интеграции, но есть MQTT. Вторая: убрать облако производителя из цепочки, чтобы свет и климат работали при обрыве интернета. Третья: связать между собой устройства разных производителей, которые иначе друг о друге не знают.

Протокол экономный: сообщение это несколько байт плюс короткий заголовок. Поэтому его тянут даже микроконтроллеры с крошечной памятью, и поэтому же MQTT стал стандартом для самодельных датчиков.

Из чего состоит система

Компонентов ровно три.

Брокер это сервер, который принимает все сообщения и рассылает их подписчикам. Он не знает, что означает содержимое, и не хранит историю (кроме одного исключения ниже). В большинстве домашних сборок эту роль играет Mosquitto.

Клиенты это устройства и программы: датчик, реле, интеграция Home Assistant, скрипт на компьютере.

Темы это адреса, по которым идёт обмен. Тема выглядит как путь через слэш: home/livingroom/temperature. Иерархия важна, потому что подписка бывает с подстановочными знаками: + заменяет один уровень, # заменяет все оставшиеся. Подписка на home/livingroom/# поймает и температуру, и влажность, и состояние лампы в этой комнате.

Отдельно стоит запомнить про retained-сообщения. Если публикация помечена как retained, брокер запоминает последнее сообщение в этой теме и отдаёт его каждому новому подписчику сразу при подключении. На этом механизме держатся и состояние датчиков, и автообнаружение устройств.

Установка брокера

Порядок зависит от того, как установлен Home Assistant.

На Home Assistant OS и Supervised брокер ставится как дополнение Mosquitto broker из магазина дополнений. После установки нужно создать пользователя в Home Assistant и выдать ему доступ, затем включить дополнение и запустить его. Никаких конфигов руками писать не требуется.

В Docker-сборке Mosquitto поднимают отдельным контейнером с файлом конфигурации и томом для данных. Здесь важно сразу продумать две вещи: где лежит файл паролей и куда пишутся логи.

Порты брокера, которые встречаются в типовых конфигурациях: 1883 для обычного подключения, 8883 для шифрованного, а для веб-сокетов их два — 1884 без шифрования и 8884 с ним. Наружу в интернет открывать 1883 нельзя без шифрования и пароля, об этом ниже.

Подключение Home Assistant к брокеру

Дальше в Home Assistant открываем Настройки, затем Устройства и службы, добавляем интеграцию MQTT и заполняем поля: адрес брокера, порт, имя пользователя и пароль. Если ставили дополнение, адрес брокера это локальный хост, а имя пользователя то, которое создали в Home Assistant.

После подключения интеграция сразу готова принимать устройства. Появляются ли сущности, зависит от того, умеет ли устройство объявлять себя. Если умеет, оно публикует в специальную тему описание себя, и Home Assistant создаёт объекты автоматически. Если не умеет, сущности добавляют руками через YAML или через интерфейс.

Проверить связь проще всего так: подписаться в интерфейсе MQTT на # и посмотреть, идут ли сообщения. Любая активность в топиках означает, что брокер жив и клиенты подключены.

Автообнаружение: как устройство само себя описывает

Автообнаружение это главная причина, по которой MQTT в Home Assistant выглядит удобно. Устройство публикует в тему вида homeassistant/<тип>/<идентификатор>/config небольшой JSON с описанием: как называется, какие у него поля, где брать состояние. Home Assistant читает этот JSON и создаёт сущность.

Практический вывод: если устройство поддерживает автообнаружение, добавлять его руками не нужно. Если сущностей не появилось, причина почти всегда в одном из трёх: отключён префикс автообнаружения в настройках интеграции, устройство опубликовало конфиг до того, как Home Assistant подключился, или публикация была не retained и потерялась. Лечится перезапуском устройства, чтобы оно опубликовало конфиг заново.

Три типовых сценария

Zigbee-устройства через Zigbee2MQTT. Координатор подключается к компьютеру, программа читает с него события и публикует их в MQTT. Home Assistant подписывается и получает датчики и выключатели. Так работает большинство недорогих Zigbee-устройств без родного шлюза.

Прошивка Tasmota на готовых реле и розетках. Устройство получает по воздуху новую прошивку, после чего само работает с MQTT, а настройки задаются веб-интерфейсом. Тема сценарий для тех, у кого есть розетки и реле с ESP-модулем внутри.

Самодельные датчики на ESP32 и ESP8266. Плата с датчиком публикует измерения в свой топик. Прошивка пишется в ESPHome или в Arduino-скетче, и Home Assistant видит обычную сущность. Как это выглядит на практике, разобрано в статье про ESP32 в Home Assistant.

Автоматизации на сообщениях

Home Assistant умеет использовать MQTT как триггер автоматизации. Триггер срабатывает на сообщение в конкретной теме, при желании с проверкой содержимого.

Осмысленные сценарии обычно такие:

  • включить свет при срабатывании датчика движения в топике коридора;
  • отправить уведомление, если датчик протечки сообщил о воде;
  • выключить обогреватель, когда температура в комнате превысила порог;
  • фиксировать в журнал открытие входной двери;
  • останавливать полив, если датчик влажности почвы показал норму.

Отдельно полезен механизм последней воли. Устройство заранее сообщает брокеру: если я отключусь, опубликуй в мой топик доступности слово offline. Home Assistant видит это и помечает сущность недоступной, а автоматизация может отправить уведомление. Без этого выключенный датчик выглядит как работающий.

Собирать такие связки удобнее вместе с остальными сценариями дома, примеры собраны в статье про сценарии умного дома.

Безопасность

По умолчанию Mosquitto может принимать анонимные подключения. Для дома, где в сети есть хоть один посторонний человек, это плохая идея: любой в той же сети сможет читать все топики.

Минимальные меры выглядят так. Включить запрет анонимных подключений, завести файл паролей и выдать каждому клиенту свой логин. Не публиковать брокер в интернет напрямую. Если доступ снаружи нужен, использовать VPN или шифрованное подключение с сертификатом, а не проброс порта. Пароли не хранить в открытом виде в конфигурациях, которые лежат в облачных резервных копиях.

Есть и менее очевидная угроза: устройство с MQTT часто управляет нагрузкой на 220 вольт. Ошибка в правах доступа означает не чтение температуры, а возможность включить реле. Поэтому права стоит раздавать по минимуму, а не одним общим логином на всё.

Диагностика: что смотреть, когда не работает

Порядок проверки от простого к сложному.

Первое: идут ли сообщения вообще. Подписка на # показывает всё, что летает по брокеру. Тишина означает проблему с брокером или с сетью, а не с устройством.

Второе: видно ли сообщения от конкретного устройства. Подписка на его префикс отделяет проблему одного клиента от общей.

Третье: есть ли retained-сообщение с конфигом автообнаружения. Если конфига нет, сущность не появится, сколько ни перезапускай Home Assistant.

Четвёртое: не конфликтуют ли имена. Два устройства с одинаковым идентификатором перезапишут сущности друг друга, и поведение будет выглядеть случайным.

Пятое: совпадают ли типы данных. Если устройство присылает текст, а сущность ждёт число, значение появится как некорректное. Это частая причина жалоб вида «датчик показывает неизвестно».

Для просмотра топиков удобно держать отдельный клиент вроде MQTT Explorer на компьютере: он показывает дерево тем целиком и сразу видно структуру.

Когда MQTT не нужен

Не всякое устройство стоит тянуть в MQTT. Если у устройства есть нормальная локальная интеграция, проще ею и пользоваться: меньше звеньев, меньше точек отказа. MQTT оправдан там, где альтернатива это облако производителя или отсутствие поддержки вообще.

Второй случай, когда MQTT лишний, это одна-две железки. Ради двух датчиков поднимать брокер, следить за паролями и обновлять его смысла мало. Порог полезности начинается там, где устройств становится больше пяти и появляются разные производители.

Частые вопросы

Нужен ли интернет для работы MQTT

Нет. Брокер и клиенты общаются внутри локальной сети, поэтому свет, климат и датчики продолжают работать при обрыве интернета. Внешний доступ нужен только для управления извне дома.

Чем MQTT лучше родной интеграции

Он не лучше, он универсальнее. Родная интеграция обычно удобнее и полнее, если она существует. MQTT выручает, когда интеграции нет или когда производитель закрывает облако.

Можно ли ставить один брокер на весь дом

Да, и так обычно и делают. Один брокер обслуживает и Zigbee-устройства, и самодельные датчики, и интеграцию Home Assistant. Разделять брокеры имеет смысл только при очень большом числе устройств или при желании изолировать гостевые устройства.

Безопасно ли открывать брокер в интернет

Напрямую нет. Порт без шифрования и без пароля даёт постороннему доступ к управлению устройствами, включая те, что коммутируют нагрузку. Для удалённого доступа используют VPN или шифрованное подключение с проверкой сертификата.

Почему устройство не появляется в Home Assistant

Обычно потому, что не пришло сообщение автообнаружения. Проверьте, включён ли префикс обнаружения в настройках интеграции, публикует ли устройство конфиг вообще и был ли этот конфиг retained. Помогает перезапуск устройства при уже подключённом Home Assistant.

Что почитать дальше

Войти, чтобы поставить лайк
ФОРУМ

Обсуждение статьи

Обсуждений пока нет. Вопрос по этой статье можно задать в форуме — тема будет связана с материалом.

Открыть тему по статье

Комментарии

Войдите, чтобы оставить комментарий.