Tous les produits
Search
Centre de documentation

IoT Platform:Utiliser la bibliothèque Paho MQTT pour Python afin de connecter un appareil à IoT Platform

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment utiliser la bibliothèque Paho MQTT pour Python afin de connecter un appareil à IoT Platform et d'activer la messagerie.

Prérequis

Dans la console IoT Platform , pour l'instance correspondante, créez un produit et un appareil, puis obtenez le nom de domaine d'accès MQTT et les informations du certificat de l'appareil (ProductKey, DeviceName et DeviceSecret). Pour plus d'informations, consultez :

Préparer un environnement de développement

Nous vous recommandons d'utiliser Python 3.6.

  • Linux

    Exécutez les commandes suivantes pour installer Python :

    Important

    Dans cette rubrique, les opérations sont effectuées avec les droits d'un utilisateur standard. Si vous devez effectuer des opérations spécifiques nécessitant des droits d'administrateur, utilisez la commande sudo.

    sudo add-apt-repository ppa:deadsnakes/ppa 
    sudo apt-get update 
    sudo apt-get install python3.6 
    wget https://bootstrap.pypa.io/get-pip.py 
    sudo python3.6 get-pip.py 
    python3.6 -m pip install --upgrade pip setuptools wheel 
    sudo apt-get install python3.6-venv
  • Windows

    Installez l'un des packages suivants en fonction de votre système d'exploitation :

  • macOS

    Téléchargez le package python-3.6.7-macosx10.9.pkg.

Télécharger la bibliothèque Paho MQTT pour Python

Pour plus d'informations sur le projet Paho et les langages de programmation pris en charge, consultez Eclipse Paho Downloads.

Exécutez la commande suivante pour installer la bibliothèque Paho MQTT pour Python. Pour plus d'informations, consultez Paho-MQTT.

pip install paho-mqtt==1.6.1
Important

Cette démo ne prend pas en charge la bibliothèque Paho MQTT version 2.0.0.

Connecter un appareil à IoT Platform

  • Le fichier MqttSign.py définit une fonction appelée pour obtenir les paramètres de connexion MQTT. Vous devez appeler cette fonction pour connecter votre appareil à IoT Platform.

    Fonctions :

    • Cette fonction permet d'obtenir les paramètres de connexion MQTT suivants : username, password et mqttClientId.

    • Paramètres d'entrée :

      |
      Paramètre
      |
      Type
      |
      Description
      | | --- | --- | --- | |
      **productKey**
      |
      String
      |
      ProductKey du produit auquel appartient l'appareil. Ce paramètre sert à identifier l'appareil dans IoT Platform.
      | |
      **deviceName**
      |
      String
      |
      DeviceName de l'appareil. Ce paramètre sert à identifier l'appareil dans IoT Platform.
      | |
      **deviceSecret**
      |
      String
      |
      DeviceSecret de l'appareil. Ce paramètre sert à identifier l'appareil dans IoT Platform.
      | |
      **clientId**
      |
      String
      |
      ClientID de l'appareil. Pour identifier efficacement un appareil, nous vous recommandons d'utiliser l'adresse MAC ou le numéro de série (SN) de l'appareil comme ClientID.
      | |
      **timeStamp**
      |
      String
      |
      Horodatage indiquant l'heure actuelle en millisecondes. Ce paramètre est facultatif.
      |



































    • Paramètres de sortie :

      |
      Paramètre
      |
      Type
      |
      Description
      | | --- | --- | --- | |
      **mqttUsername**
      |
      String
      |
      Nom d'utilisateur utilisé pour établir la connexion MQTT.
      | |
      **mqttPassword**
      |
      String
      |
      Mot de passe utilisé pour établir la connexion MQTT.
      | |
      **mqttClientId**
      |
      String
      |
      ID du client MQTT.
      |























  1. Ajoutez un fichier de programme permettant de connecter un appareil à IoT Platform.

    Pour obtenir les paramètres de connexion MQTT, vous devez écrire un programme qui appelle la fonction du fichier MqttSign.py.

    Cette section fournit les instructions de développement et un exemple de code.

    • Spécifiez les informations de l'appareil.

      # set the device info, include product key, device name, and device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
      
      # set timestamp, clientid, subscribe topic and publish topic
      timeStamp = str((int(round(time.time() * 1000))))
      clientId = "192.168.****"
      subTopic = "/" + productKey + "/" + deviceName + "/user/get"
      pubTopic = "/" + productKey + "/" + deviceName + "/user/update"
    • Spécifiez les informations de connexion MQTT.

      Appelez la fonction calculate_sign_time du fichier MqttSign.py. Cette fonction renvoie les paramètres mqttUsername, mqttPassword et mqttClientId en fonction des valeurs des paramètres d'entrée suivants : deviceSecret, timeStamp, clientId, productKey et deviceName.

      Dans cet exemple, une connexion TCP basée sur TLS (Transport Layer Security) est établie. Vous devez télécharger un certificat racine pour configurer les paramètres de connexion.

      # set host, port
      host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com"
      # instanceId = "***"
      # host = instanceId + ".mqtt.iothub.aliyuncs.com"
      port = 1883
      
      # set tls crt, keepalive
      tls_crt = "root.crt"
      keepAlive = 300
      
      # calculate the login auth info, and set it into the connection options
      m = AuthIfo()
      m.calculate_sign_time(productKey, deviceName, deviceSecret, clientId, timeStamp)
      client = mqtt.Client(m.mqttClientId)
      client.username_pw_set(username=m.mqttUsername, password=m.mqttPassword)
      client.tls_set(tls_crt)
      Remarque
      • Si vous utilisez une instance publique de l'ancienne version, remplacez cn-shanghai dans host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" par l'ID de la région où réside l'appareil. Pour plus d'informations sur les formats des ID de région, consultez Régions prises en charge.

      • Si vous utilisez une instance publique de la nouvelle version ou une instance Enterprise Edition, remplacez instanceId dans host = instanceId + ".mqtt.iothub.aliyuncs.com" par l'ID de l'instance.

        Pour obtenir l'endpoint MQTT, procédez comme suit : Connectez-vous à la console IoT Platform console. Sur la page Overview, cliquez sur la carte de l'instance que vous souhaitez gérer. L'endpoint MQTT s'affiche sur la page des détails de l'instance. Pour plus d'informations, consultez Consulter l'endpoint d'une instance.

        Pour plus d'informations sur les instances IoT Platform, consultez Présentation des instances.

    • Appelez la fonction Connect() pour connecter l'appareil à IoT Platform.

      def on_connect(client, userdata, flags, rc):
          if rc == 0:
              print("connect success!")
          else:
              print("connect failed...  error code is:" + str(rc))
      
      def connect_mqtt():
          client.on_connect = on_connect
          client.connect(host, port, keepAlive)
          return client
    • Appelez la fonction Publish() pour publier des messages. Vous devez spécifier un sujet vers lequel les messages sont publiés ainsi que les charges utiles des messages.

      def publish_message():
          # publish 5 messages to pubTopic("/a1LhUsK****/python***/user/update")
          for i in range(5):
              message = "ABC" + str(i)
              client.publish(pubTopic, message)
              print("publish msg:" + str(i))
              time.sleep(2)

      Pour plus d'informations sur les sujets, consultez Qu'est-ce qu'un sujet ?

    • Appelez la fonction Subscribe() pour vous abonner au sujet et recevoir des messages depuis IoT Platform.

      def subscribe_topic():
          # subscribe to subTopic("/a1LhUsK****/python***/user/get") and request messages to be delivered
          client.subscribe(subTopic)

      Pour plus d'informations sur les méthodes de communication entre les appareils, les serveurs et IoT Platform, consultez Présentation des méthodes de communication dans IoT Platform.

  2. Exécutez le projet.

