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. Умные дома (Home Assistant, OpenHAB)
MQTT широко используется в системах домашней автоматизации, таких как Home Assistant и OpenHAB. Протокол позволяет легко добавлять новые устройства (датчики, умные розетки, камеры) без изменения архитектуры системы.
Примеры использования:
Управление освещением (включение/выключение, диммирование).
Мониторинг температуры, влажности, CO₂.
Управление климатом (термостаты, кондиционеры).
Системы безопасности (датчики движения, камеры, сигнализации).
2. Промышленные системы (SCADA, IIoT)
В промышленности MQTT применяется в SCADA (диспетчерское управление) и IIoT (Industrial IoT). Поддержка QoS (Quality of Service) гарантирует доставку критически важных сообщений, а также возможность подключения тысяч датчиков и устройств к одному брокеру.
Примеры использования:
Мониторинг состояния оборудования (вибрация, температура, износ).
Управление производственными линиями (PLC, роботы, конвейеры).
Сбор данных с датчиков (давление, расход, уровень жидкости).
Прогнозирующее обслуживание (Predictive Maintenance) – анализ данных для предотвращения поломок.
3. Телеметрия автомобилей (Tesla и другие)
MQTT используется в автомобильной телеметрии для передачи данных между бортовыми системами и облачными сервисами. Низкий объем передаваемых данных экономит трафик и снижает задержки.
Примеры использования:
Tesla – передача данных о состоянии батареи, пробеге, местоположении.
Коммерческий транспорт – мониторинг расхода топлива, стиля вождения, маршрутов.
Автономные автомобили – обмен данными между машинами (V2V) и инфраструктурой (V2I).
MQTT — простыми словами
MQTT — это как "СМС для умных устройств". Он помогает гаджетам (датчикам, лампочкам, телефонам) обмениваться короткими сообщениями даже при плохом интернете.
Например:
Задача: Датчик на окне сообщает, что окно открыто.
- Датчик (publisher) шлет брокеру:
- Топик: myhome/window/kitchen
- Сообщение: open
2. Ваш смартфон (subscriber) получает это сообщение и пишет: "Закрой окно на кухне!"
MQTT — оптимальный выбор для IoT благодаря низкому оверхеду, гибкости и поддержке QoS. Развитие стандарта (v5.0) расширяет его применение в промышленности и облачных системах. Благодаря своей простоте и эффективности, MQTT остается одним из ключевых протоколов для современных IoT-решений.
Щелкните здесь, и запланируйте подробный ДЕМО с экспертами, чтобы узнать, как INTELVISION может помочь вам в создании интеллектуального здания.
Читайте наши статьи👀 и подписывайтесь на канал☝