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

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

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

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

Важная информация

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

Перед началом

Чтобы приступить к работе, вам понадобятся:

  1. Реестр.
  2. Сертификат для реестра.
  3. Устройство.
  4. Сертификат для устройства.

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

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

  • --cert — путь к публичной части сертификата устройства.
  • --key — путь к публичной части сертификата устройства.
  • --topic — топик устройства.
  • --message — текст сообщения.
  • --qosуровень качества обслуживания (QoS).

Примечание

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

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

    $ yc iot mqtt publish \
    --cert device-cert.pem \
    --key device-key.pem \
    --topic '$devices/<ID устройства>/events' \
    --message 'Test data' \
    --qos 1
    

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

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

    $ yc iot mqtt publish \
    --cert device-cert.pem \
    --key device-key.pem \
    --topic '$registries/<ID реестра>/events' \
    --message 'Test data' \
    --qos 1
    

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

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

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

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

  • --cert — путь к публичной части сертификата реестра.
  • --key — путь к публичной части сертификата реестра.
  • --topic — топик устройства.
  • --message — текст сообщения.
  • --qosуровень качества обслуживания (QoS).

Примечание

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

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

    $ yc iot mqtt publish \
    --cert registry-cert.pem \
    --key registry-key.pem \
    --topic '$registries/<ID реестра>/commands' \
    --message 'Test command for all devices' \
    --qos 1