Todos os produtos
Search
Central de documentação

IoT Platform:Usar a biblioteca Paho MQTT para Python para conectar um dispositivo ao IoT Platform

Última atualização: Jun 26, 2026

Este tópico descreve como usar a biblioteca Paho MQTT para Python para conectar um dispositivo ao IoT Platform e ativar o envio de mensagens.

Pré-requisitos

No IoT Platform console , para a instância correspondente, crie um produto e um dispositivo e obtenha o nome de domínio de acesso MQTT e as informações do certificado do dispositivo (ProductKey, DeviceName e DeviceSecret). Para mais informações, consulte:

Preparar o ambiente de desenvolvimento

Recomendamos o uso do Python 3.6.

  • Linux

    Execute os comandos a seguir para instalar o Python:

    Importante

    Neste tópico, todas as operações usam permissões de usuário comum. Caso precise executar operações específicas que exijam permissões de administrador, use o 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 um dos pacotes a seguir, conforme o seu sistema operacional:

  • macOS

    Baixe o pacote python-3.6.7-macosx10.9.pkg.

Baixe a biblioteca Paho MQTT para Python

Para mais detalhes sobre o projeto Paho e as linguagens de programação compatíveis, consulte Eclipse Paho Downloads.

Execute o comando a seguir para instalar a biblioteca Paho MQTT para Python. Para mais informações, consulte Paho-MQTT.

pip install paho-mqtt==1.6.1
Importante

Esta demonstração não oferece suporte à biblioteca Paho MQTT versão 2.0.0.

Conectar um dispositivo ao IoT Platform

  • O arquivo MqttSign.py define uma função para obter os parâmetros de conexão MQTT. Chame essa função para conectar seu dispositivo ao IoT Platform.

    Funções:

    • Esta função obtém os seguintes parâmetros de conexão MQTT: username, password e mqttClientId.

    • Parâmetros de entrada:

      Parâmetro

      Tipo

      Descrição

      productKey

      String

      ProductKey do produto ao qual o dispositivo pertence. Identifica o dispositivo no IoT Platform.

      deviceName

      String

      DeviceName do dispositivo. Identifica o dispositivo no IoT Platform.

      deviceSecret

      String

      DeviceSecret do dispositivo. Identifica o dispositivo no IoT Platform.

      clientId

      String

      ClientID do dispositivo. Para identificar o dispositivo com eficiência, use o endereço MAC ou o número de série (SN) como ClientID.

      timeStamp

      String

      Timestamp que indica a hora atual em milissegundos. Este parâmetro é opcional.

    • Parâmetros de saída:

      Parâmetro

      Tipo

      Descrição

      mqttUsername

      String

      Nome de usuário usado para estabelecer a conexão MQTT.

      mqttPassword

      String

      Senha usada para estabelecer a conexão MQTT.

      mqttClientId

      String

      ID do cliente MQTT.

  1. Adicione um arquivo de programa para conectar o dispositivo ao IoT Platform.

    Para obter os parâmetros de conexão MQTT, escreva um programa que chame a função no arquivo MqttSign.py.

    Esta seção apresenta as instruções de desenvolvimento e o código de exemplo.

    • Especifique as informações do 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"
    • Defina as informações de conexão MQTT.

      Chame a função calculate_sign_time no arquivo MqttSign.py. Essa função retorna os parâmetros mqttUsername, mqttPassword e mqttClientId com base nos valores dos seguintes parâmetros de entrada: deviceSecret, timeStamp, clientId, productKey e deviceName.

      Neste exemplo, estabelece-se uma conexão TCP baseada em Transport Layer Security (TLS). Baixe o certificado raiz para configurar os parâmetros de conexão.

      # 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
      • Caso use uma instância pública da versão antiga, substitua cn-shanghai em host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" pelo ID da região onde o dispositivo está localizado. Para mais informações sobre os formatos de IDs de região, consulte Regiões suportadas.

      • Se você usar uma instância pública da nova versão ou uma instância Enterprise Edition, substitua instanceId em host = instanceId + ".mqtt.iothub.aliyuncs.com" pelo ID da instância.

        Para obter o endpoint MQTT, siga estas etapas: faça login no IoT Platform console. Na página Overview, clique em no cartão da instância que deseja gerenciar. O endpoint MQTT aparece na página de detalhes da instância. Para mais informações, consulte Visualizar o endpoint de uma instância.

        Para saber mais sobre as instâncias do IoT Platform, consulte Visão geral das instâncias.

    • Chame a função Connect() para conectar o dispositivo ao 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
    • Use a função Publish() para publicar mensagens. Especifique um tópico para publicação e os payloads das mensagens.

      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 mais detalhes sobre tópicos, consulte O que é um tópico?

    • Use a função Subscribe() para assinar o tópico e receber mensagens do IoT Platform.

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

      Para entender melhor os métodos de comunicação entre dispositivos, servidores e o IoT Platform, consulte Visão geral dos métodos de comunicação no IoT Platform.

  2. Execute o projeto.

Código de exemplo

Execute o programa compilado com o código de exemplo para conectar o dispositivo ao IoT Platform.

  1. Baixe o pacote contendo o código de exemplo neste link e extraia-o no diretório aiot-python-demo. A tabela a seguir descreve os arquivos incluídos nesse diretório.

    Arquivo de certificado

    Descrição

    MqttSign.py

    Contém o código usado para obter os parâmetros de conexão necessários para conectar um dispositivo ao IoT Platform via MQTT. Ao executar o arquivo, a função calculate_sign_time recupera os valores de mqttUsername, mqttPassword e mqttClientId.

    iot.py

    Inclui a lógica de programação para conectar o dispositivo ao IoT Platform e permitir a comunicação.

    root.crt

    Certificado raiz do IoT Platform. Necessário para estabelecer a conexão dos dispositivos com a plataforma.

  2. No arquivo iot.py, substitua as informações do dispositivo pelos seus próprios dados.

    • Altere os valores dos parâmetros productKey, deviceName e deviceSecret pelas informações do certificado do seu dispositivo.

      # set the device info, include product key, device name, and device secret
      productKey = "a1LhUsK***"
      deviceName = "python***"
      deviceSecret = "bdd043d193782d11***"
    • Opcional. Substitua os valores dos parâmetros timeStamp e clientId. É possível trocar o valor de clientId pelo endereço MAC ou SN do seu dispositivo.

      Nota

      Mesmo sem alterar esses valores, a conexão do dispositivo ao IoT Platform funcionará. Contudo, em cenários reais, recomenda-se substituir os parâmetros pelos valores efetivos.

    • Substitua .iot-as-mqtt.cn-shanghai.aliyuncs.com em host = productKey + ".iot-as-mqtt.cn-shanghai.aliyuncs.com" pelo endpoint MQTT real.

      Para mais detalhes, consulte a Etapa 2 na seção "Conectar um dispositivo ao IoT Platform" deste tópico.

  3. Execute o arquivo iot.py.

    Após a execução, os seguintes logs locais serão gerados:

    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

    Faça login no IoT Platform console. Visualize o status e os logs do dispositivo na instância.

    • No painel de navegação à esquerda, escolha Device Management > Devices. O status do dispositivo aparecerá como Online.

    • Escolha Monitoring & O&M > Log Service. Nessa tela, visualize os IoT Platform logs e os on-premises device logs. Para mais informações, consulte Logs do IoT Platform e Logs locais do dispositivo.

Códigos de erro

Caso a conexão de um dispositivo ao IoT Platform via MQTT falhe, solucione o problema com base no código de erro retornado. Para mais informações, consulte Solução de problemas.