Начало работы с протоколом MQTT: основы и краткое руководство
Начало работы с протоколом MQTT: основы и краткое руководство

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

Что такое MQTT?

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

Почему MQTT — лучший протокол для Интернета вещей?

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

  • легкий:Интернет Устройства обычно ограничены с точки зрения вычислительной мощности, памяти и энергопотребления. MQTT Низкие накладные расходы、Сообщение маленькоеиз Характеристики делают его идеальным для этих устройств,Потому что он потребляет меньше ресурсов,Эффективное общение достигается даже при ограниченных возможностях.
  • надежный:Интернет Сеть часто сталкивается с высокой задержкой и нестабильностью. MQTT Поддержка нескольких QoS Уровень, учет сеанса и длительное соединение, что гарантирует надежность информации даже в сложных условиях, что делает его идеальным для Интернета. вещейприложение.
  • безопасная связь:безопасно для Интернет Вещи Сеть имеет решающее значение, поскольку она часто предполагает передачу конфиденциальных данных. для обеспечивает конфиденциальность данных при передаче, MQTT Обеспечивает возможности шифрования Transport Layer Security (TLS) и Secure Socket Layer (SSL). Кроме того, MQTT также предоставляет механизмы аутентификации и авторизации с помощью учетных данных имени пользователя/пароля и сертификатов.,Для защиты доступа к сети и ее ресурсам.
  • Двусторонняя связь:MQTT измодель публикация-подпискидля обеспечивает бесперебойную двустороннюю связь между устройствами путь связи. Клиент может либо подписаться на темовую информацию, либо подписаться на получение конкретной темы по изинформации, тем самым реализуя Интернет. Эффективный обмен данными в экосистеме вещей,Без прямого соединения устройств между собой. Эта модель также упрощает интеграцию новых устройств.,В то же время это гарантирует легкость расширения системы.
  • непрерывный、Сеанс с отслеживанием состояния:MQTT предоставленные клиенты Broker Возможность поддерживать сеансы с сохранением состояния между соединениями позволяет системе запоминать подписки, недоставленные данные и информацию даже после отключения соединения. Кроме того, клиент также можно использовать в режиме «Установить». соединение определяет интервал поддержания активности, который вызывает Broker Регулярно проверяйте статус соединения. еслисоединятьпрерывание, Брокер Недоставленная информация будет храниться (согласно QoS Уровень определен),И постарайтесь передать их, когда клиент ресоединять. Эта функция обеспечивает надежную связь,Снижает риск потери данных из-за прерывистого подключения.
  • Массовая поддержка устройств Интернета вещей:Интернет Системы вещей часто включают в себя большое количество устройств и требуют системы, способной обрабатывать крупномасштабные развертывания изпротокол.MQTT. Излегкие функции, низкое потребление полосы пропускания и эффективное использование ресурсов делают его идеальным решением для крупномасштабного Интернета. Приложение «Вещи из идеальных мест». Приняв модель публикации-подписки,MQTT Отправитель и получатель разделены, что эффективно снижает сетевой трафик и использование ресурсов. Кроме того, соглашение имеет различные QoS Уровень поддержки позволяет настраивать доставку информации в соответствии с потребностями, обеспечивая оптимальную производительность в различных сценариях.
  • Языковая поддержка:Интернет Система вещей включает в себя разработку устройств иприложение.MQTT с использованием различных языков программирования. Имеет широкий ассортимент поддержка, позволяющая легко интегрировать его с несколькими платформами и технологиями, что позволяет использовать Интернет Бесшовная коммуникация и совместимость в экосистеме вещей. Вы можете прочитать наше из MQTT-клиент ПрограммированиеСерия статей,Узнайте, как PHP, Node.js, Python, Golang, Node.js используются в других языках программирования MQTT.

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

понять Как работает Для MQTT вам сначала необходимо освоить следующие концепции: MQTT Клиент, MQTT Брокер, модель публикации-подписки, темы, QoS.

MQTT-клиент

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

MQTT Broker

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

модель публикации-подписки

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

На рисунке ниже показано MQTT процесс публикации/подписки. Датчик температуры подключается как клиент к MQTT Посредник и публикация данных о температуре по определенной теме (например, Temperature)。MQTT Broker 接получать Долженинформациябудет нести ответственность за его пересылкуподписка Ответилтема(Temperature)изподписка ВОЗклиент.

MQTT модель публикации-подписки
MQTT модель публикации-подписки

тема

MQTT Соглашение о пересылке информации.тема в соответствии с темой через / различать уровни, аналогичные URL Путь, например:

Язык кода:txt
копировать
chat/room/1

sensor/10/temperature

sensor/+/temperature

MQTT тема поддерживает следующие два типа Подстановочного знак:+ и #

  • +:Указывает на один слой Подстановочный знак,Например a/+ соответствовать a/x или a/y
  • #:Представляет несколько слоев Подстановочный знак,Например a/# соответствовать a/xa/b/c/d

Уведомление:Подстановочный знактема Может использоваться только дляподписка,Не может использоваться для выпускать.

QoS

