Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
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 (англ.)
      • Overview
      • DeviceDataService
      • DeviceService
      • RegistryDataService
      • RegistryService
      • OperationService
    • REST (англ.)
      • Overview
      • DeviceData
        • Overview
        • publish
      • Device
        • Overview
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • getByName
        • list
        • listCertificates
        • listOperations
        • listPasswords
        • update
      • RegistryData
        • Overview
        • publish
      • Registry
        • Overview
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • getByName
        • list
        • listCertificates
        • listDeviceTopicAliases
        • listOperations
        • listPasswords
        • update
  • Вопросы и ответы
  1. Практические руководства
  2. Работа с помощью Mosquitto
  3. Подписать устройство или реестр на получение сообщений

Подписать устройство или реестр на получение сообщений c использованием Mosquitto

Статья создана
Yandex Cloud
  • Перед началом
  • Подключиться к 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.

О том, как обмениваться сообщениями, читайте в разделе Отправить сообщение с использованием 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 — топики устройства.
  • -q — уровень качества обслуживания (QoS).

Примечание

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

Mosquitto
  • Подпишите реестр на топик одного устройства:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<ID устройства>/events' \
      -q 1
    
  • Подпишите реестр на перманентный топик устройства:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<ID устройства>/state' \
      -q 1
    
  • Подпишите реестр на топики нескольких устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<ID первого устройства>/events' \
      -t '$devices/<ID второго устройства>/events' \
      -q 1
    
  • Подпишите реестр на перманентные топики нескольких устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$devices/<ID первого устройства>/state' \
      -t '$devices/<ID второго устройства>/state' \
      -q 1
    
  • Подпишите реестр на топики всех устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$registries/<ID реестра>/events' \
      -q 1
    
  • Подпишите реестр на перманентные топики всех устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert registry-cert.pem \
      --key registry-key.pem \
      -t '$registries/<ID реестра>/state' \
      -q 1
    

    Реестр будет получать данные только от тех устройств, которые отправляют сообщения в топик $registries/<ID реестра>/events или '$registries/<ID реестра>/state'.

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

Команды от реестра могут предназначаться конкретному устройству или всем устройствам в реестре. Для этого используются разные топики.

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

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

Примечание

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

Mosquitto
  • Подпишите устройство на топики — команды для конкретного устройства:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$devices/<ID устройства>/commands' \
      -q 1
    
  • Подпишите устройство на перманентные топики — команды для конкретного устройства:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$devices/<ID устройства>/config' \
      -q 1
    
  • Подпишите устройство на топики — команды для всех устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$registries/<ID реестра>/commands' \
      -q 1
    
  • Подпишите устройство на перманентные топики — команды для всех устройств:

    mosquitto_sub -h mqtt.cloud.yandex.net \
      -p 8883 \
      --cafile rootCA.crt \
      --cert device-cert.pem \
      --key device-key.pem \
      -t '$registries/<ID реестра>/config' \
      -q 1
    

    Команды будут получать только устройства, подписанные на топик $registries/<ID реестра>/commands или '$registries/<ID реестра>/config'.

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

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом
  • Подключиться к MQTT-брокеру
  • Подписать реестр на топики устройств
  • Подписать устройство на топики реестра