Todos los productos
Search
Centro de documentos

IoT Platform:Uso de la biblioteca Paho MQTT para Python con el fin de conectar un dispositivo a IoT Platform

Última actualización: Sep 08, 2026

Este tema describe cómo usar la biblioteca Paho MQTT para Python con el fin de conectar un dispositivo a IoT Platform y habilitar la mensajería.

Requisitos previos

En la consola de IoT Platform , para la instancia correspondiente, cree un producto y un dispositivo, y obtenga el nombre de dominio de acceso MQTT y la información del certificado del dispositivo (ProductKey, DeviceName y DeviceSecret). Para obtener más información, consulte:

Preparación de un entorno de desarrollo

Se recomienda usar Python 3.6.

  • Linux

    Ejecute los siguientes comandos para instalar Python:

    Importante

    En este tema se utilizan los permisos de un usuario común para ejecutar todas las operaciones. Si necesita realizar alguna operación que requiera permisos de administrador, ejecute el comando 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

    Instale uno de los siguientes paquetes según su sistema operativo:

  • macOS

    Descargue el paquete python-3.6.7-macosx10.9.pkg.

Descarga de la biblioteca Paho MQTT para Python

Para obtener más información sobre el proyecto Paho y los lenguajes de programación compatibles, consulte Eclipse Paho Downloads.

Ejecute el siguiente comando para instalar la biblioteca Paho MQTT para Python. Para obtener más información, consulte Paho-MQTT.

pip install paho-mqtt==1.6.1
Importante

Esta demostración no es compatible con la versión 2.0.0 de la biblioteca Paho MQTT.

Conexión de un dispositivo a IoT Platform

  • El archivo MqttSign.py define una función que se llama para obtener los parámetros de conexión MQTT. Debe llamar a esta función para conectar su dispositivo a IoT Platform.

    Funciones:

    • Esta función permite obtener los siguientes parámetros de conexión MQTT: username, password y mqttClientId.

    • Parámetros de entrada:

      Parámetro

      Tipo

      Descripción

      productKey

      String

      El ProductKey del producto al que pertenece el dispositivo. Este parámetro identifica el dispositivo en IoT Platform.

      deviceName

      String

      El DeviceName del dispositivo. Este parámetro identifica el dispositivo en IoT Platform.

      deviceSecret

      String

      El DeviceSecret del dispositivo. Este parámetro identifica el dispositivo en IoT Platform.

      clientId

      String

      El ClientID del dispositivo. Para identificar un dispositivo de manera eficiente, se recomienda usar la dirección MAC o el número de serie (SN) del dispositivo como ClientID.

      timeStamp

      String

      La marca de tiempo que indica la hora actual en milisegundos. Este parámetro es opcional.

    • Parámetros de salida:

      Parámetro

      Tipo

      Descripción

      mqttUsername

      String

      El nombre de usuario que se utiliza para establecer la conexión MQTT.

      mqttPassword

      String

      La contraseña que se utiliza para establecer la conexión MQTT.

      mqttClientId

      String

      El ID del cliente MQTT.

  1. Agregue un archivo de programa que permita conectar un dispositivo a IoT Platform.

    Para obtener los parámetros de conexión MQTT, debe escribir un programa que llame a la función del archivo MqttSign.py.

    En esta sección se proporcionan las instrucciones de desarrollo y el código de ejemplo.

    • Especifique la información del dispositivo.

      # 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"
    • Especifique la información de conexión MQTT.

      Llame a la función calculate_sign_time del archivo MqttSign.py. Esta función devuelve los parámetros mqttUsername, mqttPassword y mqttClientId a partir de los valores de los siguientes parámetros de entrada: deviceSecret, timeStamp, clientId, productKey y deviceName.

      En este ejemplo se establece una conexión TCP basada en Transport Layer Security (TLS). Debe descargar un certificado raíz para configurar los parámetros de conexión.

      # 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)
      Nota
      • Si utiliza una instancia pública de la versión anterior, reemplace cn-shanghai en host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" por el ID de la región donde reside el dispositivo. Para obtener más información sobre los formatos de los ID de región, consulte Supported regions.

      • Si utiliza una instancia pública de la nueva versión o una instancia Enterprise Edition, reemplace instanceId en host = instanceId + ".mqtt.iothub.aliyuncs.com" por el ID de la instancia.

        Para obtener el endpoint MQTT, siga estos pasos: inicie sesión en la IoT Platform console. En la página Overview, haga clic en la tarjeta de la instancia que desea gestionar. El endpoint MQTT se muestra en la página Instance Details. Para obtener más información, consulte View the endpoint of an instance.

        Para obtener más información sobre las instancias de IoT Platform, consulte Instance overview.

    • Llame a la función Connect() para conectar el dispositivo a 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
    • Llame a la función Publish() para publicar mensajes. Debe especificar el tema donde se publicarán los mensajes y sus cargas útiles.

      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)

      Para obtener más información sobre los temas, consulte What is a topic?

    • Llame a la función Subscribe() para suscribirse al tema y recibir mensajes de IoT Platform.

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

      Para obtener más información sobre los métodos de comunicación entre dispositivos, servidores e IoT Platform, consulte Overview of communication methods in IoT Platform.

  2. Ejecute el proyecto.

