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á.
Controle do hub
O controle do Hub é uma extensão do SDK do dispositivo final de integrações gerenciadas que permite a interface com o MQTTProxy componente no SDK do Hub. Com o controle de hub, você pode implementar código usando o SDK do dispositivo final e controlar seu hub por meio da nuvem de integrações gerenciadas como um dispositivo separado. O SDK de controle do hub será fornecido como um pacote separado dentro do SDK do Hub, rotulado como. iot-managed-integrations-hub-control-x.x.x
Tópicos
Pré-requisitos
Para configurar o controle do hub, você precisa do seguinte:
-
Um hub integrado ao Hub SDK, versão 0.4.0 ou superior.
-
Baixe a versão mais recente do SDK do dispositivo final no Console de gerenciamento da AWS.
-
Um componente proxy MQTT em execução no hub, versão 0.5.0 ou superior.
Componentes do SDK do dispositivo final
Use os seguintes componentes do SDK do dispositivo final:
-
Gerador de código para o modelo de dados
-
Manipulador de modelos de dados
Como o Hub SDK já tem um processo de integração e uma conexão com a nuvem, você não precisa dos seguintes componentes:
-
Provisionado
-
Interface PKCS
-
Manipulador de trabalhos
-
Agente MQTT
Integre com o SDK do dispositivo final
Siga as instruções no Gerador de código para modelo de dados para gerar o código C de baixo nível.
Siga as instruções em Integração do SDK do dispositivo final para:
-
Configurar o ambiente de construção
Crie o código no Amazon Linux 2023/x86_64 como seu host de desenvolvimento. Instale as dependências de compilação necessárias:
dnf install make gcc gcc-c++ cmake -
Desenvolva funções de retorno de chamada de hardware
Antes de implementar as funções de retorno de chamada do hardware, entenda como a API funciona. Este exemplo usa o On/Off cluster e o OnOff atributo para controlar a função de um dispositivo. Para obter detalhes da API, consulteFunção C de baixo nível APIs.
struct DeviceState { struct iotmiDev_Agent *agent; struct iotmiDev_Endpoint *endpointLight; /* This simulates the HW state of OnOff */ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff(bool *value, void *user) { struct DeviceState *state = (struct DeviceState *)(user); *value = state->hwState; return iotmiDev_DMStatusOk; } -
Configure endpoints e conecte funções de retorno de chamada de hardware
Depois de implementar as funções, crie endpoints e registre seus retornos de chamada. Conclua estas tarefas:
-
Crie um agente de dispositivo
-
Preencha os pontos de função de retorno de chamada para cada estrutura de cluster que você deseja suportar
-
Configure endpoints e registre clusters compatíveis
struct DeviceState { struct iotmiDev_Agent * agent; struct iotmiDev_Endpoint *endpoint1; /* OnOff cluster states*/ bool hwState; }; /* This implementation for OnOff getter just reads the state from the DeviceState */ iotmiDev_DMStatus exampleGetOnOff( bool * value, void * user ) { struct DeviceState * state = ( struct DeviceState * ) ( user ); *value = state->hwState; printf( "%s(): state->hwState: %d\n", __func__, state->hwState ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetOnTime( uint16_t * value, void * user ) { *value = 0; printf( "%s(): OnTime is %u\n", __func__, *value ); return iotmiDev_DMStatusOk; } iotmiDev_DMStatus exampleGetStartUpOnOff( iotmiDev_OnOff_StartUpOnOffEnum * value, void * user ) { *value = iotmiDev_OnOff_StartUpOnOffEnum_Off; printf( "%s(): StartUpOnOff is %d\n", __func__, *value ); return iotmiDev_DMStatusOk; } void setupOnOff( struct DeviceState *state ) { struct iotmiDev_clusterOnOff clusterOnOff = { .getOnOff = exampleGetOnOff, .getOnTime = exampleGetOnTime, .getStartUpOnOff = exampleGetStartUpOnOff, }; iotmiDev_OnOffRegisterCluster( state->endpoint1, &clusterOnOff, ( void * ) state); } /* Here is the sample setting up an endpoint 1 with OnOff cluster. Note all error handling code is omitted. */ void setupAgent(struct DeviceState *state) { struct iotmiDev_Agent_Config config = { .thingId = IOTMI_DEVICE_MANAGED_THING_ID, .clientId = IOTMI_DEVICE_CLIENT_ID, }; iotmiDev_Agent_InitDefaultConfig(&config); /* Create a device agent before calling other SDK APIs */ state->agent = iotmiDev_Agent_new(&config); /* Create endpoint#1 */ state->endpoint1 = iotmiDev_Agent_addEndpoint( state->agent, 1, "Data Model Handler Test Device", (const char*[]){ "Camera" }, 1 ); setupOnOff(state); } -
-
Exemplo: controle de hub de construção
O controle do hub é fornecido como parte do pacote Hub SDK. O subpacote de controle do hub é rotulado iot-managed-integrations-hub-control-x.x.x e contém bibliotecas diferentes do SDK do dispositivo não modificado.
-
Mova os arquivos gerados pelo código para a
examplepasta:cp codegen/out/* example/dm -
Para criar o controle do hub, execute os seguintes comandos:
cd <hub-control-root-folder>mkdir buildcd buildcmake -DBUILD_EXAMPLE_WITH_MQTT_PROXY=ON -DIOTMI_USE_MANAGED_INTEGRATIONS_DEVICE_LOG=ON ..cmake -build . -
Execute os exemplos com o
MQTTProxycomponente no hub, com osMQTTProxycomponentesHubOnboardinge em execução../examples/iotmi_device_sample_camera/iotmi_device_sample_camera
Consulte Modelo de dados de integrações gerenciadas o modelo de dados. Siga a Etapa 5 Comece a usar o SDK do dispositivo final para configurar endpoints e gerenciar as comunicações entre o usuário final e. iot-managed-integrations
Exemplos compatíveis
Os exemplos a seguir foram criados e testados:
-
iotmi_device_dm_purificador_demo
-
diagnóstico básico do dispositivo iotmi
-
iotmi_device_dm_camera_demo
Plataformas compatíveis
A tabela a seguir mostra as plataformas suportadas para o controle do hub.
| Arquitetura | Sistema operacional | Versão GCC | Versão Binutils |
|---|---|---|---|
|
X86_64 |
Linux |
10.5.0 |
2,37 |
|
aarch64 |
Linux |
10.5.0 |
2,37 |