Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex IoT Core
    • Аутентификация
    • Взаимосвязь ресурсов сервиса
    • Параметры подключения MQTT-сервера
    • Отправка сообщений MQTT-серверу через gRPC
      • Обзор
      • Топики устройства
      • Топики реестра
      • Сабтопик
      • Использование топиков
    • Резервное копирование
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Использование алиасов для топиков
  • Использование системных алиасов $me в $me-топиках
  • Подписка на топики с использованием символов подстановки
  • Символ #
  • Символ +
  • Совместное использование символов + и #
  • Триггеры для топиков
  • Экспорт в Data Streams
  • Примеры использования
  1. Концепции
  2. Топик
  3. Использование топиков

Использование топиков

Статья создана
Yandex Cloud
Обновлена 2 июня 2025 г.
  • Использование алиасов для топиков
  • Использование системных алиасов $me в $me-топиках
  • Подписка на топики с использованием символов подстановки
    • Символ #
    • Символ +
    • Совместное использование символов + и #
  • Триггеры для топиков
  • Экспорт в Data Streams
  • Примеры использования

Вы можете подписывать устройства и реестры на топики $<devices_или_registries>/<идентификатор_устройства_или_реестра>/events и $<devices_или_registries>/<идентификатор_устройства_или_реестра>/commands.

Если у вас есть устройства, на показания датчиков которых нужно оперативно реагировать, а в вашей сети возможны перебои со связью и разрыв соединения между устройствами и MQTT-сервером, подписывайте устройства и реестры на перманентные топики $<devices_или_registries>/<идентификатор_устройства_или_реестра>/state и $<devices_или_registries>/<идентификатор_устройства_или_реестра>/config. В перманентном топике сохраняется последнее сообщение, отправленное в этот топик, и отображается при возобновлении соединения (даже если в момент подключения в топик не пишут устройства и реестры). После возобновления соединения перманентные топики работают как обычные топики, информация в них появляется когда устройство или реестр в них пишет.

В таблице описаны действия, которые устройства и реестры совершают с топиками:

Топики Устройство Реестр
$devices/<идентификатор_устройства>/events

$devices/<идентификатор_устройства>/state
Отправляет телеметрические данные. Получает телеметрические данные.
Устройство известно.
$devices/<идентификатор_устройства>/commands

$devices/<идентификатор_устройства>/config
Получает команды. Отправляет команды определенному устройству.
$registries/<идентификатор_реестра>/events

$registries/<идентификатор_реестра>/state
Отправляет телеметрические данные. Получает телеметрические данные от всех устройств в реестре.
Устройство неизвестно.
$registries/<идентификатор_реестра>/commands

$registries/<идентификатор_реестра>/config
Получает команды. Отправляет команды всем устройствам в реестре.
$monitoring/<идентификатор_устройства>/json Получает данные мониторинга другого устройства в формате JSON. Получает данные мониторинга устройства в формате JSON.

Использование алиасов для топиковИспользование алиасов для топиков

Алиас — это псевдоним топика устройства, присвоенный пользователем. Алиасы можно присваивать стандартным топикам, которые уже есть в сервисе, а также топикам с произвольными сабтопиками.

Примечание

Для топика $monitoring/<идентификатор_устройства>/json можно использовать только системный алиас $me.

Алиас задается в формате ключ-значение:

<алиас>='<топик_устройства>'

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

Алиас должен однозначно определять устройство, то есть топик, которому присваивается алиас, должен содержать уникальный идентификатор устройства.

Если создать алиас my/alias/=$devices/<идентификатор_устройства>/, то можно использовать топик my/alias/events. Он будет эквивалентен $devices/<идентификатор_устройства>/events. По аналогии можно использовать и другие топики, начинающиеся с $devices/<идентификатор_устройства>/.

В рамках одного реестра алиасы не могут совпадать с префиксами других алиасов.

Если вы создали алиас my/alias/=..., в этом реестре вы не сможете создать алиасы my/=..., my/alias/2/=..., my/ali=....

Вы можете создать алиасы my/alias1/=..., my/alias2/=... или my/ali/=....

Использование системных алиасов $me в $me-топикахИспользование системных алиасов $me в $me-топиках

Чтобы каждый раз не вводить идентификатор устройства, от имени которого открыта MQTT-сессия, вы можете использовать me−топикинаосновеалиасов‘me-топики на основе алиасов `me−топикинаосновеалиасов‘me`, уже созданных в сервисе.

$me-топик Эквивалентный топик
$me/device/events $devices/<идентификатор_устройства>/events
$me/device/commands $devices/<идентификатор_устройства>/commands
$me/device/state $devices/<идентификатор_устройства>/state
$me/device/config $devices/<идентификатор_устройства>/config
$me/registry/commands $registries/<идентификатор_устройства>/commands
$me/registry/config $registries/<идентификатор_устройства>/config
$me/monitoring/json $monitoring/<идентификатор_устройства>/json

При отправке сообщений и подписке на сообщения, $me-топики преобразуются в топики с <идентификатор_устройства> на уровне MQTT.
Если вы подписались на $me-топик, данные вы тоже получите в $me-топике.

Подписка на топики с использованием символов подстановкиПодписка на топики с использованием символов подстановки