Exemple de code

Exécutez le programme compilé à partir de l'exemple de code pour connecter l'appareil à IoT Platform.

  1. Téléchargez le package contenant l'exemple de code via ce lien et décompressez-le dans le répertoire aiot-python-demo. Le tableau suivant décrit les fichiers inclus dans le répertoire.

    |
    Fichier de certificat
    |
    Description
    | | --- | --- | |
    MqttSign.py
    |
    Ce fichier contient le code utilisé pour obtenir les paramètres de connexion requis pour connecter un appareil à IoT Platform via MQTT. Lors de l'exécution du fichier, la fonction `calculate_sign_time` est appelée pour obtenir les valeurs des paramètres **mqttUsername**, **mqttPassword** et **mqttClientId**.
    | |
    iot.py
    |
    Ce fichier contient le code logique utilisé pour connecter un appareil à IoT Platform et activer la communication.
    | |
    root.crt
    |
    Certificat racine d'IoT Platform. Ce certificat est requis pour connecter des appareils à IoT Platform.
    |















  2. Dans le fichier iot.py, remplacez les informations de l'appareil par vos propres informations.

    • Remplacez les valeurs des paramètres productKey, deviceName et deviceSecret par les informations du certificat de votre appareil.

      # set the device info, include product key, device name, and device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
    • Facultatif : Remplacez les valeurs des paramètres timeStamp et clientId. Vous pouvez remplacer la valeur du paramètre clientId par l'adresse MAC ou le SN de votre appareil.

      Remarque

      Si vous ne remplacez pas les valeurs, vous pourrez toujours connecter l'appareil à IoT Platform. Toutefois, dans des scénarios réels, nous vous recommandons de remplacer les valeurs des paramètres par des valeurs réelles.

    • Remplacez .iot-as-mqtt.cn-shanghai.aliyuncs.com dans host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" par l'endpoint MQTT réel.

      Pour plus d'informations, consultez l'étape 2 de la section « Connecter un appareil à IoT Platform »Connecter un appareil à IoT Platform de cette rubrique.

  3. Exécutez le fichier iot.py.

    Après avoir exécuté le fichier, les journaux locaux suivants sont générés :

    Connect aliyun IoT Cloud Sucess
    subscribe topic: /a1LhUsK***/python***/user/get
    publish msg: 0
    publish msg: ABC0
    publish msg: 1
    publish msg: ABC1
    publish msg: 2
    publish msg: ABC2
    publish msg: 3
    publish msg: ABC3
    publish msg: 4
    publish msg: ABC4

    Connectez-vous à la console IoT Platform. Vous pouvez consulter l'état et les journaux de l'appareil sur l'instance.

    • Dans le volet de navigation de gauche, choisissez Device Management > Devices. Vous constatez que l'état de l'appareil est Online.

    • Choisissez Monitoring & O&M > Log Service. Vous pouvez consulter les IoT Platform logs et les on-premises device logs. Pour plus d'informations, consultez Journaux IoT Platform et Journaux des appareils locaux.

Codes d'erreur

Si un appareil ne parvient pas à se connecter à IoT Platform via MQTT, vous pouvez résoudre le problème en vous basant sur le code d'erreur. Pour plus d'informations, consultez Dépannage.