Модуль 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 сообщений
Журнал обмена
Действий ещё нет
Состояние этого стенда сбрасывается при переходе к следующему упражнению. Зачёт заданий сохраняется в этом браузере.
Проверяемое упражнение
Проверьте себя
Контрольные вопросы
Ответьте на все вопросы. При ошибке изучите пояснение и попробуйте ещё раз. Все задания бесплатны.
Плюс заменяет ровно один уровень темы.
Имя темы публикации не содержит подстановочных символов.
Правильных ответов: 0 из 2
Урок завершён?
Повторите ключевые идеи и убедитесь, что выполнили практическое задание.
Чтобы закончить урок, правильно ответьте на контрольный вопрос.