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

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

  • Перед началом работы
  • Аутентификация
  • Отправить сообщение с данными
  • Отправьте данные с устройства в топик устройства
  • Отправьте данные с устройства в топик реестра
  • Отправить сообщение с командой
  • Отправьте команду одному устройству
  • Отправьте команду всем устройствам, добавленным в реестр
  • Отправить сообщение в брокере
  1. Пошаговые инструкции
  2. Отправка сообщения

Отправка сообщения

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Перед началом работы
    • Аутентификация
  • Отправить сообщение с данными
    • Отправьте данные с устройства в топик устройства
    • Отправьте данные с устройства в топик реестра
  • Отправить сообщение с командой
    • Отправьте команду одному устройству
    • Отправьте команду всем устройствам, добавленным в реестр
  • Отправить сообщение в брокере

Сервис предоставляет две модели управления ресурсами:

  • при использовании брокера отправка и прием сообщений может осуществляться в произвольных топиках, не начинающихся с $;
  • при использовании реестров и устройств выбор топиков ограничен.

Подробнее о различиях брокеров и реестров устройств читайте в разделе Взаимосвязь ресурсов в Yandex IoT Core.

При использовании реестров и устройств, вы можете отправлять сообщения следующих типов:

  • Отправлять данные с устройства в реестр, используя топики $devices/<идентификатор_устройства>/events или $registries/<идентификатор_реестра>/events.
  • Отправлять данные с устройства в реестр, используя перманентные топики $devices/<идентификатор_устройства>/state или $registries/<идентификатор_реестра>/state.
  • Отправлять команды из реестра на устройство, используя топики $devices/<идентификатор_устройства>/commands или $registries/<идентификатор_реестра>/commands.
  • Отправлять команды из реестра на устройство, используя перманентные топики $devices/<идентификатор_устройства>/config или $registries/<идентификатор_реестра>/config.

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

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

Важно

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

Перед началом работы

Подготовьте ресурсы:

  1. (Опционально) Создайте сертификаты для реестра и устройства.
  2. Создайте реестр.
  3. Добавьте сертификат реестру.
  4. Создайте устройство.
  5. Добавьте сертификат устройству.

Аутентификация

Чтобы отправлять сообщения, необходимо пройти аутентификацию. Для этого используйте X.509-сертификат или логин и пароль. В данном разделе приведены примеры для обоих способов аутентификации.

Отправить сообщение с данными

Примечание

Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.

Отправьте данные с устройства в топик устройства

Реестр, подписанный на данный топик, будет знать, какое именно устройство отправило данные, так как в топике присутствует уникальный идентификатор устройства.

CLI
API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  • Отправьте данные в топик устройства, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert device-cert.pem \
      --key device-key.pem \
      --topic '$devices/<идентификатор_устройства>/events' \
      --message 'Test data' \
      --qos 1
    
  • Отправьте данные в перманентный топик устройства, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert device-cert.pem \
      --key device-key.pem \
      --topic '$devices/<идентификатор_устройства>/state' \
      --message 'Test data' \
      --qos 1
    

    Где:

    • --cert и --key — параметры для авторизации с помощью сертификата.
    • --topic — топик устройства для отправки данных.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).
  • Отправьте данные в топик устройства, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_устройства> \
      --password <пароль_для_устройства> \
      --topic '$devices/<идентификатор_устройства>/events' \
      --message 'Test data' \
      --qos 1
    
  • Отправьте данные в перманентный топик устройства, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_устройства> \
      --password <пароль_для_устройства> \
      --topic '$devices/<идентификатор_устройства>/state' \
      --message 'Test data' \
      --qos 1
    

    Где:

    • --username и --password — параметры для авторизации с помощью логина и пароля.
    • --topic — топик устройства для отправки данных.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).

Чтобы отправить данные с устройства в топик устройства, воспользуйтесь методом REST API publish для ресурса DeviceData или вызовом gRPC API DeviceDataService/Publish.

Отправьте данные с устройства в топик реестра

Реестр, подписанный на данный топик, не будет знать, какое именно устройство отправило данные, так как в топике отсутствует уникальный идентификатор устройства.

CLI
API
  • Отправьте данные в топик реестра, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert device-cert.pem \
      --key device-key.pem \
      --topic '$registries/<идентификатор_реестра>/events' \
      --message 'Test data' \
      --qos 1
    
  • Отправьте данные в перманентный топик реестра, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert device-cert.pem \
      --key device-key.pem \
      --topic '$registries/<идентификатор_реестра>/state' \
      --message 'Test data' \
      --qos 1
    

    Где:

    • --cert и --key — параметры для авторизации с помощью сертификата.
    • --topic — топик реестра для получения данных.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).
  • Отправьте данные в топик реестра, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_устройства> \
      --password <пароль_для_устройства> \
      --topic '$registries/<идентификатор_реестра>/events' \
      --message 'Test data' \
      --qos 1
    
  • Отправьте данные в перманентный топик реестра, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_устройства> \
      --password <пароль_для_устройства> \
      --topic '$registries/<идентификатор_реестра>/state' \
      --message 'Test data' \
      --qos 1
    

    Где:

    • --username и --password — параметры для авторизации с помощью логина и пароля.
    • --topic — топик реестра для получения данных.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).

