Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex IoT Core
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Отправка сообщения
    • Подписка устройства или реестра на получение сообщений
    • Просмотр журнала подключений
    • Создание триггера для топика
    • Управление реестрами
      • Получение информации о реестре
      • Создание реестра
      • Изменение реестра
      • Удаление реестра
    • Управление устройствами
      • Управление алиасами топиков
        • Создание алиаса
        • Получение списка алиасов
        • Изменение алиаса
        • Удаление алиаса
      • Получение информации об устройстве
      • Создание устройства
      • Изменение устройства
      • Удаление устройства
    • Управление сертификатами
      • Создание сертификата
      • Управление сертификатами реестра
      • Управление сертификатами устройства
    • Управление паролями
      • Управление паролями реестра
      • Управление паролями устройства
  • Концепции
    • Авторизация
    • Взаимосвязь ресурсов сервиса
    • Параметры подключения MQTT-брокера
    • Отправка сообщений MQTT-брокеру через gRPC
    • Топик
    • Резервное копирование
    • Квоты и лимиты
  • Сценарии использования
    • Все сценарии
    • Работа с помощью Mosquitto
      • Отправить сообщение
      • Подписать устройство или реестр на получение сообщений
    • Работа с Yandex IoT Core с устройства с Android на языке Java
    • Работа с Yandex IoT Core на языке C#
    • Работа с Yandex IoT Core на языке Java
    • Запись данных с устройства в Managed Service for PostgreSQL
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • DeviceService
      • RegistryService
      • OperationService
    • REST
      • Обзор
      • Device
        • Обзор
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • list
        • listCertificates
        • listOperations
        • listPasswords
        • update
      • Registry
        • Обзор
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • list
        • listCertificates
        • listDeviceTopicAliases
        • listOperations
        • listPasswords
        • update
  • Вопросы и ответы
  1. Сценарии использования
  2. Работа с помощью Mosquitto
  3. Отправить сообщение

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

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

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

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

Для получения сообщения необходимо быть подписанным на отправителя. Как это сделать, читайте в разделе Подписать устройство или реестр на получение сообщений c использованием 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/<ID устройства>/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/<ID устройства>/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/<ID реестра>/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/<ID реестра>/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/<ID устройства>/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/<ID устройства>/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/<ID первого устройства>/commands' \
    -t '$devices/<ID второго устройства>/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/<ID первого устройства>/config' \
    -t '$devices/<ID второго устройства>/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/<ID реестра>/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/<ID реестра>/config' \
    -m 'Test command for all devices via permanent topic' \
    -q 1
    
В этой статье:
  • Перед началом
  • Подключиться к MQTT-брокеру
  • Отправить сообщение с данными
  • Отправить сообщение с командой
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»