Tous les produits
Search
Centre de documentation

IoT Platform:Exemple

Dernière mise à jour :Aug 10, 2026

Utilisez le Link SDK pour C afin d'envoyer ou de supprimer des balises d'appareil sur IoT Platform. Cet exemple utilise le fichier d'exemple ./demos/devinfo_posix_demo.c.

Informations générales

  • Pour plus d'informations sur les balises d'appareil, consultez la rubrique Présentation.

  • Les balises d'appareil nécessitent une connexion MQTT à IoT Platform. Pour plus d'informations sur le code de connexion MQTT, consultez la rubrique Présentation.

Étape 1 : Initialisation

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

    ……
    ……
    
    #include "aiot_devinfo_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 l'opération aiot_devinfo_init pour créer une instance de client Devinfo et initialiser les paramètres par défaut.

        devinfo_handle = aiot_devinfo_init();
        if (devinfo_handle == NULL) {
            demo_mqtt_stop(&mqtt_handle);
            printf("aiot_devinfo_init failed\n");
            return -1;
        }

Étape 2 : Configuration des fonctionnalités

Appelez l'opération aiot_devinfo_setopt pour configurer les paramètres suivants :

  1. Associez un handle de connexion MQTT.

    Important

    Avant de configurer les paramètres spécifiques aux balises d'appareil, assurez-vous que les informations de vérification de l'appareil sont spécifiées. Pour plus d'informations, consultez la rubrique Exemple d'utilisation.

    • Exemple de code :

          aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_MQTT_HANDLE, mqtt_handle);
    • Paramètres :

      Paramètre

      Exemple

      Description

      AIOT_DEVINFOOPT_MQTT_HANDLE

      mqtt_handle

      Le handle de connexion MQTT pour les balises d'appareil.

  2. Configurez une fonction de rappel de message.

    • Exemple de code :

          aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_RECV_HANDLER, (void *)demo_devinfo_recv_handler);
    • Paramètres :

      Paramètre

      Exemple

      Description

      AIOT_DEVINFOOPT_RECV_HANDLER

      demo_devinfo_recv_handler

      La fonction de rappel appelée lors de la réception d'un message de balise d'appareil.

  3. Configurez la surveillance de l'état.

    1. Définissez une fonction de rappel pour surveiller l'état.

      Lorsque vous définissez la fonction de rappel, tenez compte des éléments suivants :

      • Si l'envoi de la balise échoue, l'un des types d'événements suivants est renvoyé :

        Type d'événement

        Description

        AIOT_DEVINFOEVT_INVALID_DEVINFO

        Les informations de l'appareil dans la réponse ne sont pas valides. Les valeurs ProductKey et DeviceName ne peuvent pas être obtenues.

        AIOT_DEVINFOEVT_INVALID_RESPONSE

        Un champ de la réponse n'est pas valide.

        AIOT_DEVINFOEVT_INVALID_RESPONSE_FORMAT

        Un champ de la réponse présente un format non valide.

      • Dans cet exemple, la réponse est affichée. Vous pouvez personnaliser la logique de traitement en fonction de vos besoins métier.

      void demo_devinfo_event_handler(void *handle, const aiot_devinfo_event_t *event, void *userdata)
      {
          switch (event->type) {
              case AIOT_DEVINFOEVT_INVALID_DEVINFO: {
                  printf("AIOT_DEVINFOEVT_INVALID_DEVINFO\n");
              }
              break;
              case AIOT_DEVINFOEVT_INVALID_RESPONSE: {
                  printf("AIOT_DEVINFOEVT_INVALID_RESPONSE\n");
              }
              break;
              case AIOT_DEVINFOEVT_INVALID_RESPONSE_FORMAT: {
                  printf("AIOT_DEVINFOEVT_INVALID_RESPONSE_FORMAT\n");
              }
              break;
              default: {
      
              }
          }
      }
    2. Spécifiez la fonction de rappel pour surveiller l'état.

      • Exemple de code :

            aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_EVENT_HANDLER, (void *)demo_devinfo_event_handler);
      • Paramètres :

        Paramètre

        Exemple

        Description

        AIOT_DEVINFOOPT_EVENT_HANDLER

        demo_devinfo_event_handler

        Lorsque l'état de la connexion de l'appareil change, la logique de traitement correspondante définie dans cette fonction de rappel est exécutée.

