Отправить сообщение с использованием 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— топик устройства.-m— текст сообщения.-q— уровень качества обслуживания (QoS).
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
-
Отправьте данные в топик устройства:
mosquitto_pub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$devices/<идентификатор_устройства>/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/<идентификатор_устройства>/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/<идентификатор_реестра>/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/<идентификатор_реестра>/state' \ -m 'Test data' \ -q 1Реестр, подписанный на данный топик, не будет знать, какое именно устройство отправило данные, так как в топике отсутствует уникальный идентификатор устройства.
-
Отправить сообщение с командой
Реестр может отправить сообщение с командой одному, нескольким или всем устройствам, добавленным в него. Рассмотрим все варианты.
Отправьте сообщение с командой, используя следующие параметры:
-h— адрес MQTT-сервера.-p— порт MQTT-сервера.--cafile— путь к сертификату удостоверяющего центра.--cert— путь к публичной части сертификата реестра.--key— путь к приватной части сертификата реестра.-t— топик устройства.-m— текст сообщения.-q— уровень качества обслуживания (QoS).
Примечание
Если в процессе выполнения команды у вас возникла ошибка, добавьте к команде флаг --debug и попробуйте еще раз. Данный флаг выводит журнал отладки при выполнении команды, что помогает при диагностике проблемы.
-
Отправьте команду одному устройству:
mosquitto_pub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$devices/<идентификатор_устройства>/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/<идентификатор_устройства>/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/<идентификатор_первого_устройства>/commands' \ -t '$devices/<идентификатор_второго_устройства>/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/<идентификатор_первого_устройства>/config' \ -t '$devices/<идентификатор_второго_устройства>/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/<идентификатор_реестра>/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/<идентификатор_реестра>/config' \ -m 'Test command for all devices via permanent topic' \ -q 1