Цель работы

Ознакомиться с взаимодействием устройств по протоколу MQTT

Теоретические сведения

MQTT (Message Queuing Telemetry Transport) — это легковесный протокол для обмена сообщениями между устройствами, основанный на модели publish/subscribe. Он широко используется в IoT благодаря своей простоте, низкому потреблению ресурсов и поддержке работы в сетях с низкой пропускной способностью.

Брокер (Broker)

Центральный сервер, который управляет передачей сообщений между клиентами.

Получает сообщения от издателей (publishers) и отправляет их подписчикам (subscribers).

Клиент (Client):

Устройство или приложение, которое подключается к брокеру.

Клиент может быть как издателем, так и подписчиком.

Топик (Topic):

Иерархическая строка, которая используется для фильтрации сообщений.

Пример: home/living_room/temperature.

Подписчики могут подписаться на определенные топики, чтобы получать только нужные сообщения.

Сообщение (Message):

Данные, которые передаются между клиентами через брокер.

Сообщение состоит из топика и полезной нагрузки (payload).

QoS (Quality of Service):

Уровень качества обслуживания, который определяет надежность доставки сообщений:

QoS 0: At most once — сообщение доставляется без подтверждения (ненадежно).

QoS 1: At least once — сообщение доставляется минимум один раз (возможны дубликаты).

QoS 2: Exactly once — сообщение доставляется ровно один раз (надежно, но с большими накладными расходами).

Retain Flag:

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

Last Will and Testament (LWT):

Сообщение, которое брокер отправит, если клиент неожиданно отключится.

Как работает MQTT

Клиент подключается к брокеру (используя TCP/IP или другие поддерживаемые протоколы).

Клиент-издатель отправляет сообщение в определенный топик.

Брокер получает сообщение и пересылает его всем клиентам, подписанным на этот топик.

Клиент-подписчик получает сообщение и обрабатывает его.

Задание

Загрузить библиотеку из директории libs/mqtt.py на облаке в микроконтроллер.Файл mqtt.py должен лежать рядом с main.py

  1. Реализовать подключение к сети Wi-Fi.
  2. Реализовать подключение к MQTT серверу
  3. Топик DATA/{mac устройства} В json payload отправлять:
    {
     "temperature": 85,
     "students": ["Иванов И.И"],
     "group": "БАГ-18-01",
    }
    
  4. Реализовать отправку данных в этот топик с заданной периодичностью
  5. Реализовать слушателя по топику RESULT в который будут приходить результаты по проделанной работе для каждой группы студентов

IP-адрес MQTT сервера уточнить у преподавателя

Результаты работы продемонстрировать преподавателю

Отчет

В отчете представить скриншоты и описание действий по пунктам, представленным в задании Отчет по ГОСТу

Защита