Étape 3 : Mise à jour des balises

  1. Appelez la fonction aiot_devinfo_send pour envoyer une requête à IoT Platform. Pour plus d'informations sur les paramètres de la requête, consultez l'étape précédente.

    Lors de l'envoi de la requête, tenez compte des éléments suivants :

    • aiot_devinfo_msg_t est un paramètre d'entrée de la fonction aiot_devinfo_send() qui spécifie le format des données.

    • AIOT_DEVINFO_MSG_UPDATE spécifie le type de message.

    • Exemple de message :

      Message de requête

      Format Alink

      Description

      [
          {
              "attrKey": "testKey",
              "attrValue": "testValue"
          }
      ]
      {
        "id": "123",
        "version": "1.0",
        "sys":{
            "ack":0
        },
        "params": [
          {
              "attrKey": "testKey",
              "attrValue": "testValue"
          }
        ],
        "method": "thing.deviceinfo.update"
      }

      Le corps du message est au format JSON. Le contenu correspond à la valeur du paramètre params dans les données Alink. Pour plus d'informations, consultez la rubrique Signaler les informations de balise.

      Dans cet exemple, la balise spécifiée est testKey: testValue.

        {
            aiot_devinfo_msg_t devinfo_update;
            char *update = "[{\"attrKey\":\"testKey\",\"attrValue\":\"testValue\"}]";
    
            memset(&devinfo_update, 0, sizeof(aiot_devinfo_msg_t));
            devinfo_update.product_key = product_key;
            devinfo_update.device_name = device_name;
            devinfo_update.type = AIOT_DEVINFO_MSG_UPDATE;
            devinfo_update.data.update.params = update;
    
            res = aiot_devinfo_send(devinfo_handle, &devinfo_update);
            if (res < STATE_SUCCESS) {
                aiot_devinfo_deinit(&devinfo_handle);
                demo_mqtt_stop(&mqtt_handle);
                return -1;
            }
            printf("aiot_devinfo_send update msg id: %d\n", res);
        }
  2. Après réception de la requête, IoT Platform met à jour la balise de l'appareil et renvoie une réponse.

  3. Une fois que l'appareil reçoit la réponse, la fonction de rappel demo_devinfo_recv_handler est appelée.

    Lorsque vous définissez la fonction de rappel, tenez compte des éléments suivants :

    • aiot_devinfo_recv_t est un paramètre d'entrée de la fonction de rappel qui spécifie le format des données.

    • AIOT_DEVINFORECV_GENERIC_REPLY spécifie le type de message.

    • Dans cet exemple, le message est affiché. Vous pouvez personnaliser la logique de traitement en fonction de vos besoins métier.

    void demo_devinfo_recv_handler(void *handle, const aiot_devinfo_recv_t *packet, void *userdata)
    {
        switch (packet->type) {
            /* The response message from IoT Platform. */
            case AIOT_DEVINFORECV_GENERIC_REPLY: {
                printf("pk: %s, dn: %s, code: %d, msg id: %d, data: %.*s, message: %.*s\n", packet->product_key, packet->device_name,
                       packet->data.generic_reply.code, packet->data.generic_reply.msg_id, packet->data.generic_reply.data_len,
                       packet->data.generic_reply.data, packet->data.generic_reply.message_len, packet->data.generic_reply.message);
            }
            break;
            default: {
    
            }
        }
    }

(Facultatif) Étape 4 : Suppression des balises

  1. Une fois les balises d'appareil envoyées à IoT Platform, vous pouvez appeler l'opération aiot_devinfo_send pour les supprimer.

    Lors de l'envoi de la requête, tenez compte des éléments suivants :

    • aiot_devinfo_msg_t est un paramètre d'entrée de la fonction aiot_devinfo_send() qui spécifie le format des données.

    • AIOT_DEVINFO_MSG_DELETE spécifie le type de message.

    • Exemple de message :

      Message de requête

      Format Alink

      Description

          {
              "attrKey": "testKey"
          }
      {
        "id": "123",
        "version": "1.0",
        "sys":{
            "ack":0
        },
        "params": [
          {
              "attrKey": "testKey",
          }
        ],
        "method": "thing.deviceinfo.update"
      }

      Le corps du message est au format JSON. Le contenu correspond à la valeur du paramètre params dans les données Alink. Pour plus d'informations, consultez la rubrique Supprimer les informations de balise.

      Dans cet exemple, la balise spécifiée est testKey.

           {
              aiot_devinfo_msg_t devinfo_delete;
              char *delete = "[{\"attrKey\":\"testKey\"}]";
      
              memset(&devinfo_delete, 0, sizeof(aiot_devinfo_msg_t));
              devinfo_delete.product_key = product_key;
              devinfo_delete.device_name = device_name;
              devinfo_delete.type = AIOT_DEVINFO_MSG_DELETE;
              devinfo_delete.data.delete.params = delete;
      
              res = aiot_devinfo_send(devinfo_handle, &devinfo_delete);
              if (res < STATE_SUCCESS) {
                  aiot_devinfo_deinit(&devinfo_handle);
                  demo_mqtt_stop(&mqtt_handle);
                  return -1;
              }
              printf("aiot_devinfo_send delete msg id: %d\n", res);
          } 
  2. Après réception de la requête, IoT Platform supprime la balise et renvoie une réponse.

  3. Une fois que l'appareil reçoit la réponse, la fonction de rappel demo_devinfo_recv_handler est appelée.

    Pour plus d'informations, consultez la section Traiter les messages de réponse.

Étape 5 : Quitter le programme

Appelez la fonction aiot_devinfo_deinit pour supprimer l'instance de client Devinfo et libérer les ressources.

    res = aiot_devinfo_deinit(&devinfo_handle);
    if (res < STATE_SUCCESS) {
        demo_mqtt_stop(&mqtt_handle);
        printf("aiot_devinfo_deinit failed: -0x%04X\n", -res);
        return -1;
    }

Étapes suivantes

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

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

  • Pour plus d'informations sur les résultats d'exécution, consultez la rubrique Journaux d'opération.