Código de ejemplo

Ejecute el programa compilado con el código de ejemplo para conectar el dispositivo a IoT Platform.

  1. Descargue el paquete que contiene el código de ejemplo desde el enlace y descomprímalo en el directorio aiot-python-demo. A continuación se describen los archivos que contiene este directorio.

    Archivo de certificado

    Descripción

    MqttSign.py

    Este archivo contiene el código que se utiliza para obtener los parámetros de conexión necesarios para conectar un dispositivo a IoT Platform mediante MQTT. Al ejecutar el archivo, se llama a la función calculate_sign_time para obtener los valores de los parámetros mqttUsername, mqttPassword y mqttClientId.

    iot.py

    Este archivo contiene el código lógico que se utiliza para conectar un dispositivo a IoT Platform y habilitar la comunicación.

    root.crt

    El certificado raíz de IoT Platform. Este certificado es obligatorio para conectar dispositivos a IoT Platform.

  2. En el archivo iot.py, reemplace la información del dispositivo por la de su propio dispositivo.

    • Reemplace los valores de los parámetros productKey, deviceName y deviceSecret por la información del certificado de su dispositivo.

      # set the device info, include product key, device name, and device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
    • Opcional. Reemplace los valores de los parámetros timeStamp y clientId. Puede sustituir el valor del parámetro clientId por la dirección MAC o el SN de su dispositivo.

      Nota

      Si no reemplaza los valores, aún podrá conectar el dispositivo a IoT Platform. No obstante, en escenarios reales se recomienda sustituir los valores de los parámetros por datos reales.

    • Reemplace .iot-as-mqtt.cn-shanghai.aliyuncs.com en host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" por el endpoint MQTT real.

      Para obtener más información, consulte el paso 2 de la sección "Connect a device to IoT Platform" de este tema.

  3. Ejecute el archivo iot.py.

    Después de ejecutar el archivo, se generan los siguientes registros locales:

    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

    Inicie sesión en IoT Platform console. En la instancia puede consultar el estado y los registros del dispositivo.

    • En el panel de navegación izquierdo, elija Device Management > Devices. Verá que el estado del dispositivo es Online.

    • Elija Monitoring & O&M > Log Service. Aquí puede consultar los IoT Platform logs y los on-premises device logs. Para obtener más información, consulte IoT Platform logs y On-premises device logs.

Códigos de error

Si un dispositivo no logra conectarse a IoT Platform mediante MQTT, puede solucionar el problema a partir del código de error. Para obtener más información, consulte Troubleshooting.