Todos los productos
Search
Centro de documentos

IoT Platform:Communicate over MQTT topics

Última actualización: Sep 03, 2026

Utilice el kit de desarrollo de software (SDK) Link de Python para suscribirse a temas, publicar mensajes y cancelar la suscripción a temas en IoT Platform mediante MQTT. Este tema describe el flujo completo de solicitud y confirmación para cada operación.

Formato de los temas

Un tema es un canal de comunicación entre un dispositivo e IoT Platform. Los dispositivos utilizan los temas para enviar y recibir mensajes.

Los temas emplean barras diagonales (/) para definir una jerarquía y separar categorías. Los primeros tres niveles de un tema personalizado están predefinidos:

Nivel

Valor

Descripción

1

ProductKey

Identifica el producto

2

${deviceName}

Comodín para DeviceName

3

user

Identifica la categoría del tema personalizado

Para obtener más información, consulte What is a topic?.

Recepción de mensajes desde la nube

Llame a subscribe_topic() para suscribirse a un tema:

rc, mid = lk.subscribe_topic(topic, qos=1)         
Nota

En la demostración mqtt_sub_pub_on.py, llame a lk.to_full_topic("user/test") para generar una cadena de tema. La API to_full_topic utiliza ProductKey y DeviceName que usted especificó y devuelve una cadena equivalente a /YourProductKey/YourDeviceName/user/test.

El resultado de la suscripción se devuelve en la función de devolución de llamada on_subscribe_topic:

lk.on_subscribe_topic = on_subscribe_topic
def on_subscribe_topic(mid, granted_qos, userdata):
    print("on_subscribe_topic mid:%d, granted_qos:%s" %
          (mid, str(','.join('%s' % it for it in granted_qos))))
    pass
            

granted_qos representa el nivel de calidad de servicio (QoS) otorgado para el tema suscrito:

Valor

Significado

0 o 1

Suscripción exitosa.

128

Suscripción con errores.

Recepción y procesamiento de mensajes desde la nube

Los mensajes entrantes activan la función de devolución de llamada on_topic_message():

lk.on_topic_message = on_topic_message
def on_topic_message(topic, payload, qos, userdata):
    print("on_topic_message:" + topic + " payload:" + str(payload) + " qos:" + str(qos))
    pass
            

Envío de mensajes a la nube

Importante

En las versiones 1.0.0 a 1.2.11 del SDK Link de Python, si el dispositivo se desconecta de IoT Platform, la llamada a la API de publicación genera una excepción que debe manejar. En la versión 1.2.12 y posteriores, la API devuelve un valor de error distinto de cero en lugar de generar una excepción.

Envío de un mensaje

Llame a publish_topic() para publicar un mensaje en la nube:

rc, mid = lk.publish_topic(topic, payload)     

Notificación del resultado de publicación

La función de devolución de llamada on_publish_topic confirma si la nube recibió el mensaje:

lk.on_publish_topic = on_publish_topic
def on_publish_topic(mid, userdata):
    print("on_publish_topic mid:%d" % mid)
            

Un valor rc de 0 en publish_topic indica que la solicitud se escribió en el búfer de envío. Posteriormente, una función de devolución de llamada on_publish_topic exitosa confirma que la publicación se completó correctamente.

Cancelación de suscripción a un tema

Importante

En las versiones 1.0.0 a 1.2.11 del SDK Link de Python, si el dispositivo se desconecta de IoT Platform, la llamada a la API de cancelación de suscripción genera una excepción que debe manejar. En la versión 1.2.12 y posteriores, la API devuelve un valor de error distinto de cero en lugar de generar una excepción.

Llame a unsubscribe_topic() para cancelar la suscripción a un tema específico:

rc, mid = lk.unsubscribe_topic(topic)           

El resultado de la cancelación de suscripción se devuelve en la función de devolución de llamada on_unsubscribe_topic:

lk.on_unsubscribe_topic = on_unsubscribe_topic
def on_unsubscribe_topic(mid, userdata):
    print("on_unsubscribe_topic mid:%d" % mid)
    pass
            

Un valor rc de 0 en unsubscribe_topic indica que la solicitud se escribió en el búfer de caché. Cualquier otro valor señala un error. Posteriormente, una función de devolución de llamada on_unsubscribe_topic exitosa confirma que la cancelación de suscripción se completó correctamente.