Todos los productos
Search
Centro de documentos

IoT Platform:Compruebe y conectar un dispositivo

Última actualización: Sep 03, 2026

Este tema describe cómo inicializar Link SDK for Python y conectar un dispositivo a IoT Platform.

Contexto

Link SDK for Python solo admite la verificación de dispositivos basada en el device certificate. La tabla a continuación describe los métodos de verificación.

Método de verificación

Método de registro

Descripción

Referencias

Verificación con certificado único por dispositivo

N/A

Se graba un certificado de dispositivo que incluye ProductKey, DeviceName y DeviceSecret en cada dispositivo.

Unique-certificate-per-device verification

Verificación con certificado único por producto

Preregistro

  • Se graba un certificado de producto que incluye ProductKey y ProductSecret en todos los dispositivos de un producto.

  • Debe habilitar la función dynamic registration para el producto.

  • El registro dinámico permite que los dispositivos obtengan el DeviceSecret.

Unique-certificate-per-product verification

Nota

Para obtener información sobre las diferencias entre la verificación con certificado único por producto con prerregistro y sin prerregistro, consulte Differences between the verification methods.

Sin prerregistro

  • Se graba un certificado de producto que incluye ProductKey y ProductSecret en todos los dispositivos de un producto.

  • Debe habilitar la función dynamic registration para el producto.

  • El registro dinámico permite que los dispositivos obtengan una combinación de ClientID y DeviceToken.

