MQTT IoT messaging protocol
Протокол IoT · ISO/IEC 20922 · 9 мин чтения

MQTT — протокол обмена сообщениями IoT

Основа обмена сообщениями современного IoT по модели публикации/подписки. Как MQTT вписывается в умный дом и автоматизацию зданий рядом с KNX, DALI и Home Assistant.

home/temphome/pvhome/motionautomatizācijalietotneierakstiMQTTbrokerpub / sub · QoSPublishersSubscribers

Что такое MQTT?

MQTT (Message Queuing Telemetry Transport) — это лёгкий протокол обмена сообщениями по модели публикации/подписки, изначально разработанный для спутниковых каналов в 1990-х годах (IBM/Eurotech). Сегодня это доминирующий протокол для связи устройств с сервером в IoT — от датчиков ESP8266 до промышленных ПЛК.

В отличие от KNX (на основе шины) или Modbus (ведущий/ведомый), MQTT использует модель брокера: устройства публикуют сообщения в топики на центральном брокере (например, Mosquitto), и любой подписчик, слушающий этот топик, получает сообщение. Нет прямой связи между устройствами.

Ключевые понятия:

  • Брокер: Центральный сервер, маршрутизирующий все сообщения (Mosquitto, HiveMQ, EMQX). В умном доме = работает на сервере HA или на отдельном Pi.
  • Топик: Иерархический строковый путь, например home/livingroom/light/state
  • Публикация: Устройство отправляет сообщение в топик
  • Подписка: Клиент слушает топик и получает все опубликованные в нём сообщения
  • Сохраняемое сообщение: Брокер хранит последнее значение — новые подписчики получают его сразу
  • QoS 0/1/2: Не более одного раза / Не менее одного раза / Ровно один раз — гарантия доставки

Спецификация MQTT

ПараметрЗначение
СтандартISO/IEC 20922 (MQTT 3.1.1), MQTT 5.0
ТранспортTCP/IP (порт 1883) или TLS (порт 8883)
ТопологияЗвезда (с центром на брокере)
НаправлениеДвунаправленная публикация/подписка
Полезная нагрузкаЛюбая бинарная/текстовая — обычно JSON или простое значение
Разделитель топиков/ (косая черта), например home/floor1/room2/temp
Подстановка (один уровень)+ (плюс), например home/+/light
Подстановка (несколько уровней)# (решётка), например home/#
QoS 0Отправил и забыл — без гарантии доставки
QoS 1Не менее одного раза — получатель подтверждает (возможны дубли)
QoS 2Ровно один раз — четырёхэтапное рукопожатие
Сохраняемые сообщенияБрокер хранит последнее сообщение по каждому топику
Сообщение WillОтправляется брокером при неожиданном отключении клиента
АутентификацияИмя пользователя/пароль, сертификаты TLS
Порт (без шифрования)1883
Порт (TLS)8883

MQTT в умном доме — экосистема

MQTT — это общий язык DIY и полупрофессионального умного дома. Несколько крупных проектов используют его как транспортный уровень:

Zigbee2MQTT

zigbee2mqtt.io

Преобразует радиотелеграммы Zigbee в MQTT. Подключите координатор Zigbee (CC2530, SkyConnect) к HA, запустите Zigbee2MQTT — и более 2500 устройств Zigbee появятся как топики MQTT. Хаб Philips Hue не нужен.

Tasmota / ESPHome

tasmota.github.io

Прошивка с открытым исходным кодом для модулей ESP8266/ESP32. Прошейте недорогое реле Sonoff с Tasmota — и оно станет умным выключателем, публикующим в MQTT. ESPHome нативен для HA.

Интеграция Home Assistant MQTT

home-assistant.io

HA может публиковать в любой топик MQTT и подписываться на него. Настройка через YAML или интерфейс. MQTT Discovery автоматически создаёт сущности HA, когда устройство объявляет о себе через определённый топик.

Node-RED

nodered.org

Визуальное программирование на основе потоков, которое подписывается на топики MQTT, применяет логику и публикует в другие топики или конечные точки KNX/HTTP. Часто используется вместе с HA для сложной маршрутизации.

WirenBoard

wirenboard.com

Российский контроллер на DIN-рейку использует MQTT как основной протокол. WirenBoard публикует все показания датчиков и принимает управление через топики MQTT. Работает с HA и Node-RED.

Примеры структуры топиков

Пример дерева топиков MQTT (умный дом)

home/
├── livingroom/
│   ├── light/state          → "ON" / "OFF"
│   ├── light/brightness     → "75"  (0-100%)
│   ├── light/color_temp_k   → "3000"
│   ├── temperature          → "21.5"
│   └── occupancy            → "true" / "false"
├── kitchen/
│   ├── light/state          → "ON"
│   └── humidity             → "45"
├── bedroom/
│   ├── blind/position       → "75"  (0=open, 100=closed)
│   └── thermostat/setpoint  → "20.5"
└── panel/
    ├── meter/power_w        → "1247"
    └── meter/energy_kwh     → "1852.3"

MQTT против KNX — что когда использовать

АспектMQTTKNX TP
ИнфраструктураIP-сеть (Ethernet/Wi-Fi)Выделенный кабель шины TP
НадёжностьЗависит от сети и времени работы брокераДетерминирована, шина всегда активна
ЗадержкаМиллисекунды (IP) + обмен с брокером<50 мс (прямая телеграмма по шине)
МасштабируемостьНеограниченная (горизонтальное масштабирование)255 адресов на линию, максимум 15 линий
Сложность настройкиНизкая (брокер + публикация/подписка)Высокая (программирование ETS, адресация)
Стоимость оборудованияНизкая (ESP8266 = 2 €)Высокая (актор KNX = 50–200 €+)
СертификацияНе требуетсяСертификат KNX + лицензия ETS
Работает без сервера❌ Брокер должен быть запущен✅ Локальная шина работает без сервера
Лучший сценарийДанные датчиков, интеграция IoT, гибкое DIYКритичное к безопасности управление, коммерческое здание
Типичный пользовательМейкер, интегратор HA, разработчик IoTИнженер-электрик, специалист по DALI/KNX

Честный ответ: В хорошо спроектированной премиальной установке KNX отвечает за управление оборудованием (коммутация, диммирование, шторы), а MQTT/IP — за агрегацию данных датчиков и программные интеграции (мониторинг энергии, присутствие, погода). Они дополняют друг друга, а не конкурируют.

Варианты интеграции KNX + MQTT

Home Assistant (интеграции KNX + MQTT)

Интеграции KNX и MQTT работают в HA. Автоматизации могут читать значения датчиков MQTT и запускать акторы KNX — или наоборот. Никакого дополнительного оборудования.

knx-mqtt-bridge (открытый исходный код)

Автономный сервис на Node.js, двунаправленно связывающий групповые адреса KNX с топиками MQTT. Каждый GA KNX сопоставляется с топиком MQTT. Работает на Pi или в Docker.

Узлы Node-RED KNX + MQTT

node-red-contrib-knx + узлы MQTT. Визуальное программирование потоков: топик MQTT → преобразование → телеграмма KNX. Подходит для сложной условной маршрутизации.

Шлюз WirenBoard WB-MGW

Шлюз WirenBoard может транслировать между устройствами RS-485/Modbus и MQTT. Затем HA читает MQTT и публикует в KNX. Распространён в Восточной Европе.

Архитектура KNX + MQTT, спроектированная под ваш проект

Мы интегрируем сенсорные сети MQTT со щитами управления KNX — Zigbee2MQTT, счётчики энергии, датчики ОВиК — всё объединено в одной системе.

Запросить расчёт →
Loading...
Back to top