Client Hub SDK - Integrazioni gestite per AWS IoT Device Management

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Client Hub SDK

La libreria Hub SDK Client funge da interfaccia tra le integrazioni gestite Hub SDK e lo stack di protocolli personalizzato in esecuzione sullo stesso hub. Espone una serie di elementi pubblici APIs per facilitare l'interazione dello stack di protocolli con i componenti Device Hub SDK. I casi d'uso includono il controllo personalizzato dei plug-in, il provider di plug-in personalizzato e il controller locale.

Ottieni le tue integrazioni gestite Hub SDK

Il client Hub SDK viene fornito con l'SDK per le integrazioni gestite. Contattaci dalla console delle integrazioni gestite per accedere all'hub SDK.

Informazioni sul toolkit Hub SDK

Dopo il download, verrà visualizzata una IotMI-DeviceSDK-Toolkit cartella che contiene tutti i file di intestazione pubblici e i .so file che è possibile utilizzare nell'applicazione. Il team dedicato alle integrazioni gestite fornisce anche un main.cpp esempio a scopo dimostrativo, oltre al binario dell'applicazione demo bin/ eseguibile direttamente. Facoltativamente, puoi utilizzarlo come punto di partenza per la tua applicazione.

Crea la tua applicazione personalizzata con il client Hub SDK

Utilizza i seguenti passaggi per creare la tua applicazione personalizzata.

  1. Includete i file di intestazione (.h) e i file di oggetti condivisi (.so) nell'applicazione.

    È necessario includere i file di intestazione pubblici (.h) e i file di oggetti condivisi (.so) nell'applicazione. Per i file.so, potete metterli in una cartella lib. Il layout finale sarà simile al seguente:

    ├── 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. Crea un client Hub SDK nell'applicazione principale.

    1. Nell'applicazione principale, è necessario inizializzare il client Hub SDK prima che possa essere utilizzato per elaborare le richieste. Puoi semplicemente creare il client con un. clientId

    2. Dopo aver ottenuto il client, puoi collegarlo al Device SDK delle integrazioni gestite.

      Di seguito è riportato un esempio di creazione del client Hub SDK e di come connettersi.

      #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 essere uguale a quello specificato nella configurazione guidata dall'utente o start-device-discoverynel flusso di provisioning di Simple Setup. create-managed-thing

  3. Pubblica e sottoscrivi effettuando le seguenti operazioni.

    1. Dopo aver stabilito la connessione, ora puoi iscriverti alle attività in entrata dall'Hub SDK per le integrazioni gestite. Le attività in entrata possono essere attività di controllo o attività di fornitura. È inoltre necessario definire la propria funzione di callback in base alle attività ricevute e il proprio contesto personalizzato per i propri scopi di tracciamento.

      // 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. Dopo aver stabilito la connessione, ora puoi pubblicare le richieste dall'applicazione all'SDK Hub per le integrazioni gestite. È possibile definire il proprio tipo di messaggio di attività, con payload diversi per scopi aziendali diversi. Le richieste possono includere sia richieste di controllo che richieste di fornitura, in modo simile al flusso di iscrizione. Infine, puoi assegnare un indirizzo per rspPayload ricevere la risposta dall'Hub SDK delle integrazioni gestite in modo sincronizzato.

      // 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. Creane uno tuo CMakeLists.txt e crea la tua applicazione partendo da lì. L'output finale potrebbe essere un file binario eseguibile come MyFirstApplication

Esecuzione dell'applicazione personalizzata

Prima di eseguire l'applicazione personalizzata, completa i seguenti passaggi per configurare l'hub e avviare le integrazioni gestite Hub SDK:

Una volta soddisfatti i prerequisiti, è possibile eseguire l'applicazione personalizzata. Per esempio:

./MyFirstApplication
Importante

È necessario aggiornare manualmente lo script di avvio Implementa l'Hub SDK con uno script elencato in uno script per avviare la propria applicazione. L'ordine è importante, non modificarlo.

Aggiorna quanto segue. Modifica

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

in

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

Tipi di dati

Questa sezione definisce i tipi di dati utilizzati per il plug-in del protocollo personalizzato.

iotmi_client_request_t

Rappresenta una richiesta da pubblicare nei componenti delle integrazioni gestite.

Tipo di messaggio

Il tipo di messaggio (CommonTypes: MIMessage :C2 Type). L'elenco seguente mostra i valori validi.

  • C2MI_DEVICE_ONBOARDED: Indica un messaggio di onboarding del dispositivo con relativo payload.

  • C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: indica una notifica di completamento di un'attività di disattivazione per un dispositivo preassociato.

  • C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: indica una notifica di completamento di un'attività di disattivazione per un dispositivo attivato.

  • C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: indica la risposta completa di un'attività di annullamento del provisioning.

  • C2MI_CONTROL_EVENT: Indica un evento di controllo con potenziale modifica dello stato del dispositivo.

  • C2MI_CONTROL_SEND_COMMAND: Indica un comando di controllo da un controller locale.

  • C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: Indica una richiesta sullo stato del dispositivo di controllo da parte di un controller locale.

ReqPayload

Il payload della richiesta, in genere una stringa in formato JSON.

Payload RSP

Il payload di risposta, popolato dai componenti delle integrazioni gestite.

iotmi_client_event_t

Rappresenta un evento ricevuto dai componenti delle integrazioni gestite.

event_id

L'identificatore univoco dell'evento.

length

La lunghezza dei dati dell'evento.

dati

Un puntatore ai dati dell'evento, incluso ilmessageType. L'elenco seguente mostra i valori possibili.

  • C2MI_PROVISION_UGS_TASK: Indica un'attività di fornitura per il flusso UGS.

  • C2MI_PROVISION_SS_TASK: Indica un'attività di fornitura per il SimpleSetup flusso.

  • C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: Indica un'attività di annullamento del provisioning per un dispositivo pre-associato.

  • C2MI_DE_PROVISION_ACTIVATED_TASK: Indica un'attività di annullamento della fornitura per un dispositivo attivato.

  • C2MI_DEVICE_ONBOARDED_RESPONSE: Indica una risposta all'onboarding del dispositivo.

  • C2MI_CONTROL_TASK: Indica un'attività di controllo.

  • C2MI_CONTROL_EVENT_NOTIFICATION: indica una notifica di un evento di controllo per un controller locale.

ctx

Un contesto personalizzato associato all'evento.