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

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

  • Перед началом работы
  • Подключиться к MQTT-серверу
  • Отправить сообщение с данными
  • Отправить сообщение с командой
  1. Прикладные решения
  2. Интернет вещей (IoT)
  3. Работа с помощью Mosquitto
  4. Отправить сообщение

Отправить сообщение с использованием Mosquitto

Статья создана
Yandex Cloud
Обновлена 13 февраля 2025 г.
  • Перед началом работы
  • Подключиться к MQTT-серверу
  • Отправить сообщение с данными
  • Отправить сообщение с командой

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

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

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

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

Важно

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

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

Подготовьте:

  1. Реестр.
  2. Сертификат для реестра.
  3. Устройство.
  4. Сертификат для устройства.
  5. Mosquitto, MQTT-брокер сообщений с открытым исходным кодом. Используется в инструкции для отправки сообщений и подписки на устройства. Необходимо скачать и установить его, чтобы работать с командами, представленными в инструкции.

Подключиться к MQTT-серверу

Для подключения к MQTT-серверу используйте следующие параметры:

  • Сертификат удостоверяющего центра.
  • Адрес сервера: mqtt.cloud.yandex.net.
  • Порт сервера: 8883.
  • Протокол: TLSv1.2.

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

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

  • -h — адрес MQTT-сервера.
  • -p — порт MQTT-сервера.
  • --cafile — путь к сертификату удостоверяющего центра.
  • --cert — путь к публичной части сертификата устройства.
  • --key — путь к приватной части сертификата устройства.
  • -t — топик устройства.
  • -m — текст сообщения.
  • -q — уровень качества обслуживания (QoS).

Примечание

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

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

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$devices/<идентификатор_устройства>/events' \
      -m 'Test data' \
      -q 1
    
  • Отправьте данные в перманентный топик устройства:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$devices/<идентификатор_устройства>/state' \
      -m 'Test data' \
      -q 1
    

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

  • Отправьте данные в топик реестра:

    ```
    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$registries/<идентификатор_реестра>/events' \
      -m 'Test data' \
      -q 1
    ```
    
    • Отправьте данные в перманентный топик реестра:

      mosquitto_pub -h mqtt.cloud.yandex.net \
        -p 8883 \
        --cafile rootCA.crt \
        --cert device-cert.pem \
        --key device-key.pem \
        -t '$registries/<идентификатор_реестра>/state' \
        -m 'Test data' \
        -q 1
      

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

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

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

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

  • -h — адрес MQTT-сервера.
  • -p — порт MQTT-сервера.
  • --cafile — путь к сертификату удостоверяющего центра.
  • --cert — путь к публичной части сертификата реестра.
  • --key — путь к приватной части сертификата реестра.
  • -t — топик устройства.
  • -m — текст сообщения.
  • -q — уровень качества обслуживания (QoS).

Примечание

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

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

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<идентификатор_устройства>/commands' \
      -m 'Test command for first device' \
      -q 1
    
  • Отправьте команду одному устройству, используя перманентный топик:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<идентификатор_устройства>/config' \
      -m 'Test command for first device via permanent topic' \
      -q 1
    
  • Отправьте команду двум устройствам:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile cert.pem \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<идентификатор_первого_устройства>/commands' \
      -t '$devices/<идентификатор_второго_устройства>/commands' \
      -m 'Test command for first and second device' \
     -q 1 # Уровень качества обслуживания QoS 1.
    
  • Отправьте команду двум устройствам, используя перманентный топик:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile cert.pem \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<идентификатор_первого_устройства>/config' \
      -t '$devices/<идентификатор_второго_устройства>/config' \
      -m 'Test command for first and second devices via permanent topic' \
      -q 1 # Уровень качества обслуживания QoS 1.
    
  • Отправьте команду всем устройствам, добавленным в реестр:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile cert.pem \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$registries/<идентификатор_реестра>/commands' \
      -m 'Test command for all devices' \
      -q 1
    
  • Отправьте команду всем устройствам, добавленным в реестр, используя перманентный топик:

    mosquitto_pub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile cert.pem \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$registries/<идентификатор_реестра>/config' \
      -m 'Test command for all devices via permanent topic' \
      -q 1
    

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

Предыдущая
Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
Следующая
Подписать устройство или реестр на получение сообщений
Проект Яндекса
© 2025 ООО «Яндекс.Облако»