Tous les produits
Search
Centre de documentation

IoT Platform:Communicate over MQTT topics

Dernière mise à jour :Aug 10, 2026

Utilisez le kit de développement logiciel (SDK) Python Link pour vous abonner à des topics, publier des messages et vous désabonner de topics sur IoT Platform via MQTT. Cette rubrique décrit le flux complet de requête et de confirmation pour chaque opération.

Format de topic

Un topic est un canal de communication entre un appareil et IoT Platform. Les appareils utilisent les topics pour envoyer et recevoir des messages.

Les topics utilisent des barres obliques (/) pour définir une hiérarchie et séparer les catégories. Les trois premiers niveaux d'un topic personnalisé sont prédéfinis :

Niveau

Valeur

Description

1

ProductKey

Identifie le produit

2

${deviceName}

Joker pour le DeviceName

3

user

Identifie la catégorie de topic personnalisé

Pour plus d'informations, consultez Qu'est-ce qu'un topic ?.

Recevoir des messages depuis le cloud

Appelez subscribe_topic() pour vous abonner à un topic :

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

Dans la démonstration mqtt_sub_pub_on.py, appelez lk.to_full_topic("user/test") pour générer une chaîne de topic. L'API to_full_topic utilise le ProductKey et le DeviceName que vous avez spécifiés et renvoie une chaîne équivalente à /YourProductKey/YourDeviceName/user/test.

Le résultat de l'abonnement est renvoyé dans le rappel 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
            

La variable granted_qos correspond au niveau de qualité de service (QoS) accordé pour le topic abonné :

Valeur

Signification

0 ou 1

L'abonnement a réussi.

128

L'abonnement a échoué.

Recevoir et traiter les messages du cloud

Les messages entrants déclenchent le rappel 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
            

Envoyer des messages vers le cloud

Important

Dans les versions 1.0.0 à 1.2.11 du SDK Python Link, si l'appareil se déconnecte d'IoT Platform, l'appel de l'API de publication lève une exception que vous devez gérer. Dans les versions 1.2.12 et ultérieures, l'API renvoie une valeur d'erreur non nulle au lieu de lever une exception.

Envoyer un message

Appelez publish_topic() pour publier un message vers le cloud :

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

Notification du résultat de publication

Le rappel on_publish_topic confirme si le cloud a reçu le message :

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

Une valeur rc de 0 provenant de publish_topic signifie que la requête a été écrite dans le tampon d'envoi. Un rappel on_publish_topic réussi confirme ensuite que la publication a abouti.

Se désabonner d'un topic

Important

Dans les versions 1.0.0 à 1.2.11 du SDK Python Link, si l'appareil se déconnecte d'IoT Platform, l'appel de l'API de désabonnement lève une exception que vous devez gérer. Dans les versions 1.2.12 et ultérieures, l'API renvoie une valeur d'erreur non nulle au lieu de lever une exception.

Appelez unsubscribe_topic() pour vous désabonner d'un topic spécifique :

rc, mid = lk.unsubscribe_topic(topic)           

Le résultat du désabonnement est renvoyé dans le rappel on_unsubscribe_topic :

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

Une valeur rc de 0 provenant de unsubscribe_topic signifie que la requête a été écrite dans le tampon de cache. Toute autre valeur indique un échec. Un rappel on_unsubscribe_topic réussi confirme ensuite que le désabonnement a abouti.