Обзор MQTT

The Essentials of MQTT Титульное изображение

В постоянно развивающемся ландшафте Интернета вещей (IoT) и протоколов передачи данных в реальном времени MQTT стал мощным и универсальным решением.

MQTT, который раньше был аббревиатурой Message Queue Telemetry Transport (подробнее об этом ниже), представляет собой легкий и эффективный протокол обмена сообщениями, предназначенный для устройств с ограниченными ресурсами и ненадежных сетей.

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

История MQTT

Истоки MQTT берут начало в конце 1990-х годов, когда Энди Стэнфорд-Кларк и Арлен Ниппер разработали протокол для мониторинга нефтепроводов. Мониторинг протяженных трубопроводов в удаленных районах может представлять определенную сложность.

Идея заключалась в том, чтобы придумать что-то очень легкое, чтобы можно было получать необходимую информацию (состояние, температура и т.д.) с устройств, находящихся в глуши.

Фотография удаленного трубопровода, который можно контролировать с помощью MQTT

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

Модель "публикация-подписка" позволяет датчикам и устройствам передавать данные на центральный узел, где абоненты (часто системы мониторинга) могут получать и обрабатывать эту информацию.

Как только появились продукты IoT и Raspberry Pis, это сделало MQTT передовым способом обеспечения связи между устройствами.

Таким образом, MQTT быстро вышел за рамки своего первоначального применения в телеметрии.

Эта эволюция привела к заметному изменению названия.

Первоначально MQTT расшифровывалось как MQ Telemetry Transport, где MQ означало Message Queue (несмотря на то, что очереди сообщений не используются - об этом подробнее ниже).

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

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

Все верно - MQTT означает просто MQTT.

Фотография датчика "умного дома", которым можно управлять с помощью MQTT

Сегодня ландшафт приложений гораздо более обширен и разнообразен, чем в 90-е годы.

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

Эффективность и малый вес делают его идеальным выбором для сред с ограниченными ресурсами, таких как встраиваемые системы и микроконтроллеры.

Как это работает

В MQTT используется модель "издатель - подписчик". Это означает, что в основе архитектуры MQTT лежат два ключевых компонента: издатели и подписчики.

Эти компоненты взаимодействуют через центральный брокер, который выступает в роли посредника, отвечающего за маршрутизацию сообщений по назначению.

Итак, у вас есть три устройства, датчика или приложения, которым необходимо взаимодействовать друг с другом: ноутбук, Raspberry Pi и маршрутизатор. Если вы подключите Raspberry Pi и ноутбук к WiFi через маршрутизатор, то сможете использовать маршрутизатор в качестве посредника для связи Pi и ноутбука.

Более подробно, устройства рассылают сообщения на основе темы.

Это ключевое слово в мире MQTT.

Темы - это очень легкие фрагменты информации. Они расскажут вам о том, включено или выключено устройство, о его температуре, IP-адресе и т.д. Темы не дадут вам бесконечного количества информации.

Именно это делает MQTT таким сверхэффективным и стабильным.

Это также делает его идеальным, например, для мониторинга Raspberry Pis с помощью PiCockpit. Ведь он обеспечивает устойчивое и надежное соединение между устройствами.

Замечательно то, что темы работают довольно очевидно. Тема состоит из строк текстов, разделенных прямыми слэшами, например:

myRaspberryPis / livingRoomPi / температура

И эта тема служит каналом передачи сообщений, по которому передается температура Raspberry Pi в гостиной.

Брокер получает сообщение и временно хранит его.

А затем устройства подписываются на определенные темы брокера, чтобы получать эту информацию.

Именно из-за этого название MQTT с самого начала было ошибочным. Эта модель публикации-подписки сильно отличается от модели очереди сообщений, в которой данные хранятся до тех пор, пока они не понадобятся клиентам.

Области применения MQTT

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

Именно это делает его идеальным для сценариев с ограниченной пропускной способностью и нестабильными соединениями.

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

Следует отметить, что все это - вещи, с которыми PiCockpit, кстати, может вам помочь.

