Raspberry Pi:Настройка/Что такое протокол MQTT и как он работает
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
Черновик |
Что такое протокол MQTT и как он работает[1]
MQTT расшифровывается как «message queue telemetry transport», что можно перевести как «передача телеметрических данных при помощи очереди сообщений». Это удобная и легковесная система публикации/подписки, позволяющая создать клиента, публикующего и получающего сообщения. Она заметно упрощает установление коммуникации между множеством разных устройств.
Это простой протокол передачи сообщений, созданный для устройств с ограниченным функционалом и сетей с низкой пропускной способностью. Это делает его идеальным для проектов в области интернета вещей.
Беглый обзор
Давайте вкратце рассмотрим, что позволяет делать MQTT.
Во-первых, вы можете отправлять команды клиенту (вроде Node-RED), с его помощью управляя различными устройствами:
Во-вторых, вы можете считывать данные с датчиков и публиковать их на клиенте (вроде Node-RED):
Базовые понятия MQTT
Существует несколько базовых понятий, которые необходимо знать, чтобы понимать, как работает протокол MQTT.
- Публикация/подписка
- Сообщения
- Топики
- Брокер
Публикация/подписка
Это понятие означает, что устройство может публиковать сообщения на ваши устройства, а также то, что ваше устройство может подписаться на какой-нибудь топик, чтобы получать эти сообщения.
Как видно на картинке выше, устройство 1 делает публикацию в топике, а устройство 2 подписано на этот топик. То есть в итоге сообщение, отправленное устройством 1, получает устройство 2.
Сообщения
Сообщения – это информация, обмен которой осуществляется между устройствами. Это могут быть и инструкции, и обычные данные.
Топики
Топики – это то, куда будут сохраняться входящие сообщения и куда будут публиковаться исходящие сообщения. Он представляют собой строки, составные части которых разделены слешами. Слеш – это разделитель между уровнями топика.
Ниже – пример того, как сделать топик для лампы, расположенной в домашнем офисе:
К примеру, если вы при помощи ESP и Raspberry Pi хотите включить лампу, находящуюся в домашнем офисе, вам нужно опубликовать в клиенте (Node-RED) сообщение «ON».
Само устройство должно быть подписано на тот же топик – чтобы получить сообщение «ON», а затем включить лампу.
Примечание: Топики чувствительны к смене регистра, из-за чего два топика, показанные на картинке ниже, одинаковыми не будут:
Брокер (посредник)
Брокер – это программа, отвечающая за получение всех сообщений, фильтровку сообщений, решение того, кому отправлять сообщения, а также публикацию сообщений на подписанных клиентов.
Существует разные программы-брокеры. В частности, в нашем случае наиболее полезен брокер Mosquitto, который можно установить на Raspberry Pi.