Подписка на получение сообщений
Используя брокер, можно подписаться на произвольный топик, не начинающийся с $
, с помощью сертификата или логина и пароля.
Для реестров и устройств выбор топиков ограничен, вы можете подписать:
- Реестр на события устройства, используя топики
$devices/<идентификатор_устройства>/events
или$registries/<идентификатор_реестра>/events
. - Реестр на события устройства, используя перманентные топики
$devices/<идентификатор_устройства>/state
или$registries/<идентификатор_реестра>/state
. - Устройство на команды реестра, используя топики
$devices/<идентификатор_устройства>/commands
или$registries/<идентификатор_реестра>/commands
. - Устройство на команды реестра, используя перманентные топики
$devices/<идентификатор_устройства>/config
или$registries/<идентификатор_реестра>/config
. - Реестр или устройство на данные мониторинга устройства, используя топик
$monitoring/<идентификатор_устройства>/json
.
О том, как обмениваться сообщениями, читайте в разделе Отправка сообщения.
Важно
Топик реестра и топик устройства не связаны между собой. Если устройство отправляет данные в топик устройства для телеметрических данных, получить их можно только подписавшись на этот топик. Аналогично для топика реестра.
Перед началом работы
Подготовьте ресурсы:
- (Опционально) Создайте сертификаты для реестра и устройства.
- Создайте реестр.
- Добавьте сертификат реестру.
- Создайте устройство.
- Добавьте сертификат устройству.
Аутентификация
Чтобы отправлять сообщения, необходимо пройти аутентификацию. Для этого используйте X.509-сертификат или логин и пароль. В данном разделе приведены примеры для обоих способов аутентификации.
Подписать реестр на топики устройств
Реестр можно подписать на топики от одного, нескольких или всех устройств, добавленных в него.
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug
и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
Подпишите реестр на топик одного устройства
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Подпишите реестр на топик устройства, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert registry-cert.pem \ --key registry-key.pem \ --topic '$devices/<идентификатор_устройства>/events' \ --qos 1
-
Подпишите реестр на перманентный топик устройства, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert registry-cert.pem \ --key registry-key.pem \ --topic '$devices/<идентификатор_устройства>/state' \ --qos 1
Где:
--cert
и--key
— параметры для авторизации с помощью сертификата.--topic
— топик устройства для отправки данных.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
-
Подпишите реестр на топик устройства, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_реестра> \ --password <пароль_для_реестра> \ --topic '$devices/<идентификатор_устройства>/events' \ --qos 1
-
Подпишите реестр на перманентный топик устройства, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_реестра> \ --password <пароль_для_реестра> \ --topic '$devices/<идентификатор_устройства>/state' \ --qos 1
Где:
--username
и--password
— параметры для авторизации с помощью логина и пароля.--topic
— топик устройства для отправки данных.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
Подпишите реестр на топики всех устройств, добавленных в него
Реестр будет получать данные только от тех устройств, которые отправляют сообщения в топик $registries/<идентификатор_реестра>/events
или $registries/<идентификатор_реестра>/state
.
-
Подпишите реестр на топики всех устройств, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert registry-cert.pem \ --key registry-key.pem \ --topic '$registries/<идентификатор_реестра>/events' \ --qos 1
-
Подпишите реестр на перманентные топики всех устройств, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert registry-cert.pem \ --key registry-key.pem \ --topic '$registries/<идентификатор_реестра>/state' \ --qos 1
Где:
--cert
и--key
— параметры для авторизации с помощью сертификата.--topic
— топик реестра для получения данных.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
-
Подпишите реестр на топики всех устройств, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_реестра> \ --password <пароль_для_реестра> \ --topic '$registries/<идентификатор_реестра>/events' \ --qos 1
-
Подпишите реестр на перманентные топики всех устройств, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_реестра> \ --password <пароль_для_реестра> \ --topic '$registries/<идентификатор_реестра>/state' \ --qos 1
Где:
--username
и--password
— параметры для авторизации с помощью логина и пароля.--topic
— топик реестра для получения данных.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
Подписать устройство на топики реестра
Команды от реестра могут предназначаться конкретному устройству или всем устройствам в реестре. Для этого используются разные топики.
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug
и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
Подпишите устройство на топики — команды для конкретного устройства
-
Подпишите устройство на топики — команды для конкретного устройства, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert device-cert.pem \ --key device-key.pem \ --topic '$devices/<идентификатор_устройства>/commands' \ --qos 1
-
Подпишите устройство на перманентные топики — команды для конкретного устройства, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert device-cert.pem \ --key device-key.pem \ --topic '$devices/<идентификатор_устройства>/config' \ --qos 1
Где:
--cert
и--key
— параметры для авторизации с помощью сертификата.--topic
— топик устройства для получения команд.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
-
Подпишите устройство на топики — команды для конкретного устройства, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_устройства> \ --password <пароль_для_устройства> \ --topic '$devices/<идентификатор_устройства>/commands' \ --qos 1
-
Подпишите устройство на перманентные топики — команды для конкретного устройства, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_устройства> \ --password <пароль_для_устройства> \ --topic '$devices/<идентификатор_устройства>/config' \ --qos 1
Где:
--username
и--password
— параметры для авторизации с помощью логина и пароля.--topic
— топик устройства для получения команд.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
Подпишите устройство на топики — команды для всех устройств
Команды будут получать только устройства, подписанные на топик $registries/<идентификатор_реестра>/commands
или $registries/<идентификатор_реестра>/config
.
-
Подпишите устройство на топики — команды, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert device-cert.pem \ --key device-key.pem \ --topic '$registries/<идентификатор_реестра>/commands' \ --qos 1
-
Подпишите устройство на перманентные топики — команды, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert device-cert.pem \ --key device-key.pem \ --topic '$registries/<идентификатор_реестра>/config' \ --qos 2
Где:
--cert
и--key
— параметры для авторизации с помощью сертификата.--topic
— топик реестра для отправки команд.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
-
Подпишите устройство на топики — команды, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_устройства> \ --password <пароль_для_устройства> \ --topic '$registries/<идентификатор_реестра>/commands' \ --qos 1
-
Подпишите устройство на перманентные топики — команды, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_устройства> \ --password <пароль_для_устройства> \ --topic '$registries/<идентификатор_реестра>/config' \ --qos 1
Где:
--username
и--password
— параметры для авторизации с помощью логина и пароля.--topic
— топик реестра для отправки команд.--message
— текст сообщения.--qos
— уровень качества обслуживания (QoS).
Подпишитесь на топики брокера
При использовании брокера вы можете подписаться на произвольный топик, используя для авторизации логин и пароль или любой сертификат, назначенный брокеру.
-
Подпишитесь на топик, используя авторизацию по логину и паролю:
yc iot mqtt subscribe \ --username <идентификатор_брокера> \ --password <пароль_для_брокера> \ --topic /my/custom/topic \ --qos 1
Где:
--username
и--password
— параметры для авторизации с помощью логина и пароля.--topic
— произвольное имя топика, соответствующее спецификации MQTT и не начинающееся с символа$
--qos
— уровень качества обслуживания (QoS).
-
Подпишитесь на топик, используя авторизацию по сертификату:
yc iot mqtt subscribe \ --cert broker-cert.pem \ --key broker-key.pem \ --topic /my/custom/topic \ --qos 1
Где:
--cert
и--key
— параметры для авторизации с помощью сертификата.--topic
— произвольное имя топика, соответствующее спецификации MQTT и не начинающееся с символа$
--qos
— уровень качества обслуживания (QoS).