Найти в Дзене
Kamnetanker

Принципы работы и назначение протокола MQTT

Главная схема работы MQTT
И так, юный друг, ты решил построить умный дом или начать контролировать всю информацию о своём предприятии? Тогда добро пожаловать на вводную статью про MQTT. А о том, как подключить и использовать MQTT я рассказывал здесь.
Основная информация
Протокол - описание(предписание) правил по обмену информацией через некоторый канал связи. Можно вообразить, что протокол это
Оглавление
Главная схема работы MQTT
Главная схема работы MQTT

И так, юный друг, ты решил построить умный дом или начать контролировать всю информацию о своём предприятии? Тогда добро пожаловать на вводную статью про MQTT. А о том, как подключить и использовать MQTT я рассказывал здесь.

Основная информация

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

Стек протоколов - набор взаимосвязанных протоколов, применяемых для достижения некоторой цели при передаче сообщений.

tcp/ip - основной стек протоколов в современном интернете. Этой информации пока что достаточно для данной статьи, вернёмся к MQTT.

MQTT(англ. message queuing telemetry transport) - протокол, работающий поверх tcp/ip, предназначенный для сбора телеметрии с датчиков, сенсоров и прочего измерительного оборудования.

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

MQTT описывает три основных класса объектов для вычислительной сети:
Издатель - член сети, который создаёт некоторую информацию, которую публикует в топике. Аналогом из реального мира может быть какое-то издательство, выпускающее журналы.
Топик - хранилище, для созданных публикаций. Аналог: склад журналов или каталог этих журналов.
Подписчик - член сети, который получает информацию из топиков. Аналог: человек, выписывающий себе некоторый журнал.
Брокер - центральный узел сети, который доставляет информацию от издателей к подписчикам. Так же его называют mqtt сервер. Аналог из реального мира: почта, которая доставляет журналы людям, которые их выписывают.

В качестве издателя могут выступать ЛЮБЫЕ участники сети, как и в качестве подписчика могут выступать ЛЮБЫЕ участники сети.

Пакет MQTT

Основное, что может интересовать в пакете MQTT это:

1. Тип сообщения.
Разделяют 5 основных сообщений:
1. Connect - соединение с брокером
2. Disconnect - отключение от брокера
3. Subscribe - подписка на некоторый топик
4. Unsubscribe - отписка от топика
5. Publish - публикация сообщения в топик

2. QoS(Quality of Service) – флаг, обеспечивающий качество сервиса.
QoS содержит 3 основных уровня:
0. «Fire and forget» доставка и др. никак не гарантируются. Действительно: стреляй и забей
1. At least once – хотя бы один. Отправка осуществляется и обязательно подписчик его получит хотя бы раз. Однако, издатель, не получит подтверждения о получении сообщения подписчиком.
2. Exactly once – гарантированно один. Всё то же самое, что в уровне 1, но издатель должен будет получить подтверждение о получении сообщения подписчиками.

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

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

Архитектуры систем MQTT

Существует два основных применения MQTT на основе того, как устроен пакет. И зависит это от флага Retain.

Сбор телеметрии

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

Рассылка конфигурации или документов

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

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