Tous les produits
Search
Centre de documentation

IoT Platform:Exemple d'utilisation

Dernière mise à jour :Aug 10, 2026

Utilisez les opérations API du Link SDK for C pour distribuer des périphériques à l'aide du fichier d'exemple de code ./demos/bootstrap_posix_demo.c.

Informations générales

  • Pour en savoir plus sur la fonctionnalité de distribution de périphériques, consultez la rubrique Présentation.

  • Une fois les informations de connexion du périphérique obtenues via la distribution, connectez-le à IoT Platform. Pour en savoir plus sur les connexions MQTT, consultez la rubrique Connexion MQTT.

Étape 1 : Initialisation

  1. Ajoutez le fichier d'en-tête.

    ……
    ……
    
    #include "aiot_bootstrap_api.h"
  2. Configurez les dépendances sous-jacentes et la journalisation.

        aiot_sysdep_set_portfile(&g_aiot_sysdep_portfile);
        aiot_state_set_logcb(demo_state_logcb);
  3. Appelez aiot_bootstrap_init pour créer un handle Bootstrap

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

Étape 2 : Configuration des fonctionnalités

Appelez aiot_bootstrap_setopt pour configurer les fonctionnalités suivantes.

  1. Important

    Le type de connexion sécurisée pour la couche TLS (Transport Layer Security) doit être basé sur un certificat (AIOT_SYSDEP_NETWORK_CRED_SVRCERT_CA).

    •     int32_t res = STATE_SUCCESS;
          void *bootstrap_handle = NULL, *mqtt_handle = NULL;
          aiot_sysdep_network_cred_t cred;
          demo_info_t demo_info;
      
          /* TODO: Replace with your device's productKey and deviceName. */
          char *product_key       = "a18wP******";
          char *device_name       = "LightSwitch";
          char *device_secret     = "uwMTmVAMnGGHaAkqmeDY6cHxxB******";
          ……
          ……
          memset(&cred, 0, sizeof(aiot_sysdep_network_cred_t));
          cred.option = AIOT_SYSDEP_NETWORK_CRED_SVRCERT_CA;  /* Use an RSA certificate to authenticate the MQTT server. */
          cred.max_tls_fragment = 16384; /* The maximum shard length is 16 KB. Other valid values are 4 KB, 2 KB, 1 KB, and 0.5 KB. */
          cred.sni_enabled = 1;                               /* Support Server Name Indicator (SNI) during TLS connection establishment. */
          cred.x509_server_cert = ali_ca_cert;                 /* The RSA root certificate used to authenticate the MQTT server. */
          cred.x509_server_cert_len = strlen(ali_ca_cert);     /* The length of the RSA root certificate used to authenticate the MQTT server. */
          ……
          ……
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_HOST, (void *)host);
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_PORT, (void *)&port);
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_PRODUCT_KEY, (void *)product_key);
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_DEVICE_NAME, (void *)device_name);
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_NETWORK_CRED, (void *)&cred);
      
          ……
          ……
    • Paramètre

      Exemple

      Description

      product_key

      a18wP******

      Les informations d'authentification du périphérique. Pour en savoir plus, consultez la rubrique Obtenir les informations de vérification du périphérique.

      Cet exemple utilise la méthode d'authentification par certificat unique par périphérique.

      Le paramètre device_secret est utilisé lorsque le périphérique établit une connexion MQTT après avoir obtenu le nom de domaine et le numéro de port de connexion.

      device_name

      LightSwitch

      device_secret

      uwMTmVAMnGGHaAkqmeDY6cHxxB******

  2. Configurez les callbacks de messages.

    •     aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_RECV_HANDLER, (void *)demo_bootstrap_recv_handler); 
          aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_USERDATA, (void *)&demo_info);
    • Élément de configuration

      Valeur d'exemple

      Description

      AIOT_BOOTSTRAPOPT_RECV_HANDLER

      demo_bootstrap_recv_handler

      Cette fonction est appelée lors de la réception d'un message de distribution de périphérique.

      AIOT_BOOTSTRAPOPT_USERDATA

      demo_info

      Définit le contexte utilisateur. Lorsque demo_bootstrap_recv_handler est déclenché, userdata est renvoyé. Convertissez les données renvoyées dans le type approprié avant utilisation.

  3. Configurez la surveillance d'état.

    1. Définissez le callback de surveillance d'état.

      void demo_bootstrap_event_handler(void *handle, const aiot_bootstrap_event_t *event, void *userdata)
      {
          switch (event->type) {
              case AIOT_BOOTSTRAPEVT_INVALID_RESPONSE: {
                  printf("AIOT_BOOTSTRAPEVT_INVALID_RESPONSE\n");
              }
              break;
              case AIOT_BOOTSTRAPEVT_INVALID_CMD: {
                  printf("AIOT_BOOTSTRAPEVT_INVALID_CMD\n");
              }
              break;
              default: {
      
              }
              break;
          }
      }
    2. Spécifiez les callbacks de surveillance d'état.

      • Exemple de code :

            aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_EVENT_HANDLER, (void *)demo_bootstrap_event_handler);
      • Paramètres :

        Élément de configuration

        Valeur d'exemple

        Description

        AIOT_BOOTSTRAPOPT_EVENT_HANDLER

        demo_bootstrap_event_handler

        When the device connection status changes, the corresponding processing logic defined in this callback function is executed.

Étape 3 : Envoi d'une requête

Important

Avant d'envoyer une requête de distribution de périphérique, assurez-vous que l'opération est configurée dans la console IoT Platform. Sinon, le nom de domaine et le port renvoyés correspondront à la connexion actuelle du périphérique.

