Подписать устройство или реестр на получение сообщений с использованием Mosquitto
Вы можете подписать:
- Реестр на события устройства, используя топики
$devices/<идентификатор_устройства>/events
или$registries/<идентификатор_реестра>/events
. - Реестр на события устройства, используя перманентные топики
$devices/<идентификатор_устройства>/state
или$registries/<идентификатор_реестра>/state
. - Устройство на команды реестра, используя топики
$devices/<идентификатор_устройства>/commands
или$registries/<идентификатор_реестра>/commands
. - Устройство на команды реестра, используя перманентные топики
$devices/<идентификатор_устройства>/config
или$registries/<идентификатор_реестра>/config
.
О том, как обмениваться сообщениями, читайте в разделе Отправить сообщение с использованием Mosquitto.
Важно
Топик реестра и топик устройства не связаны между собой. Если устройство отправляет данные в топик устройства для телеметрических данных, получить их можно только подписавшись на этот топик. Аналогично для топика реестра.
Перед началом работы
Подготовьте:
- Реестр.
- Сертификат для реестра.
- Устройство.
- Сертификат для устройства.
- Mosquitto
, MQTT-брокер сообщений с открытым исходным кодом. Используется в инструкции для отправки сообщений и подписки на устройства. Необходимо скачать и установить его , чтобы работать с командами, представленными в инструкции.
Подключиться к MQTT-серверу
Для подключения к MQTT-серверу используйте следующие параметры:
- Сертификат удостоверяющего центра
. - Адрес сервера:
mqtt.cloud.yandex.net
. - Порт сервера:
8883
. - Протокол:
TLSv1.2
.
Подписать реестр на топики устройств
Реестр можно подписать на топики от одного, нескольких или всех устройств, добавленных в него. Рассмотрим все варианты.
Подпишите реестр, используя следующие параметры:
-h
— адрес MQTT-сервера.-p
— порт MQTT-сервера.--cafile
— путь к сертификату удостоверяющего центра.--cert
— путь к публичной части сертификата реестра.--key
— путь к приватной части сертификата реестра.-t
— топики устройства.-q
— уровень качества обслуживания (QoS).
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug
и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
Подписать устройство на топики реестра
Команды от реестра могут предназначаться конкретному устройству или всем устройствам в реестре. Для этого используются разные топики.
Подпишите устройство, используя следующие параметры:
-h
— адрес MQTT-сервера.-p
— порт MQTT-сервера.--cafile
— путь к сертификату удостоверяющего центра.--cert
— путь к публичной части сертификата устройства.--key
— путь к приватной части сертификата устройства.-t
— топик устройства.-q
— уровень качества обслуживания (QoS).
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug
и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
-
Подпишите устройство на топики — команды для конкретного устройства:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$devices/<идентификатор_устройства>/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/<идентификатор_устройства>/config' \ -q 1
-
Подпишите устройство на топики — команды для всех устройств:
```bash mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$registries/<идентификатор_реестра>/commands' \ -q 1 ```
-
Подпишите устройство на перманентные топики — команды для всех устройств:
```bash mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$registries/<идентификатор_реестра>/config' \ -q 1 ``` Команды будут получать только устройства, подписанные на топик `$registries/<идентификатор_реестра>/commands` или `$registries/<идентификатор_реестра>/config`.