Tous les produits
Search
Centre de documentation

IoT Platform:Exemple d'enregistrement dynamique HTTPS

Dernière mise à jour :Aug 10, 2026

Cette rubrique utilise le fichier de démonstration ./demos/dynreg_basic_demo.c du SDK Link C pour illustrer comment appeler les API du SDK Link afin d' envoyer une requête HTTPS à IoT Platform, d'enregistrer un appareil de manière dynamique et d'obtenir les informations d'authentification nécessaires à l'activation de l'appareil.

Informations générales

Pour plus d'informations sur l'enregistrement dynamique HTTPS, consultez la rubrique Présentation de l'enregistrement dynamique HTTPS.

Étape 1 : Initialisation

  1. Ajoutez les fichiers d'en-tête.

    #include "aiot_state_api.h"
    #include "aiot_sysdep_api.h"
    #include "aiot_dynreg_api.h"
  2. Configurez les dépendances sous-jacentes et la sortie des journaux.

        aiot_sysdep_set_portfile(&g_aiot_sysdep_portfile);
        aiot_state_set_logcb(demo_state_logcb);
  3. Appelez aiot_dynreg_init pour créer une instance de client dynreg et initialiser les paramètres par défaut.

        dynreg_handle = aiot_dynreg_init();
        if (dynreg_handle == NULL) {
            printf("aiot_dynreg_init failed\n");
            return -1;
        }

Étape 2 : Configuration des fonctionnalités

Appelez aiot_dynreg_init pour configurer les fonctionnalités suivantes.

  1. Configuration des paramètres de connexion.

  2. Configuration des rappels de message.

  3. Pour plus d'informations sur les éléments de configuration, consultez la rubrique Éléments de configuration de l'enregistrement dynamique HTTPS.

  4. Configurez les paramètres de connexion.

    • Exemple de code :

          char       *url = "iot-auth.cn-shanghai.aliyuncs.com"; 
          ……
          char *product_key       = "a18wP******";
          char *product_secret    = "CpIlPVCXI7******";
          char *device_name       = "LightSwitch";
          ……
          ……
          /* Configure the server address. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_HOST, (void *)host);
          /* Configure the server port. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PORT, (void *)&port);
          /* Configure the ProductKey of the device. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PRODUCT_KEY, (void *)product_key);
          /* Configure the ProductSecret of the device. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_PRODUCT_SECRET, (void *)product_secret);
          /* Configure the DeviceName of the device. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_DEVICE_NAME, (void *)device_name);
          /* Configure the security credentials for the network connection. */
          aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_NETWORK_CRED, (void *)&cred);
          ……
          ……
    • Paramètres associés :

      Paramètre

      Exemple

      Description

      url

      iot-auth.cn-shanghai.aliyuncs.com

      Nom de domaine du serveur pour l'enregistrement dynamique HTTPS.

      Vous pouvez remplacer cn-shanghai dans l'exemple par l'ID de la région où votre service est déployé afin d'obtenir l'endpoint de votre appareil.

      Dans le coin supérieur gauche de la console IoT Platform, vérifiez la région de déploiement de votre service. Pour plus d'informations sur les ID de région, consultez la rubrique Régions prises en charge.

      Cet exemple utilise une instance publique dans la région Chine (Shanghai).

      Remarque

      Les régions Chine (Pékin) et Chine (Shenzhen) ne sont pas prises en charge.

      product_key

      a18wP

      ProductKey et ProductSecret obtenus lors de la création d'un produit dans la console IoT Platform. Pour plus d'informations, consultez la rubrique Créer un produit.

      product_secret

      CpIlPVCXI7

      device_name

      LightSwitch

      Nom de l'appareil. La valeur de ce paramètre doit correspondre au DeviceName spécifié lors de l'ajout de l'appareil au produit dans IoT Platform.

      IoT Platform vérifie le DeviceName lors de l'activation de l'appareil. Nous vous recommandons d'utiliser un identifiant directement lisible depuis l'appareil, tel que l'adresse MAC, l'IMEI (International Mobile Equipment Identity) ou le numéro de série (SN), comme DeviceName.

      Important

      Le nom doit être identique à celui spécifié lors de la création de l'appareil dans IoT Platform.

  5. Configurez le rappel de message.

    1. Configurez la fonction de rappel de message.

      • Exemple de code :

         int main(int argc, char *argv[])
        {
            …… 
            ……
            aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_RECV_HANDLER, (void *)demo_dynreg_recv_handler);
            aiot_dynreg_setopt(dynreg_handle, AIOT_DYNREGOPT_USERDATA, (void *)&demo_info);
            …… 
            ……
        }
      • Paramètres associés :

        |
        **Élément de configuration**
        |
        **Valeur d'exemple**
        |
        **Description**
        | | --- | --- | --- | |
        AIOT_DYNREGOPT_RECV_HANDLER
        |
        demo_dynreg_recv_handler
        |
        Définit le rappel de message. Lorsqu'un message est reçu, le traitement correspondant est effectué selon les paramètres de cette fonction de rappel.
        | |
        AIOT_DYNREGOPT_USERDATA
        |
        &demo_info
        |
        Définit le contexte à renvoyer lorsque `demo_dynregmq_recv_handler` est appelé.
        |

















    2. Définissez la fonction de rappel de message.

      void demo_dynreg_recv_handler(void *handle, const aiot_dynreg_recv_t *packet, void *userdata)
      {
          demo_info_t *demo_info = (demo_info_t *)userdata;
          switch (packet->type) {
              case AIOT_DYNREGRECV_STATUS_CODE: {
                  demo_info->code = packet->data.status_code.code;
              }
              break;
              /* TODO: In the callback, you must save the content of the space pointed to by the packet. After the callback returns, this space is released. */
              case AIOT_DYNREGRECV_DEVICE_INFO: {
                  demo_info->device_secret = malloc(strlen(packet->data.device_info.device_secret) + 1);
                  if (demo_info->device_secret != NULL) {
                      memset(demo_info->device_secret, 0, strlen(packet->data.device_info.device_secret) + 1);
                      memcpy(demo_info->device_secret, packet->data.device_info.device_secret,
                             strlen(packet->data.device_info.device_secret));
                  }
              }
              break;
              default: {
              }
              break;
          }
      }