Appelez aiot_bootstrap_send_request pour envoyer une requête HTTPS de distribution de périphérique au serveur, en utilisant les paramètres configurés à l'étape précédente.

Pour en savoir plus sur la requête HTTPS, consultez la rubrique Format des données de requête pour la distribution de périphériques.

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

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

  1. Après l'envoi du message, IoT Platform renvoie une réponse. Le périphérique appelle aiot_bootstrap_recv pour recevoir les données de réponse et les traiter via le callback de message.

        res = aiot_bootstrap_recv(bootstrap_handle);
        if (res < STATE_SUCCESS) {
            printf("aiot_bootstrap_recv failed, res: -0x%04X\n", -res);
            return -1;
        }
  2. Implémentez la logique de la fonction de callback.

    Implémentez la logique de la fonction de callback selon les informations suivantes :

    Type de message

    Description

    AIOT_BOOTSTRAPRECV_STATUS_CODE

    Code d'état HTTP renvoyé par le serveur. Pour en savoir plus, consultez les codes d'état HTTP.

    L'exemple de code ne traite pas le code d'état reçu. Ajoutez votre propre logique de traitement si nécessaire.

    AIOT_BOOTSTRAPRECV_CONNECTION_INFO

    Message d'accusé de réception renvoyé par IoT Platform après le lancement de la distribution de périphériques.

    Le message reçu est de type aiot_bootstrap_recv_t. Enregistrez localement sur votre périphérique les valeurs host et port, qui correspondent au nom de domaine et au numéro de port pour la connexion du périphérique.

    L'exemple de code se contente d'afficher le message de distribution de périphérique reçu.

    AIOT_BOOTSTRAPRECV_NOTIFY

    Message de notification de distribution de périphérique envoyé par IoT Platform.

    Après avoir effectué l'opération de distribution de périphérique dans IoT Platform, un message de distribution est envoyé au périphérique. Pour en savoir plus, consultez la rubrique Distribution de périphériques dans IoT Platform.

    L'exemple de code se contente d'afficher le message. Ajoutez une logique pour déconnecter le périphérique, envoyer une nouvelle requête de distribution, puis rétablir la connexion.

    void demo_bootstrap_recv_handler(void *handle, const aiot_bootstrap_recv_t *packet, void *userdata)
    {
        demo_info_t *demo_info = (demo_info_t *)userdata;
    
        switch (packet->type) {
            case AIOT_BOOTSTRAPRECV_STATUS_CODE: {
                demo_info->code = packet->data.status_code.code;
            }
            break;
            case AIOT_BOOTSTRAPRECV_CONNECTION_INFO: {
                demo_info->host = malloc(strlen(packet->data.connection_info.host) + 1);
                if (demo_info->host != NULL) {
                    memset(demo_info->host, 0, strlen(packet->data.connection_info.host) + 1);
                    /* TODO: In the callback, store the device distribution message content in a specified location. This space will then be released by the SDK. */
                    memcpy(demo_info->host, packet->data.connection_info.host, strlen(packet->data.connection_info.host));
                    demo_info->port = packet->data.connection_info.port;
                }
            }
            break;
            case AIOT_BOOTSTRAPRECV_NOTIFY: {
                printf("AIOT_BOOTSTRAPRECV_NOTIFY, cmd: %d\n", packet->data.notify.cmd);
    
            }
            default: {
    
            }
            break;
        }
    }

(Facultatif) Étape 5 : Établissement d'une connexion MQTT

Une fois le nom de domaine et le port requis pour le périphérique obtenus, établissez une connexion MQTT entre le périphérique et IoT Platform. Pour en savoir plus sur les connexions MQTT, consultez la rubrique Connexion MQTT.

Une fois la connexion MQTT établie, suivez les étapes ci-dessous pour lancer à nouveau la distribution de périphériques.

  1. Appelez aiot_bootstrap_setopt pour associer le handle de connexion MQTT.

    •     aiot_bootstrap_setopt(bootstrap_handle, AIOT_BOOTSTRAPOPT_MQTT_HANDLE, (void *)mqtt_handle);
    • Élément de configuration

      Exemple

      Description

      AIOT_BOOTSTRAPOPT_MQTT_HANDLE

      mqtt_handle

      Cette fonction de callback est déclenchée lorsque le périphérique reçoit un message de distribution de périphérique envoyé par IoT Platform.

  2. Connectez-vous à la console IoT Platform et effectuez l'opération de distribution de périphériques.

    Pour en savoir plus, consultez la rubrique Distribution de périphériques dans IoT Platform.

  3. Lorsque le périphérique reçoit le message de distribution envoyé, il se déconnecte. Répétez ensuite les étapes 1 à 4 pour obtenir le nouveau nom de domaine de connexion et reconnecter le périphérique à IoT Platform.

Étape 6 : Quitter le programme

Appelez aiot_bootstrap_deinit pour détruire l'instance client bootstrap et libérer les ressources.

    res = aiot_bootstrap_deinit(&bootstrap_handle);
    if (res < 0) {
        printf("demo_start_stop failed\n");
        return -1;
    }

Étapes suivantes

  • Après avoir configuré le fichier d'exemple de code, compilez-le pour générer un fichier exécutable. Dans cet exemple, le fichier exécutable ./demos/bootstrap-posix-demo est généré.

    Pour en savoir plus, consultez la rubrique Compiler et exécuter.

  • Pour en savoir plus sur les résultats d'exécution, consultez la rubrique Journaux d'exécution.