СтатьяОпубликовано 20 марта 2026 · обновлено 20 марта 2026

MQTT — что это за протокол и зачем нужен брокер

Датчики, реле и контроллер договариваются через посредника — брокера. Разбираем, как это работает, и чем такая схема лучше десятка устройств, которые стучатся друг к другу напрямую.

Уровень
Есть опыт
Содержание

MQTT — лёгкий протокол обмена сообщениями по модели «публикация — подписка»: устройства не говорят друг с другом напрямую, а публикуют сообщения в темы на брокере, и брокер раздаёт их подписчикам. Брокеру нужен порт 1883 без шифрования или 8883 с TLS: оба порта зарегистрированы в IANA для MQTT (спецификация OASIS, раздел 4.2).

Уровни доставки (QoS) — три: 0 «не больше одного раза», 1 «минимум один раз» и 2 «ровно один раз». Флаг retain заставляет брокер хранить последнее сообщение темы и отдавать его новому подписчику.

Ниже — как устроен обмен, темы и подстановки, QoS и retain, порты и безопасность, какой брокер взять и когда брокер не нужен.

Зачем это нужно

Умные устройства на столе обмениваются сообщениями через брокер

Устройство публикует сообщение в тему, а те, кому оно интересно, подписаны на эту тему. Передаёт всё это брокер — программа, которая принимает сообщения и раздаёт подписчикам. Спецификация и описание протокола — на mqtt.org.

Для умного дома это удобно по трём причинам. Датчику не нужно знать адреса получателей, а нового получателя можно добавить, не трогая датчик. Сам протокол рассчитан на слабые контроллеры вроде ESP8266 и ESP32 и нестабильный Wi-Fi.

Как устроен обмен

Датчики температуры и влажности, которые публикуют показания

Пять понятий описывают весь обмен. Таблица показывает их на примерах.

Понятие Что это Пример
Брокер Сервер, через который идут все сообщения Mosquitto на мини-ПК или малине
Клиент Любое устройство или программа ESP32 с датчиком, Home Assistant, телефон
Тема (topic) Адрес сообщения, уровни через косую черту dom/kuhnya/temperatura
Публикация Отправка значения в тему Датчик шлёт 21.5
Подписка Запрос на получение сообщений темы Панель подписана на dom/+/temperatura

Клиент — это и датчик, и приложение на телефоне: все подключаются к брокеру одинаково.

Темы и подстановочные знаки

В подписке есть два знака. По спецификации (раздел 4.7) + заменяет ровно один уровень темы, а # — родительскую тему и любое число уровней под ней; # ставят в конце фильтра.

Пример из спецификации: фильтр sport/tennis/+ подходит к sport/tennis/player1, но не к sport/tennis/player1/ranking. Так одна подписка dom/+/temperatura забирает температуры из всех комнат.

Уровни доставки и retain

Две настройки, которые стоит знать с первого дня. Они определяют надёжность и память брокера.

  • QoS 0.«Не больше одного раза»: сообщение может потеряться, зато нет задержки; подходит для частых показаний датчика.
  • QoS 1.«Минимум один раз»: сообщение дойдёт, но возможны повторы; подходит для команд на реле, если повтор команды безвреден.
  • QoS 2.«Ровно один раз»: самая медленная схема; в бытовом умном доме нужна редко.
  • Retain.Брокер запоминает последнее сообщение темы и отдаёт его новому подписчику сразу; пустое сообщение с retain очищает запомненное.

Без retain панель после перезагрузки показывает пустоту до следующей публикации датчика. Определения QoS и retain — в разделах 3.3.1.2 и 3.3.1.3 спецификации MQTT 3.1.1.

Какой брокер взять

Мини-компьютер, на котором работает домашний брокер сообщений

Самый распространённый для дома — Eclipse Mosquitto, открытый и очень скромный по ресурсам. Он работает на любом маломощном компьютере, а Home Assistant умеет ставить его одним дополнением.

Порты и безопасность

Порт 1883 передаёт данные без шифрования, 8883 — с TLS. Спецификация (раздел 5.1, справочный) рекомендует серверам с TLS использовать порт 8883.

Клиент при подключении может передать имя и пароль (раздел 5.4.1): как их проверять, решает брокер. Передача пароля открытым текстом уязвима для перехвата, поэтому для удалённого доступа нужен шифрованный порт или VPN.

Что учесть при настройке:

  1. Пароли.Включите пароли для клиентов и не оставляйте анонимный доступ.
  2. Не в интернет.Не выставляйте брокер в интернет «как есть»: для удалённого доступа используйте VPN или порт 8883 с сертификатом.
  3. Названия тем.Задавайте осмысленные названия тем с самого начала: переименовывать их потом придётся во всех устройствах.
  4. Постоянное питание.Держите брокер на устройстве, которое включено всегда.

Эти четыре правила закрывают основные риски домашнего брокера.

Когда брокер не нужен

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

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

Типовые ошибки

  • Один идентификатор клиента у двух устройств.Брокер отключает то одно, то другое, и они бесконечно переподключаются.
  • Брокер без пароля.В общей сети или с пробросом порта наружу.
  • Темы без структуры.temp1, temp2: через полгода никто не помнит, что где.
  • Реле без retain и обратной связи.После перезагрузки платы состояние рассинхронизируется.
  • Брокер на компьютере, который выключают на ночь.Дом теряет связь.
  • QoS 2 для всего подряд.Лишняя нагрузка без выгоды для датчиков.

Короткий вывод

MQTT нужен, когда в доме больше трёх-четырёх своих устройств и они должны общаться между собой. Для одного датчика это лишнее.

Начните с Mosquitto на домашнем сервере, продумайте структуру тем и сразу включите пароли.

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

Нужен ли TLS в домашней сети?

Если сеть изолирована и доступ к ней только у вас, можно обойтись паролем. Если брокер доступен снаружи или в сети есть чужие устройства, нужен TLS: пароль открытым текстом можно перехватить.

Порт для TLS — 8883. Для удалённого доступа лучше VPN, чем открытый брокер.

Какой QoS выбрать для команды на реле?

QoS 1: команда дойдёт минимум один раз. Повтор возможен, поэтому команда должна быть безвредной при повторе, например «включить» или «выключить», а не «переключить».

Для показаний датчика хватит QoS 0. QoS 2 для дома нужен редко.

Почему устройства бесконечно переподключаются?

Часто у двух устройств одинаковый идентификатор клиента: по спецификации брокер отключает уже подключённого клиента с таким идентификатором.

Задайте каждому устройству уникальный идентификатор. Проверьте также питание и Wi-Fi.

Можно ли открыть брокер MQTT в интернет, чтобы управлять домом из поездки?

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

Если нужно управление из другого города, настройте VPN на роутере или используйте проверенный удалённый доступ платформы.

Где взять брокер и на чём его запустить?

Mosquitto устанавливается на мини-ПК, одноплатник или как дополнение Home Assistant. В российских магазинах продаются готовые мини-ПК и одноплатные компьютеры.

Брокер скромен по ресурсам. Главное — держать его на устройстве, которое включено постоянно.

Полезно при расчёте

Тегиmqttbroker
Редакция СхемОкАвторМатериалы готовит редакция сайта, формулы и номиналы сверяются с даташитами производителей, расчёты — с калькуляторами сайта.99 материалов

Похожие материалы