Subscribing a device or registry to receive messages using Mosquitto
Warning
Yandex IoT Core is no longer available to new users.
Current users can create resources until November 1, 2026. Afterwards, the service will go read-only and cease to operate on December 1, 2026. For more information on the timing and procedure, see Service shutdown.
You can subscribe:
- A registry to device events using the
$devices/<device_ID>/eventsor$registries/<registry_ID>/eventstopics. - A registry to device events using the permanent topics:
$devices/<device_ID>/stateor$registries/<registry_ID>/state. - A device to registry commands using the
$devices/<device_ID>/commandsor$registries/<registry_ID>/commandstopics. - A device to registry commands using the permanent topics:
$devices/<device_ID>/configor$registries/<registry_ID>/config.
To learn more about messaging, see Sending a message using Mosquitto.
Warning
Registry topics and device topics are independent of each other. If a device sends data to a device telemetry topic, you can only receive this data by subscribing to that topic. The same applies to registry topics.
Getting started
Set up the following:
- Registry.
- Registry certificate.
- Device.
- Device certificate.
- Mosquitto
, an open source MQTT message broker. This guide uses it for sending messages and subscribing to devices. Download and install it to work with commands provided in this guide.
Connecting to an MQTT server
To connect to the MQTT server, use the following settings:
- CA certificate
. - Server address:
mqtt.cloud.yandex.net. - Server port:
8883. - Protocol:
TLSv1.2.
Subscribing a registry to device topics
You can subscribe a registry to topics of one, multiple, or all devices added to it. Let's look at all the options.
Subscribe a registry to a device or devices using the following parameters:
-h: MQTT server address.-p: MQTT server port.--cafile: Path to the certificate from the certificate authority.--cert: Path to the public part of the registry.--key: Path to the private part of the registry certificate.-t: Device topics.-q: Quality of service (QoS) level.
Note
If you encounter an error while running a command, add the --debug flag and retry the command. This flag outputs a debug log when running the command, which helps troubleshoot the issue.
-
Subscribe a registry to a single device's topic:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$devices/<device_ID>/events' \ -q 1 -
Subscribe a registry to a device's permanent topic:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$devices/<device_ID>/state' \ -q 1 -
Subscribe a registry to the topics of multiple devices:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$devices/<device_1_ID>/events' \ -t '$devices/<device_2_ID>/events' \ -q 1 -
Subscribe a registry to the permanent topics of multiple devices:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$devices/<device_1_ID>/state' \ -t '$devices/<device_2_ID>/state' \ -q 1 -
Subscribe a registry to the topics of all devices:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$registries/<registry_ID>/events' \ -q 1 -
Subscribe a registry to the permanent topics of all devices:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert registry-cert.pem \ --key registry-key.pem \ -t '$registries/<registry_ID>/state' \ -q 1The registry will only receive data from devices that send messages to the
$registries/<registry_ID>/eventsor$registries/<registry_ID>/statetopic.
Subscribing a device to registry topics
Commands from a registry can be given to a specific device or all devices in the registry. This involves using different topics.
Subscribe a device to a registry using the following parameters:
-h: MQTT server address.-p: MQTT server port.--cafile: Path to the certificate from the certificate authority.--cert: Path to the public part of the certificate.--key: Path to the private part of the device certificate.-t: Device topic.-q: Quality of service (QoS) level.
Note
If you encounter an error while running a command, add the --debug flag and retry the command. This flag outputs a debug log when running the command, which helps troubleshoot the issue.
-
Subscribe a device to topics that are commands for a specific device:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$devices/<device_ID>/commands' \ -q 1 -
Subscribe a device to permanent topics that are commands for a specific device:
mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$devices/<device_ID>/config' \ -q 1 -
Subscribe a device to topics that are commands for all devices:
```bash mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$registries/<registry_ID>/commands' \ -q 1 ``` -
Subscribe a device to permanent topics that are commands for all devices:
```bash mosquitto_sub -h mqtt.cloud.yandex.net \ -p 8883 \ --cafile rootCA.crt \ --cert device-cert.pem \ --key device-key.pem \ -t '$registries/<registry_ID>/config' \ -q 1 ``` Only devices subscribed to the `$registries/<registry_ID>/commands` or `$registries/<registry_ID>/config` topic will receive commands.