Étape 3 : Envoi d'une requête

Appelez aiot_dynreg_send_request, qui utilise les paramètres Configurer la connexion pour envoyer une requête d'enregistrement dynamique au serveur.

/* Send a dynamic registration request. */
    res = aiot_dynreg_send_request(dynreg_handle);
    if (res < STATE_SUCCESS) {
        printf("aiot_dynreg_send_request failed: -0x%04X\n", -res);
        return -1;
    }

Étape 4 : Réception d'un accusé de réception

Une fois le message de requête d'enregistrement envoyé, IoT Platform renvoie un accusé de réception. L'appareil appelle ensuite aiot_dynreg_recv pour recevoir l'accusé de réception et exécuter l'action correspondante en fonction de la fonction de rappel de message.

    res = aiot_dynreg_recv(dynreg_handle);
    if (res < STATE_SUCCESS) {
        printf("aiot_dynreg_recv failed: -0x%04X\n", -res);
        return -1;
    }  

Le programme d'exemple se contente d'imprimer les informations. Toutefois, dans un environnement de production, vous devez également enregistrer les informations d'authentification de l'identité de l'appareil renvoyées dans un fichier local. Ces informations servent à la connexion à IoT Platform à chaque ouverture de session de l'appareil.

    if (demo_info.device_secret != NULL) {
        printf("device secret: %s\n", demo_info.device_secret);
        free(demo_info.device_secret);
    }

Étape 5 : Sortie du programme

Appelez aiot_dynreg_deinit pour détruire l'instance de client dynreg et libérer les ressources.

    res = aiot_dynregmq_deinit(&dynregmq_handle);           

Étapes suivantes

  • Après avoir configuré le fichier d'exemple, compilez-le pour générer le fichier exécutable ./output/dynreg-basic-demo.

    Pour plus d'informations, consultez la rubrique Compiler et exécuter.

  • Pour une description détaillée des résultats d'opération, consultez le journal d'opérations.