Эта статья представляет собой вводное руководство по протоколу MQTT и содержит практические примеры кода. Новички в Интернете вещей и MQTT могут освоить основные концепции MQTT с помощью этой статьи и быстро начать разработку сервисов и приложений MQTT.
MQTT (Message Queuing Telemetry Transport) — это легкий протокол передачи сообщений на основе модели публикации-подписки, подходящий для устройств с ограниченными ресурсами и низкой пропускной способностью, высокой задержкой или нестабильной сетевой средой. Он популярен в приложениях Интернета вещей, обеспечивая эффективную связь между датчиками, исполнительными механизмами и другими устройствами.
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 Соглашение о пересылке информации.тема в соответствии с темой через /
различать уровни, аналогичные URL Путь, например:
chat/room/1
sensor/10/temperature
sensor/+/temperature
MQTT тема поддерживает следующие два типа Подстановочного знак:+
и #
。
+
:Указывает на один слой Подстановочный знак,Например a/+
соответствовать a/x
или a/y
。#
:Представляет несколько слоев Подстановочный знак,Например a/#
соответствовать a/x
、a/b/c/d
。Уведомление:Подстановочный знактема Может использоваться только дляподписка,Не может использоваться для выпускать.
QoS
MQTT предоставляет три качества обслуживания (QoS) для обеспечения надежности сообщений в различных сетевых средах.
Поняв основные компоненты MQTT, давайте взглянем на его общий рабочий процесс:
Ниже мы будем использовать несколько простых примеров, чтобы показать, как использовать МКТТ. Прежде чем приступить к работе, необходимо Подготовьте MQTT-брокер и MQTT-клиент。
Вы можете создать свой собственный MQTT Broker, выбрав между частным развертыванием или полностью управляемым облачным сервисом. Или вы можете использовать бесплатного публичного брокера.
EMQX Является наиболее масштабируемым открытым исходным кодом. MQTT Брокер для Интернета вещей、промышленность Интернет Вещи Интернет транспортных средств. Вы можете запустить следующее Docker команда для установки EMQX。
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 Обеспечить оперативную поддержку в каждом регионе.
В этой статье мы будем использовать EMQ Обеспечить бесплатную публикацию MQTT Брокер, который основан на полностью управляемом MQTT облачные сервисы - EMQX Cloud создавать. Информация о сервере следующая:
Server:
broker.emqx.io
TCP Port:1883
WebSocket Port:8083
SSL/TLS Port:8883
Secure WebSocket Port:8084
В этой статье мы будем использовать MQTTX Обеспечить поддержку доступа через браузер Инструмент MQTT-клиент, адрес доступа для http://www.emqx.io/online-mqtt-client 。
MQTTX Это кроссплатформенный продукт MQTT 5.0 Клиент для настольных ПК доступен по адресу macOS、Linux、Windows работать в операционной системе. Его удобный интерфейс, похожий на чат, позволяет пользователям легко создавать несколько MQTT/MQTTS подключайтесь и продолжайте MQTT Отписаться без информации.
Прежде чем обмениваться данными по протоколу MQTT, клиенту необходимо создать соединение MQTT для подключения к брокеру.
Открыть в браузере http://www.emqx.io/online-mqtt-client , Нажмите на середину страницы из New Connection
кнопку и вы увидите следующую страницу.
мы Name
Войти Simple Demo
,Затем Нажмитеверхний правый уголиз Connect
кнопка для создания MQTT соединять. Как показано на рисунке ниже, соединение установлено успешно.
Далее мы 上создатель Simple Demo
соединятьсередина Подпишитесь на темы через подстановочный знак sensor/+/temperature
,Таким образом можно получить данные о температуре, отправленные всеми датчиками.
Как показано ниже, нажмите New Subscription
кнопка во всплывающем окне Topic
Поле Войтитема sensor/+/temperature
,QoS сохранить значение по умолчанию 0。
подпискауспех后,будет внутриподпискасписокизсередина间看到新增了一полоска记录。
Следующий,нас Нажмитев левом менюиз +
кнопка создает два соединения с именем Sensor 1
и Sensor 2
,Используется для моделирования двух датчиков температуры.
соединятьсоздаватьуспех后,Вы увидите три соединяющихся,Индикатор онлайн-статуса на левой стороне каждого соединения горит зеленым светом.
выбирать Sensor 1
соединять,внизу страницыизвыпускатьтема Войти sensor/1/temperature
,В поле информации Войдите в формате JSON изинформация,Затем кнопка Нажмите в правом нижнем углу отправляет информацию.
{
"msg": "17.2"
}
Как показано на рисунке ниже, сообщение было успешно отправлено.
Используйте те же шаги, что и в Sensor 2
Разместите по ссылке следующее JSON новости прибыли sensor/2/temperature
тема。
{
"msg": "18.2"
}
ты увидишь Simple Demo
Соединение получило два новых сообщения.
Нажмите Simple Demo
Во время соединения вы увидите, что два датчика отправляют информацию по двум строкам.
когда MQTT-клиент на сервер выдаватьинформацию, вы можете установить держать сообщениелоготип。держать сообщение хранится на информационном сервере,Следовать заподписка Должентемаизклиент仍然Можетполучать Долженинформация.
Как показано на рисунке ниже, мы Sensor 1
Проверьте соединение Retain
вариант, а затем перейдите к retained_message
тему отправить две информации.
затем,мы Simple Demo
Подпишитесь, пока на связи retained_message
тема. После успешной подписки вы получите Sensor 1
Отправить из Второй статьи держать сообщение, что означает, что сервер будет хранить только самые последние сообщение。
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
тема, и будет QoS Настройки 1。
подпискауспех后,Нажмите правый верхний угол кнопки отключения.,отключитьсясоединять。
Затем придумайте имя для MQTT_V3_Publish
изсоединять,MQTT 版本也Настройки 3.1.1. После успешного подключения перейдите в clean_session_false
темавыпускать三полоскаинформация.
затем,выбирать MQTT_V3
соединять,Нажмите кнопку «Соединить» для подключения к серверу.,Получит три офлайн-информации.
MQTT-клиент инициализируется на сервере CONNECT При запросе вы можете выбрать, отправлять ли будет сообщение логотип и обозначение Будет сообщениеизтемаи полезная нагрузка.
если MQTT-клиент аварийно отключается (нет отправки на сервер до отключения соединения) DISCONNECT сообщение), MQTT Сервер будет выпущен сообщение。
Мы создали одно имя для Last Will
изоединятьпро вывести эту функцию.
last_will
。1
。true
。offline
。После успешного подключения отключаем компьютерную сеть более чем на 5 секунд (имитируя аварийное отключение клиента), а затем восстанавливаем сеть.
Затем начните Simple Demo Подключайтесь и подписывайтесь last_will
тема. ты получишь Last Will
соединятьнастраиватьиз Будет сообщение。
В этой статье подробно рассказывается MQTT Из основных понятий и процесса использования вы можете попробовать использовать его в соответствии с тем, что вы узнали в этой статье. MQTT протокол.
если вы хотите знать больше MQTT из знаний рекомендуется прочитать EMQ Предоставить из Учебное пособие по MQTT: от новичка до мастераСерия статей,учиться MQTT тема、Подстановочный знак、держать сообщение、Будет сообщение и другие функции. Благодаря этим статьям вы сможете изучить MQTT из Более продвинутые сценарии применения и старт MQTT Приложение и сервис по разработке.
Заявление об авторских правах: Эта статьядля EMQ Оригинал, при перепечатке указывайте источник.
Исходная ссылка:https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt