Избранные статьи

Автоматизация

Протокол MQTT: принципы работы, архитектура и применение

Протокол MQTT: принципы работы, архитектура и применение

MQTT (Message Queuing Telemetry Transport) — это легкий publish-subscribe-протокол для передачи сообщений между устройствами в условиях ограниченной полосы пропускания и ненадежных сетей. Разработанный в 1999 году Энди Стэнфордом-Кларком (IBM) и Арленом Ниппером (Eurotech), MQTT стал стандартом де-факто для IoT благодаря своей простоте и эффективности. В 2014 году OASIS стандартизировал MQTT v3.1.1 (ISO/IEC 20922), а позже выпустил MQTT v5.0 с улучшенной функциональностью.


История возникновения MQTT

MQTT (Message Queuing Telemetry Transport) был создан в 1999 году инженерами Энди Стэнфордом-Кларком (IBM) и Арленом Ниппером (Eurotech) для решения задачи мониторинга нефтепроводов в удаленных районах. Проект требовал минимального расхода энергии (устройства работали на батареях годами) и устойчивости к нестабильным спутниковым каналам связи.
Изначально протокол назывался "SCADA Protocol", затем "MQ Integrator", и только позже получил имя MQTT (хотя аббревиатура неофициально расшифровывается как Message Queuing Telemetry Transport, в спецификациях OASIS это не закреплено).
В 2010 году MQTT начал набирать популярность в IoT-сфере благодаря открытости и адаптивности. В 2013 году IBM и Eurotech передали MQTT v3.1 в OASIS для стандартизации. В 2014 году вышла версия MQTT v3.1.1 (стандарт ISO/IEC 20922), а в 2019 году — MQTT v5.0 с расширенной функциональностью.


Архитектура MQTT

MQTT использует модель publish-subscribe, где клиенты не обмениваются данными напрямую, а взаимодействуют через брокер. Основные компоненты:
Publishers — устройства, отправляющие сообщения в топики.
Subscribers — устройства, получающие сообщения по подписке.
Broker — сервер, управляющий подключениями, подписками и маршрутизацией сообщений.

Каждое сообщение содержит топик (например, sensors/temperature), по которому брокер определяет, кому его доставить. Клиенты могут подписаться на топики с wildcards: + (одноуровневый) и # (многоуровневый).


Форматы пакетов и QoS

MQTT работает поверх TCP/IP и использует бинарные пакеты. Заголовок включает:

  • Тип пакета (CONNECT, PUBLISH, SUBSCRIBE и др., всего 14 типов).
  • Флаги (dup, QoS, retain).
  • Длина оставшихся данных (переменная).

Уровни QoS (Quality of Service):


0️⃣ QoS 0 (At most once) — сообщение отправляется без подтверждения.
1️⃣ QoS 1 (At least once) — брокер подтверждает получение, но возможны дубли.
2️⃣ QoS 2 (Exactly once) — гарантирует однократную доставку через 4-этапный handshake.

Безопасность и аутентификация

MQTT поддерживает:

  • TLS/SSL для шифрования трафика (порт 8883).
  • Аутентификацию через логин/пароль в CONNECT-пакете.
  • Механизм клиентских сертификатов.

Уязвимости:

  • Отсутствие шифрования по умолчанию (порт 1883).
  • Возможность подмены сообщений при MITM-атаках.
  • Утечки данных через топики (например, $SYS/ в Mosquitto).

Применение MQTT в IoT и промышленности


Легкий и эффективный протокол обмена сообщениями, идеально подходящий для IoT и промышленных систем благодаря своей низкой нагрузке на сеть, поддержке работы в режиме реального времени и возможности работы в условиях нестабильного интернета.

1. Умные дома

MQTT широко используется в системах домашней автоматизации. Протокол позволяет легко добавлять новые устройства (датчики, умные розетки, камеры) без изменения архитектуры системы.

Примеры использования:

  • Управление освещением (включение/выключение, диммирование).
  • Мониторинг температуры, влажности, CO₂.
  • Управление климатом (термостаты, кондиционеры).
  • Системы безопасности (датчики движения, камеры, сигнализации).

2. Промышленные системы (SCADA, IIoT)


В промышленности MQTT применяется в SCADA (диспетчерское управление) и IIoT (Industrial IoT). Поддержка QoS (Quality of Service) гарантирует доставку критически важных сообщений, а также возможность подключения тысяч датчиков и устройств к одному брокеру.

Примеры использования:

  • Мониторинг состояния оборудования (вибрация, температура, износ).
  • Управление производственными линиями (PLC, роботы, конвейеры).
  • Сбор данных с датчиков (давление, расход, уровень жидкости).
  • Прогнозирующее обслуживание (Predictive Maintenance) – анализ данных для предотвращения поломок.

3. Телеметрия автомобилей (Tesla и другие)


MQTT используется в автомобильной телеметрии для передачи данных между бортовыми системами и облачными сервисами. Низкий объем передаваемых данных экономит трафик и снижает задержки.

Примеры использования:

  • Tesla – передача данных о состоянии батареи, пробеге, местоположении.
  • Коммерческий транспорт – мониторинг расхода топлива, стиля вождения, маршрутов.
  • Автономные автомобили – обмен данными между машинами (V2V) и инфраструктурой (V2I).

MQTT — простыми словами


MQTT — это как "СМС для умных устройств". Он помогает гаджетам (датчикам, лампочкам, телефонам) обмениваться короткими сообщениями даже при плохом интернете.

Например:


Задача: Датчик на окне сообщает, что окно открыто.

  1. Датчик (publisher) шлет брокеру:

    • Топик: myhome/window/kitchen

    • Сообщение: open
  2. Ваш смартфон (subscriber) получает это сообщение и пишет: "Закрой окно на кухне!"

MQTT — оптимальный выбор для IoT благодаря низкому оверхеду, гибкости и поддержке QoS. Развитие стандарта (v5.0) расширяет его применение в промышленности и облачных системах. Благодаря своей простоте и эффективности, MQTT остается одним из ключевых протоколов для современных IoT-решений.

 

+7 812 612-77-60

Санкт-Петербург

+7 919 082-34-81

Москва