Todos os produtos
Search
Central de documentação

IoT Platform:Exemplo

Última atualização: Jun 26, 2026

Use o Link SDK para C para enviar ou excluir tags de dispositivo no IoT Platform. Este exemplo utiliza o arquivo de amostra ./demos/devinfo_posix_demo.c.

Informações de contexto

  • Para mais informações sobre tags de dispositivo, consulte Visão geral.

  • Tags de dispositivo exigem uma conexão MQTT com o IoT Platform. Para mais informações sobre o código de conexão MQTT, consulte Visão geral.

Etapa 1: Inicialização

  1. Adicione os arquivos de cabeçalho.

    ……
    ……
    
    #include "aiot_devinfo_api.h"
  2. Configure as dependências subjacentes e a saída de log.

        aiot_sysdep_set_portfile(&g_aiot_sysdep_portfile);
        aiot_state_set_logcb(demo_state_logcb);
  3. Chame a operação aiot_devinfo_init para crie uma instância do cliente Devinfo e inicializar os parâmetros padrão.

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

Etapa 2: Configure os recursos

Chame a operação aiot_devinfo_setopt para definir as seguintes configurações:

  1. Associe ao handle de conexão MQTT.

    Importante

    Antes de configure os parâmetros específicos de tag de dispositivo, verifique se as informações de verificação do dispositivo foram especificadas. Para mais informações, consulte Exemplo de uso.

    • Código de exemplo:

          aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_MQTT_HANDLE, mqtt_handle);
    • Parâmetros:

      Parâmetro

      Exemplo

      Descrição

      AIOT_DEVINFOOPT_MQTT_HANDLE

      mqtt_handle

      O handle de conexão MQTT para tags de dispositivo.

  2. Configure uma função de callback para mensagens.

    • Código de exemplo:

          aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_RECV_HANDLER, (void *)demo_devinfo_recv_handler);
    • Parâmetros:

      Parâmetro

      Exemplo

      Descrição

      AIOT_DEVINFOOPT_RECV_HANDLER

      demo_devinfo_recv_handler

      A função de callback invocada ao receber uma mensagem de tag de dispositivo.

  3. Configure o monitoramento de status.

    1. Defina uma função de callback para monitorar o status.

      Ao definir a função de callback, observe os seguintes itens:

      • Se o envie da tag falhar, um dos seguintes tipos de evento será retornado:

        Tipo de evento

        Descrição

        AIOT_DEVINFOEVT_INVALID_DEVINFO

        As informações do dispositivo na resposta são inválidas. Os valores de ProductKey e DeviceName não podem ser obtidos.

        AIOT_DEVINFOEVT_INVALID_RESPONSE

        Um campo na resposta é inválido.

        AIOT_DEVINFOEVT_INVALID_RESPONSE_FORMAT

        Um campo na resposta tem formato inválido.

      • Neste exemplo, a resposta é impressa. Personalize a lógica de processamento conforme os requisitos do seu negócio.

      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. Especifique a função de callback para monitorar o status.

      • Código de exemplo:

            aiot_devinfo_setopt(devinfo_handle, AIOT_DEVINFOOPT_EVENT_HANDLER, (void *)demo_devinfo_event_handler);
      • Parâmetros:

        Parâmetro

        Exemplo

        Descrição

        AIOT_DEVINFOOPT_EVENT_HANDLER

        demo_devinfo_event_handler

        Quando o status de conexão do dispositivo muda, a lógica de processamento correspondente definida nesta função de callback é executada.

Etapa 3: Atualize as tags

  1. Chame a função aiot_devinfo_send para envie uma solicitação ao IoT Platform. Para mais informações sobre os parâmetros da solicitação, consulte a etapa anterior.

    Ao enviar a solicitação, observe os seguintes itens:

    • aiot_devinfo_msg_t é um parâmetro de entrada da função aiot_devinfo_send() que especifica o formato dos dados.

    • AIOT_DEVINFO_MSG_UPDATE especifica o tipo de mensagem.

    • Exemplo de mensagem:

      Mensagem de solicitação

      Formato Alink

      Descrição

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

      O corpo da mensagem está no formato JSON. O conteúdo corresponde ao valor do parâmetro params nos dados Alink. Para mais informações, consulte Informar informações de tag.

      Neste exemplo, a tag especificada é 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. Após receber a solicitação, o IoT Platform atualize a tag do dispositivo e retorna uma resposta.

  3. Após o dispositivo receber a resposta, a função de callback demo_devinfo_recv_handler é invocada.

    Ao definir a função de callback, observe os seguintes itens:

    • aiot_devinfo_recv_t é um parâmetro de entrada da função de callback que especifica o formato dos dados.

    • AIOT_DEVINFORECV_GENERIC_REPLY especifica o tipo de mensagem.

    • Neste exemplo, a mensagem é impressa. Personalize a lógica de processamento conforme os requisitos do seu negócio.

    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: {
    
            }
        }
    }

(Opcional) Etapa 4: Exclua as tags

  1. Após as tags do dispositivo serem enviadas ao IoT Platform, chame a operação aiot_devinfo_send para exclua-las.

    Ao enviar a solicitação, observe os seguintes itens:

    • aiot_devinfo_msg_t é um parâmetro de entrada da função aiot_devinfo_send() que especifica o formato dos dados.

    • AIOT_DEVINFO_MSG_DELETE especifica o tipo de mensagem.

    • Exemplo de mensagem:

      Mensagem de solicitação

      Formato Alink

      Descrição

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

      O corpo da mensagem está no formato JSON. O conteúdo corresponde ao valor do parâmetro params nos dados Alink. Para mais informações, consulte Excluir informações de tag.

      Neste exemplo, a tag especificada é 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. Após receber a solicitação, o IoT Platform exclua a tag e retorna uma resposta.

  3. Após o dispositivo receber a resposta, a função de callback demo_devinfo_recv_handler é invocada.

    Para mais informações, consulte Processar mensagens de resposta.

Etapa 5: Encerre o programa

Chame a função aiot_devinfo_deinit para exclua a instância do cliente Devinfo e liberar os recursos.

    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;
    }

Próximas etapas

  • Após configure o arquivo de código de exemplo, compile-o para gerar um arquivo executável. Neste exemplo, o arquivo executável ./demos/devinfo-posix-demo é gerado.

    Para mais informações, consulte Compilar e executar.

  • Para mais informações sobre os resultados de execução, consulte Logs operacionais.