Código de ejemplo

  • Verificación con certificado único por dispositivo

    from linkkit import linkkit
    lk = linkkit.LinkKit(
        host_name="YourHostName",
        product_key="YourProductKey",
        device_name="YourDeviceName",
        device_secret="YourDeviceSecret")          
    lk.config_mqtt(port=8883, protocol="MQTTv311", transport="TCP",
                secure="TLS", keep_alive=60, clean_session=True,
                max_inflight_message=20, max_queued_message=0,
                auto_reconnect_min_sec=1,
                auto_reconnect_max_sec=60,
                cadata=None)

    La tabla a continuación describe los parámetros.

    Parámetro

    Ejemplo

    Descripción

    host_name

    cn-shanghai

    El ID de la región donde reside el dispositivo que desea conectar a IoT Platform.

    product_key

    a18wP

    El certificado de dispositivo que se utiliza para la verificación. El certificado se guarda en su servidor local después de agregar el dispositivo.

    También puede consultar el certificado del dispositivo en la página Device Details de la consola de IoT Platform. Para obtener más información, consulte Obtain device verification information.

    device_name

    LightSwitch

    device_secret

    uwMTmVAMnGGHaAkqmeDY6cHxxB

    endpoint

    iot-cn-6ja.mqtt.iothub.aliyuncs.com

    El endpoint de la instancia de IoT Platform.

    Este parámetro es obligatorio solo para instancias Enterprise Edition e instancias públicas de la nueva versión.

    Nota

    Si utiliza una instancia Enterprise Edition o una instancia pública de la nueva versión, elimine el signo de número (#) antes del código.

    port

    8883

    El número de puerto.

    protocol

    MQTTv311

    El protocolo que se utiliza para establecer una conexión entre el dispositivo e IoT Platform.

    transport

    TCP

    El protocolo de control de transmisión (TCP).

    secure

    TLS

    El protocolo de seguridad de capa de transporte (TLS).

    keep_alive

    60

    El periodo de keep-alive. Unidad: segundos. Valores válidos: de 60 a 180. Si IoT Platform no detecta el latido de la conexión del dispositivo dentro del periodo de keep-alive, rechaza la conexión del dispositivo.

    Si la conexión de red es inestable, se recomienda aumentar el valor de este parámetro. Para obtener más información, consulte MQTT keepalive.

    clean_session

    True

    Especifica si se reciben mensajes sin conexión. Valores válidos:

    • True: El dispositivo recibe mensajes sin conexión.

    • False: El dispositivo no recibe mensajes sin conexión.

    auto_reconnect_min_sec

    1

    El intervalo mínimo entre el fallo de conexión y la reconexión. Unidad: segundos. Valores válidos: de 1 a 1200.

    auto_reconnect_max_sec

    60

    El intervalo máximo entre el fallo de conexión y la reconexión. Unidad: segundos. Valores válidos: de 1 a 1200.

  • Verificación con certificado único por producto con prerregistro

    Nota

    Para obtener más información, consulte el archivo dynamic_register.py en el paquete de código de ejemplo.

    import time
    from linkkit import linkkit
    import logging
    
    # config log
    __log_format = '%(asctime)s-%(process)d-%(thread)d - %(name)s:%(module)s:%(funcName)s - %(levelname)s - %(message)s'
    logging.basicConfig(format=__log_format)
    
    product_key = "${YourProductKey}"
    device_name = "${YourDeviceName}"
    product_secret = "${YourProductSecret}"
    instance_id = "${YourInstanceId}"
    device_secret = ""
    
    lk_auth = linkkit.LinkKit(
        host_name="cn-shanghai",
        product_key=product_key,
        device_name=device_name,
        device_secret="",
        auth_type="register",
        instance_id=instance_id,
        product_secret=product_secret)
    
    def on_device_dynamic_register(rc, value, userdata):
        if rc == 0:
            global device_secret
            print("dynamic register device success, rc:%d, value:%s" % (rc, value))
            device_secret = value
        else:
            print("dynamic register device fail,rc:%d, value:%s" % (rc, value))
    
    lk_auth.enable_logger(logging.DEBUG)
    lk_auth.on_device_dynamic_register = on_device_dynamic_register
    lk_auth.connect_async()
    
    # Wait for a downstream message. In most cases, the downstream message is returned within 1 second.
    time.sleep(5)
    lk_auth.destroy()

    Si especifica auth_type="register" para la función LinkKit, el sistema utiliza el método de verificación con certificado único por producto con prerregistro para verificar el dispositivo. La función de callback on_device_dynamic_register devuelve el resultado de la verificación. Si el valor del parámetro rc es 0, el dispositivo supera la verificación con certificado único por producto con prerregistro. Se devuelve el DeviceSecret obtenido de IoT Platform. Guarde el DeviceSecret en su servidor local. Puede utilizar el DeviceSecret para conectar su dispositivo a IoT Platform. Para obtener más información, consulte Unique-certificate-per-device verification.

    Si especifica auth_type="", el sistema utiliza un método de verificación deprecated que solo está disponible en la región China (Shanghai). Para obtener más información, consulte el archivo dynamic_register_deprecated.py.

  • Verificación con certificado único por producto sin prerregistro

    Nota
    • Puede utilizar Link SDK for Python para realizar la verificación con certificado único por producto sin prerregistro en dispositivos solo en las regiones China (Beijing) y China (Shanghai).

    • Para obtener más información, consulte el archivo dynamic_register_nwl.py en el paquete de código de ejemplo.

    import time
    
    from linkkit import linkkit
    import logging
    
    # config log
    __log_format = '%(asctime)s-%(process)d-%(thread)d - %(name)s:%(module)s:%(funcName)s - %(levelname)s - %(message)s'
    logging.basicConfig(format=__log_format)
    
    product_key = "${YourProductKey}"
    device_name = "${YourDeviceName}"
    product_secret = "${YourProductSecret}"
    instance_id = "${YourInstanceId}"
    
    lk_auth = linkkit.LinkKit(
        host_name="cn-shanghai",
        product_key=product_key,
        product_secret=product_secret,
        device_name=device_name,
        device_secret="",
        instance_id=instance_id,
        auth_type="regnwl")
    
    def on_device_dynamic_register_nwl_reply(code, client_id_l, user_name_l, password_l):
        print("code:", code)
        if 0 == code:
            print("cid:", client_id_l)
            print("user_name:", user_name_l)
            print("password:", password_l)
    
    lk_auth.enable_logger(logging.DEBUG)
    lk_auth.on_device_dynamic_register_nwl_reply = on_device_dynamic_register_nwl_reply
    lk_auth.connect_async()
    # Wait for a downstream message. In most cases, the downstream message is returned within 1 second.
    time.sleep(5)
    lk_auth.destroy()

    Si especifica auth_type="regnwl", el sistema utiliza el método de verificación con certificado único por producto sin prerregistro para verificar el dispositivo. Si el valor del parámetro rc es 0, el dispositivo supera la verificación con certificado único por producto sin prerregistro. Se devuelven el username, el ClientID y la password obtenidos de IoT Platform.

Función de callback

Después de conectar un dispositivo a IoT Platform, puede utilizar la función de callback on_connect para consultar el estado de la conexión. Si el dispositivo se desconecta, puede escribir la lógica de procesamiento en la función de callback on_disconnect según su escenario de negocio.

Nota

De forma predeterminada, Link SDK for Python admite la reconexión. Si un dispositivo se desconecta debido a inestabilidad de la red u otras excepciones, el dispositivo inicia automáticamente una solicitud de reconexión basada en los parámetros configurados, como el parámetro keep-alive.

Código de ejemplo:

def on_connect(session_flag, rc, userdata):
    print("on_connect:%d,rc:%d,userdata:" % (session_flag, rc))
    pass
def on_disconnect(rc, userdata):
    print("on_disconnect:rc:%d,userdata:" % rc)
lk.on_connect = on_connect
lk.on_disconnect = on_disconnect          

(Opcional) Configurar la interfaz de conexión de red

Si se graba el mismo certificado de dispositivo que contiene ProductKey, DeviceName y DeviceSecret en varios dispositivos, IoT Platform considera que los dispositivos son el mismo dispositivo. En este caso, un dispositivo se desconecta cuando otro dispositivo se conecta. Puede cargar información sobre sus interfaces de conexión a IoT Platform para la solución de problemas.

lk.config_device_info("Eth|03ACDEFF0032|Eth|03ACDEFF0031")

La tabla a continuación describe las interfaces de conexión de red.

Tipo de red

Ejemplo

Descripción

WiFi

Eth|03ACDEFF0032|Eth|03ACDEFF0031

Si su dispositivo está conectado a WiFi o Ethernet a través de la interfaz de red ascendente, establezca el tipo de red en WiFi o Eth y especifique una dirección de control de acceso al medio (MAC). La dirección MAC debe estar en letras mayúsculas.

Ethernet (Eth)

Red celular (Cellular)

Cellular|imei_001122|iccid_22334455|imsi_234241|msisdn_53212

Si su dispositivo está conectado a una red celular, como 2G, 3G o 4G, a través de la interfaz de red ascendente, establezca el tipo de red en Cellular y configure los siguientes parámetros:

  • IMEI

  • ICCID

  • IMSI

  • MSISDN

Establecer una conexión

Después de configurar los parámetros para la conexión de Message Queuing Telemetry Transport (MQTT), la función de callback y la interfaz de conexión de red, llame al método connect_async para iniciar una conexión.

lk.connect_async()
Importante

Si un dispositivo se desconecta debido a inestabilidad de la red u otras excepciones, el dispositivo inicia automáticamente una solicitud de reconexión basada en los parámetros configurados, como el parámetro keep-alive. Solo necesita llamar al método una vez.