Чтобы отправить данные с устройства в топик реестра, воспользуйтесь методом REST API publish для ресурса DeviceData или вызовом gRPC API DeviceDataService/Publish.

Отправить сообщение с командой

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

Примечание

Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.

Отправьте команду одному устройству

CLI
API
  • Отправьте команду, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert registry-cert.pem \
      --key registry-key.pem \
      --topic '$devices/<идентификатор_устройства>/commands' \
      --message 'Test command for first device' \
      --qos 1
    
  • Отправьте команду, используя перманентный топик и авторизацию по сертификату:

    yc iot mqtt publish \
      --cert registry-cert.pem \
      --key registry-key.pem \
      --topic '$devices/<идентификатор_устройства>/config' \
      --message 'Test command for first device' \
      --qos 1
    

    Где:

    • --cert и --key — параметры для авторизации с помощью сертификата.
    • --topic — топик устройства для получения команд.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).
  • Отправьте команду, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_реестра> \
      --password <пароль_для_реестра> \
      --topic '$devices/<идентификатор_устройства>/commands' \
      --message 'Test command for first device' \
      --qos 1
    
  • Отправьте команду, используя перманентный топик и авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_реестра> \
      --password <пароль_для_реестра> \
      --topic '$devices/<идентификатор_устройства>/config' \
      --message 'Test command for first device' \
      --qos 1
    

    Где:

    • --username и --password — параметры для авторизации с помощью логина и пароля.
    • --topic — топик устройства для получения команд.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).

Чтобы отправить команду одному устройству, воспользуйтесь методом REST API publish для ресурса RegistryData или вызовом gRPC API RegistryDataService/Publish.

Отправьте команду всем устройствам, добавленным в реестр

CLI
API
  • Отправьте команду всем устройствам, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert registry-cert.pem \
      --key registry-key.pem \
      --topic '$registries/<идентификатор_реестра>/commands' \
      --message 'Test command for all devices' \
      --qos 1
    
  • Отправьте команду всем устройствам, используя перманентный топик и авторизацию по сертификату:

    yc iot mqtt publish \
      --cert registry-cert.pem \
      --key registry-key.pem \
      --topic '$registries/<идентификатор_реестра>/config' \
      --message 'Test command for all devices' \
      --qos 1
    

    Где:

    • --cert и --key — параметры для авторизации с помощью сертификата.
    • --topic — топик реестра для отправки команд.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).
  • Отправьте команду всем устройствам, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_реестра> \
      --password <пароль_для_реестра> \
      --topic '$registries/<идентификатор_реестра>/commands' \
      --message 'Test command for all devices' \
      --qos 1
    
  • Отправьте команду всем устройствам, используя перманентный топик и авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_реестра> \
      --password <пароль_для_реестра> \
      --topic '$registries/<идентификатор_реестра>/config' \
      --message 'Test command for all devices' \
      --qos 1
    

    Где:

    • --username и --password — параметры для авторизации с помощью логина и пароля.
    • --topic — топик реестра для отправки команд.
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).

Чтобы отправить команду всем устройствам, добавленным в реестр, воспользуйтесь методом REST API publish для ресурса RegistryData или вызовом gRPC API RegistryDataService/Publish.

Отправить сообщение в брокере

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

CLI
API
  • Отправьте сообщение, используя авторизацию по логину и паролю:

    yc iot mqtt publish \
      --username <идентификатор_брокера> \
      --password <пароль_для_брокера> \
      --topic /my/custom/topic \
      --message 'Test broker message'
      --qos 1
    

    Где:

    • --username и --password — параметры для авторизации с помощью логина и пароля.
    • --topic — произвольное имя топика, соответствующее спецификации MQTT и не начинающееся с символа $
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).
  • Отправьте сообщение, используя авторизацию по сертификату:

    yc iot mqtt publish \
      --cert broker-cert.pem \
      --key broker-key.pem \
      --topic /my/custom/topic \
      --message 'Test broker message'
      --qos 1
    

    Где:

    • --cert и --key — параметры для авторизации с помощью сертификата.
    • --topic — произвольное имя топика, соответствующее спецификации MQTT и не начинающееся с символа $
    • --message — текст сообщения.
    • --qos — уровень качества обслуживания (QoS).

Чтобы отправить сообщение в брокере, воспользуйтесь методом REST API publish для ресурса BrokerData или вызовом gRPC API BrokerDataService/Publish.

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

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