Yandex Cloud
Search
Contact UsGet started
  • Blog
  • Pricing
  • Documentation
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • ML & AI
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Customer Stories
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Education and Science
    • Yandex Cloud Partner program
  • Blog
  • Pricing
  • Documentation
© 2025 Direct Cursus Technology L.L.C.
Tutorials
    • All tutorials
        • Sending messages
        • Subscribing a device or registry to receive messages
      • Working with Yandex IoT Core from an Android device in Java
      • Working with Yandex IoT Core in C#
      • Working with Yandex IoT Core in Java
      • Status monitoring of geographically distributed devices
      • Sensor reading monitoring and event notifications
      • Testing message delivery
      • Emulating multiple IoT devices
      • Writing data from a device into a database

In this article:

  • Getting started
  • Connecting to an MQTT server
  • Subscribing a registry to device topics
  • Subscribing a device to registry topics
  1. Application solutions
  2. Internet of Things (IoT)
  3. Working with Mosquitto
  4. Subscribing a device or registry to receive messages

Subscribing a device or registry to receive messages using Mosquitto

Written by
Yandex Cloud
Updated at March 3, 2025
  • Getting started
  • Connecting to an MQTT server
  • Subscribing a registry to device topics
  • Subscribing a device to registry topics

You can subscribe:

  • A registry to device events using the $devices/<device_ID>/events or $registries/<registry_ID>/events topics.
  • A registry to device events using the permanent topics: $devices/<device_ID>/state or $registries/<registry_ID>/state.
  • A device to registry commands using the $devices/<device_ID>/commands or $registries/<registry_ID>/commands topics.
  • A device to registry commands using the permanent topics: $devices/<device_ID>/config or $registries/<registry_ID>/config.

To learn more about messaging, see Sending a message using Mosquitto.

Warning

Registry and device topics are not interconnected. If a device sends data to the device topic for telemetry data, you can only receive it by subscribing to this topic. The same is true for registry topics.

Getting startedGetting started

Prepare the following:

  1. Registry.
  2. A registry certificate.
  3. Device.
  4. A device certificate.
  5. Mosquitto, an open source MQTT message broker. It is used in instructions for sending messages and subscribing to devices. Download and install it to work with commands given in instructions.

Connecting to an MQTT serverConnecting to an MQTT server

To connect to the MQTT server, use the following parameters:

  • A certificate from the certificate authority.
  • Server address: mqtt.cloud.yandex.net.
  • Server port: 8883.
  • Protocol: TLSv1.2.

Subscribing a registry to device topicsSubscribing 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 the command, add the --debug flag to the command and try again. This flag outputs the debug log when running the command, which helps you diagnose the problem.

Mosquitto
  • 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 1
    

    The registry will only receive data from devices that send messages to the $registries/<registry_ID>/events or $registries/<registry_ID>/state topic.

Subscribing a device to registry topicsSubscribing 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 the command, add the --debug flag to the command and try again. This flag outputs the debug log when running the command, which helps you diagnose the problem.

Mosquitto
  • 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.
    

Was the article helpful?

Previous
Sending messages
Next
Working with Yandex IoT Core from an Android device in Java
© 2025 Direct Cursus Technology L.L.C.