Судно, следящее за погодой

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

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

Преимущества

MQTT отличается высокой эффективностью. Его облегченная конструкция минимизирует накладные расходы на передачу данных. Двоичный формат и компактный заголовок делают его отличным выбором для устройств с ограниченной вычислительной мощностью и пропускной способностью.

Кроме того, она очень надежна. Модель публикации-подписки обеспечивает надежную доставку сообщений. Подписчики могут получать пропущенные сообщения, как только они появятся в сети, что предотвращает потерю данных.

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

Тем не менее, как и все протоколы, он имеет ряд недостатков.

Недостатки

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

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

Конечно, это можно рассматривать как положительный момент с точки зрения безопасности, поскольку доступ к данным не так уж велик.

Правда, постоянный обмен сообщениями требует дополнительной настройки.

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

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

Как PiCockpit использует MQTT

PiCockpit, наш любимый способ мониторинга и управления Raspberry Pis, использует возможности MQTT для обеспечения бесперебойного и эффективного контроля над сетью устройств.

Используя в качестве протокола связи MQTT, PiCockpit предоставляет пользователям полный набор инструментов для удаленного управления парком Raspberry Pi, что делает его незаменимым инструментом для энтузиастов, разработчиков и профессионалов.

Кнопка PiCockpit MQTT

По своей сути PiCockpit позволяет пользователям отслеживать различные аспекты работы устройств Raspberry Pi, такие как использование процессора и памяти, сетевая статистика и подключенные аппаратные компоненты.

Отдельные устройства собирают информацию и обмениваются ею по сети, используя архитектуру публикации-подписки MQTT. Каждый Raspberry Pi выступает в роли клиента MQTT, способного как публиковать, так и подписываться на определенные темы, что позволяет обмениваться данными в режиме реального времени.

Одним из ключевых преимуществ использования этой системы в PiCockpit является ее малый вес, что прекрасно согласуется с ограниченными ресурсами устройств Raspberry Pi.

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

Подход PiCockpit выходит за рамки простого мониторинга данных. Он облегчает удаленное управление, позволяя выполнять команды на устройствах Raspberry Pi с централизованной панели управления.

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

Благодаря такой двунаправленной связи PiCockpit является не просто инструментом пассивного мониторинга, а активной платформой для управления устройствами.

Кроме того, использование в PiCockpit протокола MQTT обеспечивает легкую масштабируемость ваших проектов.

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

PiCockpit осуществляет мониторинг и управление Raspberry Pis

В заключение следует отметить, что интеграция MQTT в PiCockpit демонстрирует универсальность и эффективность этого протокола в области удаленного управления устройствами.

Таким образом, PiCockpit позволяет не только контролировать, но и легко управлять парком Raspberry Pi. Достаточно установить клиент PiCockpit на свой Raspberry Pi, и все готово!

Заключение

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

Он легкий. Надежный. И очень универсален.

Самое главное, что теперь это не просто протокол связи для пассивного сбора данных. Теперь его можно использовать для активного удаленного управления устройствами и датчиками.

MQTT - ценный инструмент в арсенале протоколов для обеспечения бесперебойной и эффективной связи.

Самое главное, что с учетом всех проектов IoT и домашней автоматизации, существующих в наши дни, MQTT может сделать вашу жизнь лучше.

Вы можете установить PiCockpit на свой Raspberry Pi и убедиться во всех его преимуществах!

Нажмите здесь, чтобы посмотреть, как сделать фоторезистор с помощью Pico W с использованием MQTT - Это отличный небольшой проект для проверки возможностей и эффективности MQTT.

Что бы вы сделали с помощью MQTT, чтобы изменить свою повседневную жизнь?

2 комментариев

  1. Сергей Август 30, 2023 в 8:52 дп

    Автор статьи опоздал с написанием статьи о mqtt лет так на десять...

    • Adam Август 30, 2023 в 9:38 дп

      Лучше поздно, чем никогда. Да, Сергей?

Комментировать