MQTT предоставляет три качества обслуживания (QoS) для обеспечения надежности сообщений в различных сетевых средах.

  • QoS 0: информация передается не более одного раза. есликогда бывший клиент недоступен,Он потеряет эту информацию.
  • QoS 1: сообщение доставляется хотя бы один раз.
  • QoS 2: сообщения доставляются только один раз.

Рабочий процесс MQTT

Поняв основные компоненты MQTT, давайте взглянем на его общий рабочий процесс:

  1. клиентиспользовать TCP/IP соглашение с Broker Установить соединение,Можетвыбиратьиспользовать TLS/SSL Шифрование для достижения безопасной связь. клиент Предоставьте информацию для аутентификации и укажите тип сеанса (Чистый Session или Persistent Session)。
  2. Клиент уже может отправлять информацию по конкретным темам,Вы также можете подписаться на тему, чтобы получать информацию.。когдаклиентвыпускатьинформациячас,Он отправит информацию MQTT Broker, пока клиент подпишется на информацию;,Он будет получать по подписке информацию, связанную с темой.
  3. MQTT Broker перениматьвыпускатьизинформация,И переслать эту информацию подписанному соответствующему темаизклиенту. Это обеспечит надежную доставку информации в соответствии с уровнем QoS.,И в зависимости от типа сеанса для отключения подключенияклиента хранилища информации.

Начало работы с MQTT: краткое руководство

Ниже мы будем использовать несколько простых примеров, чтобы показать, как использовать МКТТ. Прежде чем приступить к работе, необходимо Подготовьте MQTT-брокер и MQTT-клиент。

Подготовьте MQTT-брокер

Вы можете создать свой собственный MQTT Broker, выбрав между частным развертыванием или полностью управляемым облачным сервисом. Или вы можете использовать бесплатного публичного брокера.

  • частное развертывание

EMQX Является наиболее масштабируемым открытым исходным кодом. MQTT Брокер для Интернета вещей、промышленность Интернет Вещи Интернет транспортных средств. Вы можете запустить следующее Docker команда для установки EMQX。

Язык кода:javascript
копировать
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx
  • Полностью управляемыйизоблачные сервисы

Запуск с полностью управляемым облачным сервисом MQTT Сервис – самый удобный способ. Как показано на рисунке ниже, EMQX Cloud Можно запустить за считанные минуты и приступить к работе уже через AWS、Google Cloud и Microsoft Azure из 17 Обеспечить оперативную поддержку в каждом регионе.

EMQX MQTT Cloud
EMQX MQTT Cloud
  • Бесплатный публичный MQTT-брокер

В этой статье мы будем использовать EMQ Обеспечить бесплатную публикацию MQTT Брокер, который основан на полностью управляемом MQTT облачные сервисы - EMQX Cloud создавать. Информация о сервере следующая:

Server: broker.emqx.io TCP Port: 1883 WebSocket Port: 8083 SSL/TLS Port: 8883 Secure WebSocket Port: 8084

Подготовьте клиент MQTT.

В этой статье мы будем использовать MQTTX Обеспечить поддержку доступа через браузер Инструмент MQTT-клиент, адрес доступа для http://www.emqx.io/online-mqtt-client

MQTTX Это кроссплатформенный продукт MQTT 5.0 Клиент для настольных ПК доступен по адресу macOS、Linux、Windows работать в операционной системе. Его удобный интерфейс, похожий на чат, позволяет пользователям легко создавать несколько MQTT/MQTTS подключайтесь и продолжайте MQTT Отписаться без информации.

MQTTX
MQTTX

Создайте соединение MQTT.

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

Открыть в браузере http://www.emqx.io/online-mqtt-client , Нажмите на середину страницы из New Connection кнопку и вы увидите следующую страницу.

Создайте соединение MQTT.
Создайте соединение MQTT.

мы Name Войти Simple Demo,Затем Нажмитеверхний правый уголиз Connect кнопка для создания MQTT соединять. Как показано на рисунке ниже, соединение установлено успешно.

MQTT соединятьуспех
MQTT соединятьуспех

Подпишитесь на темы через подстановочный знак

Далее мы 上создатель Simple Demo соединятьсередина Подпишитесь на темы через подстановочный знак sensor/+/temperature,Таким образом можно получить данные о температуре, отправленные всеми датчиками.

Как показано ниже, нажмите New Subscription кнопка во всплывающем окне Topic Поле Войтитема sensor/+/temperature,QoS сохранить значение по умолчанию 0。

подписка MQTT Подстановочный знактема
подписка MQTT Подстановочный знактема

подпискауспех后,будет внутриподпискасписокизсередина间看到新增了一полоска记录。

MQTT темаподпискауспех
MQTT темаподпискауспех

Публикация сообщений MQTT

Следующий,нас Нажмитев левом менюиз + кнопка создает два соединения с именем Sensor 1 и Sensor 2,Используется для моделирования двух датчиков температуры.

Создайте соединение MQTT.
Создайте соединение MQTT.

соединятьсоздаватьуспех后,Вы увидите три соединяющихся,Индикатор онлайн-статуса на левой стороне каждого соединения горит зеленым светом.

