Статьи

Учебник по протоколу MQTT

Протокол MQTT — это протокол Machine to Machine (M2M), широко используемый в Интернете вещей. Это протокол на основе сообщений. Он очень легкий и по этой причине принят в экосистему IoT. Почти все облачные платформы IoT поддерживают протокол MQTT для отправки и получения данных от смарт-объектов. Существует несколько реализаций для разных плат IoT, таких как Arduino, Raspberry и так далее.

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

Обзор протокола MQTT

MQTT был разработан примерно в 1999 году. Основной целью этого протокола было создание протокола, очень эффективного с точки зрения пропускной способности. Более того, это очень энергосберегающий протокол. По всем этим причинам он подходит для IoT.

Этот протокол использовал парадигму публикации-подписчика в отличие от HTTP, основанного на парадигме запроса / ответа. Он использует двоичные сообщения для обмена информацией с низкими издержками. Это очень просто реализовать, и это открыто. Все эти аспекты способствуют его широкому внедрению в IoT. Другим интересным аспектом является тот факт, что MQTT использует стек TCP в качестве субстрата передачи.

Шаблон сообщения MQTT

Как было сказано ранее, протокол MQTT реализует парадигму публикации-подписчика. Эта парадигма разъединяет клиента, который публикует сообщение («издатель»), с другими клиентами, которые получают сообщение («подписчики»). Более того, MQTT является асинхронным протоколом, это означает, что он не блокирует клиента, пока он ожидает сообщения. В отличие от протокола HTTP, это в основном синхронный протокол. Другое интересное свойство протокола MQTT заключается в том, что он не требует одновременного подключения клиента («подписчика») и издателя.

MQTT Publisher-подписчик шаблон

Как описано выше, MQTT — это протокол на основе сообщений, который использует шаблон издатель-подписчик. Ключевым компонентом в MQTT является брокер MQTT. Основная задача брокера MQTT — рассылка сообщений клиентам («подписчикам»). Другими словами, он получает сообщения от издателя и отправляет эти сообщения подписчикам. Во время отправки сообщений брокер MQTT использует эту тему для фильтрации клиентов, которые получат сообщение. Тема представляет собой строку, и можно комбинировать темы, создавая уровни тем.

Тема похожа на виртуальный канал, который связывает издателя с его подписчиками. Эта тема управляется брокером MQTT. Через этот виртуальный канал издатель отделяется от подписчиков, и клиенты (издатели или подписчики) не должны знать друг друга. Это делает этот протокол легко масштабируемым без прямой зависимости от производителя сообщений («издатель») и потребителя сообщений («подписчик»).

Схема ниже описывает архитектуру MQTT:
mqtt_publisher_subscriber-1

Как использовать протокол MQTT

Теперь у нас есть обзор MQTT, пришло время узнать, как использовать его на реальном примере. Существует несколько реализаций MQTT, в этом примере мы будем использовать Mosquitto , реализацию, разработанную Eclipse. Первый шаг — установка брокера MQTT. Мы установим его на Raspberry PI. Чтобы установить Mosquitto, нам нужно добавить репозиторий, содержащий приложение, чтобы мы могли его скачать. Перед добавлением репозитория необходимо добавить ключ, чтобы убедиться, что загружаемый пакет действителен. Давайте подключимся к Raspberry PI, используя ssh или подключение к удаленному рабочему столу . Теперь в терминале мы должны написать:

1
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

mosquitto_add ключ

Теперь пришло время импортировать ключ:

1
sudo apt-key add mosquitto-repo.gpg.key

Наконец, давайте добавим файл .list :

1
sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

mqtt_mosquitto_repo_url

Теперь, когда ссылка на репозиторий настроена правильно, мы можем установить Mosquitto на Raspberry PI.

1
apt-get install mosquitto

Сервер MQTT установлен на Raspberry PI. Этот сервер является нашим MQTT-брокером, как указано выше. Теперь нам нужно установить клиент, или, другими словами, издателя и подписчика. В этом примере мы установим клиент и сервер на одну и ту же Raspberry, но вы можете установить ее на другой компьютер / сервер или плату IoT.

1
apt-get install mosquitto-clients

Как отправить сообщение MQTT

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

mqtt_subscriber

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

mqtt_publisher

В этом примере издатель MQTT отправляет сообщение «Hello Protocol». На стороне подписчика мы получаем сообщение:

mqtt_send_message

Как использовать MQTT на смартфоне Android

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

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

Ссылка: Учебное пособие по протоколу MQTT от нашего партнера по JCG Франческо Аццолы в блоге Surviving с Android .