Вы можете использовать специальные символы подстановки # и +, которые позволяют фильтровать подписки на топики.

Если в начале фильтра стоит $devices/, то в фильтр попадают топики устройств, а если $registries/, то топики реестров. В остальных случаях в фильтр попадают только алиасы.

Примечание

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

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

Символ #Символ #

Означает подстановку одной или нескольких частей топика, а также пустой строки. Всегда является последним символом в фильтре.

Примеры использования символа #:

  • # — подписаться на все алиасы топиков.
  • $devices/# — подписаться на все топики всех устройств.
  • $devices/<идентификатор_устройства>/# — подписаться на все топики определенного устройства.
  • $devices/<идентификатор_устройства>/events/# — подписаться на все топики определенного устройства с телеметрическими данными.
  • $devices/<идентификатор_устройства>/state/# — подписаться на все перманентные топики с телеметрическими данными устройства с указанным уникальным идентификатором.

Символ +Символ +

Означает подстановку одной части топика между символами / либо в конце после символа /.

Например, по подписке $registries/<идентификатор_реестра>/commands/+ устройства получат команды, отправленные в топики $registries/<идентификатор_реестра>/commands/bedroom и $registries/<идентификатор_реестра>/commands/kitchen, но проигнорируют команду в топик $registries/<идентификатор_реестра>/commands/bedroom/entrance.

Примеры использования символа +:

  • $devices/<идентификатор_устройства>/+ — подписаться на все топики определенного устройства с телеметрическими данными и командами.
  • $devices/<идентификатор_устройства>/events/+ — подписаться на все топики определенного устройства с телеметрическими данными из всех помещений. Предполагается, что в примере символ + замещает помещение.
  • $devices/+/events/bedroom/temperature — подписаться на все топики всех устройств с телеметрическими данными о температуре в спальне.
  • $devices/+/events/bedroom/+ — подписаться на все топики всех устройств с телеметрическими данными в спальне. Предполагается, что в примере символы + замещают уникальный идентификатор устройства и тип датчика.

Фильтры $devices/+ и $registries/+ не работают, т.к. топик должен состоять из трех частей: $<devices_или_registries>/<идентификатор_устройства_или_реестра>/<events_или_commands>.

Совместное использование символов + и #Совместное использование символов + и #

После + можно использовать #, чтобы подставить остальную часть топика или сабтопика:

  • $devices/+/# — подписаться на все топики всех устройств. Эквивалентен фильтру $devices/#.

  • $devices/+/events/# — подписаться на все топики всех устройств с телеметрическими данными.

При фильтрации также учитываются общие правила подписки на топики, например:

  • Подписка на фильтр $devices/# с сертификатом реестра эквивалентна подписке на $devices/+/events/#.

    При этом будут получены и все сообщения, отправленные в $devices/<идентификатор_устройства>/events.

  • Подписка на фильтр $registries/# с сертификатом устройства эквивалентна подписке на $registries/<идентификатор_реестра>/commands/#.

    При этом будут получены и все сообщения, отправленные в $registries/<идентификатор_реестра>/commands.

Триггеры для топиковТриггеры для топиков

Триггер — условие, при наступлении которого автоматически запускается определенная функция или контейнер.

Триггер для Yandex IoT Core предназначен для управления сообщениями, которыми обмениваются устройства и реестры. Он создается для топиков: принимает из них копии сообщений и передает в функцию Cloud Functions или контейнер Serverless Containers для обработки.

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

Вы можете создать триггер:

  • Для стандартного топика, реализованного сервисом, кроме топика $monitoring/<идентификатор_устройства>/json.
  • Для топика с произвольными сабтопиками и подстановочными символами.
  • Для алиаса топика.

Триггеру для Yandex IoT Core необходим сервисный аккаунт для вызова функции или контейнера.

Подробнее о триггерах читайте в документации Cloud Functions и Serverless Containers.

Экспорт в Data StreamsЭкспорт в Data Streams

Вы можете настроить экспорт сообщений из топиков реестра и топиков устройств в поток данных Yandex Data Streams, чтобы затем передавать полученные данные в другие сервисы и приложения для последующего анализа и обработки. Поддерживается настройка только одного экспорта для реестра.

Примечание

Экспорт данных в Data Streams возможен только из топиков */events и */commands.

Экспортировать сообщения из топиков брокера нельзя.

Данные экспортируются в следующем формате:

{
  "device_id": "<идентификатор_устройства",
  "mqtt_topic": "<топик>",
  "payload": "<текст_сообщения>",
  "is_base64": true|false
}

Где:

  • device_id — идентификатор устройства, которое отправляет данные в топик. Если сообщение отправляет реестр, это поле остается пустым.
  • mqtt_topic — топик, из которого экспортируется сообщение.
  • payload — текст сообщения;
  • is_base64 — принимает значение true, если сообщение закодировано в Base64, в противном случае — false. Сообщение кодируется в Base64, если оно имеет некорректную кодировку UTF-8.

Примеры использованияПримеры использования

  • Запись данных с устройства в базу данных
  • Мониторинг состояния географически распределенных устройств
  • Мониторинг показаний датчиков и уведомления о событиях

Была ли статья полезна?

Предыдущая
Сабтопик
Следующая
Резервное копирование
Проект Яндекса
© 2025 ООО «Яндекс.Облако»