Модуль 1. Основы обмена · Урок 2 из 7

Урок 2. Темы MQTT и фильтры с символами + и #

Учимся выбирать темы и подписки без ненужного потока данных.

Чему вы научитесь

Понимать разницу между именем публикуемой темы и фильтром подписки.

Тема публикации и фильтр подписки

Публикация происходит в конкретную тему, например home/hall/temperature. В имени темы публикации нельзя использовать wildcard-символы + и #. Они предназначены для фильтров подписки. Фильтр home/+/temperature означает один произвольный уровень на месте плюса.

Фильтр home/# охватывает все темы ниже home, а символ решётки должен быть отдельным последним уровнем фильтра. Название home/hall/temperature не соответствует home/+/humidity, потому что последний уровень различается.

Почему широкие подписки опасны

Подписка на # может доставлять много сообщений, в том числе не относящихся к конкретному сценарию. На большом объекте это повышает нагрузку и усложняет поиск неисправности. Для учебной комнаты лучше выбирать минимальный соответствующий фильтр.

Темы чувствительны к регистру и иерархии. Договоритесь о едином стиле и не меняйте его при каждом обновлении.

Учебный пример

Для трёх датчиков публикуются home/hall/temperature, home/kitchen/temperature и home/hall/humidity. Фильтр home/+/temperature получает первые два сообщения. Фильтр home/# получил бы все три. Проверьте эти правила в тренажёре.

Практическая работа

Составьте пять тем: две температуры, одна влажность, состояние окна и команда света. Для каждой определите один подходящий фильтр подписки.

Укажите, почему тема commands/# должна быть ограничена правами даже если чтение обычных датчиков разрешено.

Самопроверка: сформулируйте результат своими словами, а затем пройдите вопросы ниже. Если устройство или программа не доступны, выполните задание на бумаге или в учебном тренажёре.

Интерактивная практика · локальная модель

Тренажёр MQTT: брокер и подписчик

Выполняйте задания по порядку: публикуйте сообщения и создавайте подписки. Программа имитирует лишь сопоставление тем и доставку retained; это не реальный MQTT-брокер. QoS, Last Will, TLS, ACL, сессии и очереди не моделируются.

Нет нового сообщения

Получено: 0 сообщений

Журнал обмена

Действий ещё нет

Состояние этого стенда сбрасывается при переходе к следующему упражнению. Зачёт заданий сохраняется в этом браузере.

Проверяемое упражнение

Проверьте себя

Контрольные вопросы

Ответьте на все вопросы. При ошибке изучите пояснение и попробуйте ещё раз. Все задания бесплатны.

1. Подписка home/+/temperature соответствует home/hall/temperature?
2. Можно ли публиковать сообщение в topic home/+/temperature?

Правильных ответов: 0 из 2

Урок завершён?

Повторите ключевые идеи и убедитесь, что выполнили практическое задание.