Cliente Hub SDK - Integrações gerenciadas para AWS IoT Device Management

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Cliente Hub SDK

A biblioteca cliente do Hub SDK serve como uma interface entre as integrações gerenciadas do Hub SDK e sua própria pilha de protocolos em execução no mesmo hub. Ele expõe um conjunto de públicos APIs para facilitar a interação da sua pilha de protocolos com os componentes do SDK do Device Hub. Os casos de uso incluem controle de plug-in personalizado, provisionador de plug-in personalizado e controlador local.

Obtenha suas integrações gerenciadas Hub SDK

O Hub SDK Client vem com o SDK de integrações gerenciadas. Entre em contato conosco pelo console de integrações gerenciadas para acessar o SDK do hub.

Sobre o kit de ferramentas do Hub SDK

Após o download, você verá uma IotMI-DeviceSDK-Toolkit pasta que contém todos os arquivos de cabeçalho públicos e .so arquivos que você pode consumir em seu aplicativo. A equipe de integrações gerenciadas também fornece um exemplo main.cpp para fins de demonstração, junto com o binário do aplicativo de demonstração, no bin/ qual você pode executar diretamente. Opcionalmente, você pode usar isso como ponto de partida para seu aplicativo.

Crie seu aplicativo personalizado com o cliente Hub SDK

Use as etapas a seguir para criar seu aplicativo personalizado.

  1. Inclua os arquivos de cabeçalho (.h) e os arquivos de objetos compartilhados (.so) em seu aplicativo.

    Você deve incluir os arquivos de cabeçalho públicos (.h) e os arquivos de objetos compartilhados (.so) em seu aplicativo. Para os arquivos.so, você pode colocá-los em uma pasta lib. O layout final será semelhante a este:

    ├── include │ ├── iotmi_device_sdk_client │ │ └── iotmi_device_sdk_client_common_types.h │ ├── iotmi_device_sdk_client.h │ └── iotshd_status.h ├── lib │ ├── libiotmi_devicesdk_client_module.so │ └── libiotmi_log_c.so
  2. Crie um cliente Hub SDK em seu aplicativo principal.

    1. Em seu aplicativo principal, você deve primeiro inicializar o cliente Hub SDK antes que ele possa ser usado para processar solicitações. Você pode simplesmente construir o cliente com umclientId.

    2. Depois de ter o cliente, você pode conectá-lo ao Device SDK de integrações gerenciadas.

      Veja a seguir um exemplo de como criar o cliente Hub SDK e como se conectar.

      #include <cstdlib> #include <string> #include "iotshd_status.h" #include "iotmi_device_sdk_client.h" auto client = std::make_unique<DeviceSDKClient>(your_own_clientId); iotmi_statusCode_t status = client->connect();
      nota

      your_own_clientIddeve ser a mesma especificada start-device-discoveryna configuração guiada pelo usuário ou create-managed-thingno fluxo de provisionamento de configuração simples.

  3. Publique e assine seguindo as etapas a seguir.

    1. Depois que a conexão for estabelecida, agora você poderá assinar as tarefas recebidas do SDK do Hub de integrações gerenciadas. As tarefas recebidas podem ser tarefas de controle ou tarefas de provisionamento. Você também precisa definir sua própria função de retorno de chamada nas tarefas recebidas e seu próprio contexto personalizado para seus próprios propósitos de rastreamento.

      // subscribe to provisioning tasks iotmi_statusCode_t status = client->iotmi_provision_subscribe_to_tasks( example_subscriber_callback, custom_context); // subscribe to control tasks iotmi_statusCode_t status = client->iotmi_control_subscribe_to_tasks( example_subscriber_callback, custom_context);
    2. Depois que a conexão for estabelecida, agora você poderá publicar solicitações do seu aplicativo no SDK do Hub de integrações gerenciadas. Você pode definir seu próprio tipo de mensagem de tarefa, com cargas diferentes para diferentes fins comerciais. As solicitações podem incluir solicitações de controle e solicitações de provisão, de forma semelhante ao fluxo de assinatura. Por fim, você pode atribuir um endereço para obter rspPayload a resposta do SDK do Hub de integrações gerenciadas de forma sincronizada.

      // publish control request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_CONTROL_EVENT, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_control_publish_request(&api_payload); // publish provision request iotmi_client_request_t api_payload = { .messageType = C2MIMessageType::C2MI_DEVICE_ONBOARDED, .reqPayload = (uint8_t *)"define_your_req_payload", .rspPayload = (uint8_t *)calloc(1000, sizeof(uint8_t)) }; status = client->iotmi_provision_publish_request(&api_payload);
  4. Crie o seu próprio CMakeLists.txt e crie seu aplicativo a partir daí. A saída final pode ser um binário executável, como MyFirstApplication

Executando seu aplicativo personalizado

Antes de executar seu aplicativo personalizado, conclua as etapas a seguir para configurar seu hub e iniciar o SDK do Hub de integrações gerenciadas:

Depois que os pré-requisitos forem atendidos, você poderá executar seu aplicativo personalizado. Por exemplo:

./MyFirstApplication
Importante

Você deve atualizar manualmente o script de início listado Implemente o Hub SDK com um script com um script para iniciar seu próprio aplicativo. O pedido é importante, não altere o pedido.

Atualize o seguinte. Alteração

./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &

com

./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &

Tipos de dados

Esta seção define os tipos de dados usados para o plug-in de protocolo personalizado.

iotmi_client_request_t

Representa uma solicitação a ser publicada nos componentes de integrações gerenciadas.

MessageType

O tipo da mensagem (CommonTypes: :C2 MIMessage Type). A lista a seguir mostra os valores válidos.

  • C2MI_DEVICE_ONBOARDED: indica uma mensagem de integração do dispositivo com carga útil relacionada.

  • C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: indica uma notificação de conclusão da tarefa de desprovisionamento para um dispositivo pré-associado.

  • C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: indica uma notificação de conclusão da tarefa de desprovisionamento para um dispositivo ativado.

  • C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: indica uma resposta completa da tarefa de desprovisionamento.

  • C2MI_CONTROL_EVENT: indica um evento de controle com possível alteração do estado do dispositivo.

  • C2MI_CONTROL_SEND_COMMAND: indica um comando de controle de um controlador local.

  • C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: indica uma consulta de estado do dispositivo de controle de um controlador local.

Carga útil do REQ

A carga útil da solicitação, normalmente uma string formatada em JSON.

Carga útil do RSP

A carga útil de resposta, preenchida pelos componentes de integrações gerenciadas.

iotmi_client_event_t

Representa um evento recebido dos componentes de integrações gerenciadas.

ID do evento

O identificador exclusivo do evento.

length

A duração dos dados do evento.

data

Um ponteiro para os dados do evento, incluindo o. messageType A lista a seguir mostra os valores possíveis.

  • C2MI_PROVISION_UGS_TASK: indica uma tarefa de provisão para o fluxo UGS.

  • C2MI_PROVISION_SS_TASK: indica uma tarefa de provisionamento para o SimpleSetup fluxo.

  • C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: indica uma tarefa de desprovisionamento para um dispositivo pré-associado.

  • C2MI_DE_PROVISION_ACTIVATED_TASK: indica uma tarefa de desprovisionamento para um dispositivo ativado.

  • C2MI_DEVICE_ONBOARDED_RESPONSE: indica uma resposta de integração do dispositivo.

  • C2MI_CONTROL_TASK: indica uma tarefa de controle.

  • C2MI_CONTROL_EVENT_NOTIFICATION: indica uma notificação de evento de controle para um controlador local.

ctx

Um contexto personalizado associado ao evento.