• Фото: randomnerdtutorials.com

Эта статья представляет собой введение в протокол MQTT. MQTT расшифровывается как Message Queuing Telemetry Transport , простой протокол обмена сообщениями, подходящий для связи между устройствами IoT .

Обновлено 16 декабря 2021 г.

Что такое MQTT?

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

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

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

Основные понятия MQTT

В MQTT есть несколько основных понятий, которые вам необходимо понять:

MQTT – публикация/подписка

Первая концепция — это  система публикации и подписки  . В системе публикации и подписки устройство может публиковать сообщения по определенной теме или может быть подписано на определенную тему для получения сообщений.

  • Например, Устройство 1 публикует информацию по теме.
  • Устройство 2 подписано на ту же тему, в которой публикуется устройство 1 .
  • Итак, устройство 2 получает сообщение.

MQTT — Сообщения

Сообщения — это информация, которой вы хотите обмениваться между вашими устройствами. Это может быть сообщение, например команда, или данные, например, показания датчиков.

MQTT — Темы

Еще одним важным понятием являются темы . Темы – это способ регистрации интереса к входящим сообщениям или указания места публикации сообщения.

Темы представлены строками, разделенными косой чертой. Каждая косая черта указывает уровень темы. Вот пример того, как можно создать тему для лампы в домашнем офисе:

Примечание. Темы чувствительны к регистру, что отличает эти две темы:ъ
Если вы хотите включить лампу в домашнем офисе с помощью MQTT, вы можете представить себе следующий сценарий:
  1. Устройство публикует сообщения «включено» и «выключено» по  теме «дом/офис/лампа»  .
  2. У вас есть устройство, управляющее лампой (это может быть ESP32, ESP8266 или любая другая плата или устройство). ESP32, который управляет вашей лампой, подписан на ту же тему:  дом/офис/лампа .
  3. Таким образом, когда по этой теме публикуется новое сообщение, ESP32 получает сообщения «включено» или «выключено» и включает или выключает лампу.

Устройством, публикующим сообщения, может быть ESP32, ESP8266 или платформа контроллера домашней автоматизации с поддержкой MQTT, например Node-RED, Home Assistant, Domoticz или OpenHAB.

 

MQTT — Брокер

Наконец, еще одно важное понятие — брокер .

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

 

Вы можете использовать несколько брокеров. В проектах домашней автоматизации мы используем  Mosquitto Broker  , установленный на Raspberry Pi. Вы также можете установить брокер Mosquitto на свой компьютер (что не так удобно, как использование платы Raspberry Pi, поскольку вам придется постоянно держать компьютер включенным, чтобы поддерживать соединение MQTT между вашими устройствами). 
 

Установка брокера Mosquitto на Raspberry Pi в вашей локальной сети позволяет вам обмениваться данными между вашими устройствами IoT, которые также подключены к той же сети.

Чтобы установить брокер Mosquitto на Raspberry Pi, следуйте нашему руководству:

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

Как использовать MQTT в проектах домашней автоматизации и Интернета вещей

MQTT отлично подходит для проектов домашней автоматизации и Интернета вещей. Вот пример того, как его можно использовать в системе домашней автоматизации , созданной с использованием недорогих плат для разработки, таких как Raspberry Pi, ESP32, ESP8266 и Arduino.

Пример системы домашней автоматизации

 
  • На Raspberry Pi работает брокер Mosquitto, который необходим для протокола MQTT.
  • На том же Raspberry Pi работает Node-RED, платформа домашней автоматизации с поддержкой MQTT. Это означает, что он может подписываться на темы для получения сообщений от других устройств IoT и публиковать сообщения в определенных темах для отправки сообщений на другие устройства.
  • Node-RED также позволяет создавать пользовательский интерфейс с кнопками для управления выходными данными и диаграммами для отображения показаний датчиков.
  • Arduino, ESP32 и ESP8266 могут выступать в качестве клиентов MQTT, которые публикуют темы и подписываются на них.
  • Эти платы подключены к исполнительным механизмам, таким как светодиоды или реле, а также к датчикам, таким как температура, влажность, датчики дыма и т. д.
  • Эти кабаны могут публиковать данные о состоянии датчика по конкретной теме, на которую тоже подписан Node-RED. Таким образом, Node-RED получает показания датчиков и может отображать их в пользовательском интерфейсе.
  • С другой стороны, Node-RED может публиковать данные по определенной теме для управления выходными данными при использовании кнопок интерфейса. Другие платы также подписаны на эту тему и соответственно управляют выходами.

На следующем изображении показан пример пользовательского интерфейса Node-RED, который позволяет управлять одним выходом и отображает показания температуры и влажности:

 

Вот краткое описание шагов, которые необходимо выполнить, чтобы создать что-то, как описано ранее:

  1. Настройте Raspberry Pi. Следуйте нашему  руководству по началу работы с Raspberry Pi .
  2. Включите и подключите Raspberry Pi с помощью SSH .
  3. Вам необходимо  установить Node-RED на ваш Pi  и  Node-RED Dashboard .
  4. Установите брокер Mosquitto на Raspberry Pi .
  5. Добавьте ESP8266 или ESP32 в эту систему. Вы можете следовать следующим руководствам по MQTT:

Подведение итогов

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

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

Посмотрите видеоурок ниже