Todos los productos
Search
Centro de documentos

IoT Platform:Registro dinámico basado en MQTT

Última actualización: Sep 03, 2026

Si habilita el registro dinámico en la consola de IoT Platform, puede verificar un dispositivo conectado directamente mediante el método unique-certificate-per-product. De este modo, el dispositivo se conecta a IoT Platform a través de Message Queuing Telemetry Transport (MQTT). El dispositivo establece una conexión Transport Layer Security (TLS) con IoT Platform para obtener el DeviceSecret necesario para la conexión MQTT. Posteriormente, el dispositivo cierra la conexión TLS y establece la conexión MQTT para comunicarse. Este tema describe el proceso de registro dinámico.

Requisitos previos

Se completaron los pasos descritos en el tema Unique-certificate-per-product verification:

Importante

El método de verificación unique-certificate-per-product sin prerregistro solo está disponible en la región China (Shanghai).

  1. Cree un producto.

  2. Habilite el registro dinámico.

  3. Agregue un dispositivo.

  4. Instale los certificados del dispositivo en los dispositivos correspondientes.

Proceso de registro dinámico

流程

  1. El dispositivo envía un mensaje CONNECT que incluye los parámetros de registro dinámico para establecer una conexión.

    Nota

    El registro dinámico solo admite conexiones TLS. Durante este proceso, IoT Platform no verifica el tiempo de keep-alive de la conexión MQTT, por lo que no es necesario especificarlo.

    • Endpoints MQTT para instancias públicas e instancias Enterprise Edition: Para más información, consulte Manage the endpoint of an instance.

      Nota

      Si desea verificar un dispositivo conectado directamente mediante el método unique-certificate-per-product sin prerregistro, reemplace ${YourRegionId} con cn-shanghai.

    • Parámetros de registro dinámico del mensaje CONNECT:

      • Si el dispositivo está conectado a una instancia pública de la nueva versión o a una instancia Enterprise Edition, configure los siguientes parámetros de registro dinámico:

        mqttClientId:clientId+"|securemode=-2,authType=xxxx,random=xxxx,signmethod=xxxx,instanceId=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:sign_hmac(productSecret,content)
      • Si el dispositivo está conectado a una instancia pública de la versión anterior, configure los siguientes parámetros de registro dinámico:

        mqttClientId:clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|"
        mqttUserName: deviceName+"&"+productKey
        mqttPassword:sign_hmac(productSecret,content)
      Nota

      Para más información, consulte Overview of IoT Platform instances.

      Parámetros:

      • mqttClientId

        La siguiente tabla describe los parámetros incluidos en el parámetro mqttClientId.

        Parámetro

        Descripción

        clientId

        Identificador del cliente. Debe tener entre 1 y 64 caracteres. Se recomienda usar la dirección Media Access Control (MAC) o el número de serie (SN) del dispositivo como ID del cliente.

        securemode

        Modo de seguridad. Valores válidos:

        authType

        Método de verificación. Los parámetros devueltos varían según el método seleccionado. Valores válidos:

        random

        Número aleatorio. Puede especificar cualquier número aleatorio.

        signMethod

        Algoritmo de firma. Valores válidos: hmacmd5, hmacsha1 y hmacsha256.

        instanceId

        ID de la instancia de IoT. Inicie sesión en la IoT Platform console y consulte el ID de la instancia en la pestaña Overview.

      • mqttUserName

        Formato: deviceName+"&"+productKey

        Ejemplo: device1&al123456789

      • mqttPassword

        Método de cálculo: sign_hmac(productSecret,content)

        El valor del parámetro content es una cadena concatenada formada por los parámetros y sus valores correspondientes que deben enviarse a IoT Platform. Estos parámetros incluyen deviceName, productKey y random. Se ordenan alfabéticamente y se concatenan sin operadores de unión. Después, el valor de content se cifra con el algoritmo especificado en signMethod dentro del parámetro mqttClientId. El ProductSecret del producto se utiliza como clave secreta del algoritmo.

        Ejemplo: hmac_sha1(h1nQFYPZS0mW****, deviceNamedevice1productKeyal123456789random123)

  2. IoT Platform devuelve un mensaje CONNECT ACK.

    • El valor 0 indica que el registro dinámico fue exitoso.

    • Cualquier otro valor indica que el registro dinámico falló. Puede identificar la causa del error mediante el código devuelto en el mensaje ACK.

    La siguiente tabla describe los códigos de respuesta que pueden devolverse después de que el dispositivo envía una solicitud de conexión a IoT Platform.

    Código de respuesta

    Mensaje

    Descripción

    0

    CONNECTION_ACCEPTED

    El registro dinámico fue exitoso.

    2

    IDENTIFIER_REJECTED

    Los parámetros no son válidos. Este error puede deberse a las siguientes causas:

    • Falta uno o más parámetros obligatorios, o tienen formatos inválidos.

    • Se estableció una conexión TCP directa para el registro. El registro dinámico solo admite conexiones TLS.

    3

    SERVER_UNAVAILABLE

    Ocurrió un error en IoT Platform. Inténtelo de nuevo más tarde.

    4

    BAD_USERNAME_OR_PASSWORD

    El registro dinámico falló. El dispositivo no se verificó.

    Compruebe si los valores de los parámetros de entrada mqttUserName y mqttPassword son válidos.

  3. Una vez establecida la conexión, IoT Platform usa el topic destinado a enviar certificados de dispositivo para devolver los parámetros de verificación. Dichos parámetros varían según el valor del parámetro authType en el mensaje CONNECT.

    Nota

    El dispositivo no necesita suscribirse al topic utilizado para enviar el certificado.

    • Si utiliza el método unique-certificate-per-product con prerregistro, establezca el parámetro authType en register. En este caso, se usa el topic /ext/register para devolver un DeviceSecret.

      El payload del mensaje enviado por IoT Platform tiene el siguiente formato:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "deviceSecret" : "***"
      }
    • Si utiliza el método unique-certificate-per-product sin prerregistro, establezca el parámetro authType en regnwl. En este caso, se usa el topic /ext/regnwl para devolver un ClientID y un DeviceToken.

      El payload del mensaje enviado por IoT Platform tiene el siguiente formato:

      {
        "productKey" : "***",
        "deviceName" : "***",
        "clientId" : "***",
        "deviceToken" : "***"
      }
  4. El dispositivo recibe y guarda el DeviceSecret o la combinación de ClientID y DeviceToken, y cierra la conexión MQTT actual.

    El dispositivo puede cerrar la conexión actual mediante el envío de un mensaje DISCONNECT o cerrando directamente la conexión TCP.

    Si el dispositivo no cierra la conexión, IoT Platform lo desconectará después de 15 segundos.

    Si usa el cliente Eclipse Paho MQTT, utilice la función MqttConnectOptions.setAutomaticReconnect(false) para deshabilitar la reconexión automática. De lo contrario, se generará una nueva solicitud de registro dinámico debido a la lógica de reconexión una vez completado el registro y cerrada la conexión TCP.

  5. Si utiliza el método unique-certificate-per-product con prerregistro, el dispositivo usa el DeviceSecret para iniciar nuevamente una solicitud de conexión MQTT con IoT Platform y comenzar la comunicación de mensajes. Si utiliza el método unique-certificate-per-product sin prerregistro, el dispositivo convierte el ClientID en mqttClientId y luego usa la combinación de mqttClientId y DeviceToken para establecer la conexión MQTT. Para más información, consulte Establish MQTT connections over TCP.

Ejemplo

Para consultar un ejemplo sobre cómo registrar dinámicamente un dispositivo conectado directamente, véase MQTT-based dynamic registration.