трисоединятьсоздаватьуспех
трисоединятьсоздаватьуспех

выбирать Sensor 1 соединять,внизу страницыизвыпускатьтема Войти sensor/1/temperature,В поле информации Войдите в формате JSON изинформация,Затем кнопка Нажмите в правом нижнем углу отправляет информацию.

Язык кода:txt
копировать
{
  "msg": "17.2"
}
Публикация сообщений MQTT
Публикация сообщений MQTT

Как показано на рисунке ниже, сообщение было успешно отправлено.

MQTT информациявыпускатьуспех
MQTT информациявыпускатьуспех

Используйте те же шаги, что и в Sensor 2 Разместите по ссылке следующее JSON новости прибыли sensor/2/temperature тема。

Язык кода:txt
копировать
{
  "msg": "18.2"
}

ты увидишь Simple Demo Соединение получило два новых сообщения.

2полоскаинформациянамекать
2полоскаинформациянамекать

Нажмите Simple Demo Во время соединения вы увидите, что два датчика отправляют информацию по двум строкам.

Посмотреть подробную информацию
Посмотреть подробную информацию

Демонстрация функции MQTT

держать сообщение

когда MQTT-клиент на сервер выдаватьинформацию, вы можете установить держать сообщениелоготип。держать сообщение хранится на информационном сервере,Следовать заподписка Должентемаизклиент仍然Можетполучать Долженинформация.

Как показано на рисунке ниже, мы Sensor 1 Проверьте соединение Retain вариант, а затем перейдите к retained_message тему отправить две информации.

MQTT Retain
MQTT Retain

затем,мы Simple Demo Подпишитесь, пока на связи retained_message тема. После успешной подписки вы получите Sensor 1 Отправить из Второй статьи держать сообщение, что означает, что сервер будет хранить только самые последние сообщение。

MQTT держать сообщение
MQTT держать сообщение

Clean Session

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

Однако если клиент подключается и устанавливает Clean Session для false и использовать тот же клиент ID снова онлайн,Затем информационный сервер дляклиента кэширует определенное количество офлайн-информации.,и отправьте его ему, когда он снова появится в сети.

Эта демонстрация использует общественность MQTT Настройки сервера для кэша 5 Минуты офлайн-информации, максимальное количество информации для 1000 полоски и не сохраняйте QoS 0 информация.

Далее мы создаем MQTT 3.1.1 подключай и пользуйся QoS 1 продемонстрировать Clean Session изиспользовать。

В MQTT 5.0 очистка сеанса разделена на чистый запуск и интервал окончания сеанса.

создаватьимядля MQTT V3 изоединять, установка Clean Session для false,выбирать MQTT Версия для 3.1.1。

настраивать Clean Session для false
настраивать Clean Session для false

После успешного подключения подпишитесь clean_session_false тема, и будет QoS Настройки 1。

подписка clean_session_false тема
подписка clean_session_false тема

подпискауспех后,Нажмите правый верхний угол кнопки отключения.,отключитьсясоединять。

отключиться MQTT соединять
отключиться MQTT соединять

Затем придумайте имя для MQTT_V3_Publish изсоединять,MQTT 版本也Настройки 3.1.1. После успешного подключения перейдите в clean_session_false темавыпускать三полоскаинформация.

создаватьимядля MQTT_V3_Publish изсоединять
создаватьимядля MQTT_V3_Publish изсоединять

затем,выбирать MQTT_V3 соединять,Нажмите кнопку «Соединить» для подключения к серверу.,Получит три офлайн-информации.

Получено три оффлайн информации
Получено три оффлайн информации

Будет сообщение

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

если MQTT-клиент аварийно отключается (нет отправки на сервер до отключения соединения) DISCONNECT сообщение), MQTT Сервер будет выпущен сообщение。

Мы создали одно имя для Last Will изоединятьпро вывести эту функцию.

  • для Чтобы быстро увидеть эффект, ставим Keep Alive Настройки 5 Второй.
  • Last-Will Topic Настройки last_will
  • Last-Will QoS Настройки 1
  • Last-Will Retain Настройки true
  • Last-Will Payload Настройки offline
создаватьимядля Last Will изсоединять
создаватьимядля Last Will изсоединять

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

Затем начните Simple Demo Подключайтесь и подписывайтесь last_will тема. ты получишь Last Will соединятьнастраиватьиз Будет сообщение。

получать Last Will соединятьнастраиватьиз Будет сообщение
получать Last Will соединятьнастраиватьиз Будет сообщение

Узнайте больше о MQTT

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

если вы хотите знать больше MQTT из знаний рекомендуется прочитать EMQ Предоставить из Учебное пособие по MQTT: от новичка до мастераСерия статей,учиться MQTT тема、Подстановочный знак、держать сообщение、Будет сообщение и другие функции. Благодаря этим статьям вы сможете изучить MQTT из Более продвинутые сценарии применения и старт MQTT Приложение и сервис по разработке.

Заявление об авторских правах: Эта статьядля EMQ Оригинал, при перепечатке указывайте источник.

Исходная ссылка:https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose