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.
Argomenti
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
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.
-
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 -
Crea un client Hub SDK nell'applicazione principale.
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.
clientIdDopo 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
Pubblica e sottoscrivi effettuando le seguenti operazioni.
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);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
rspPayloadricevere 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);
Creane uno tuo
CMakeLists.txte crea la tua applicazione partendo da lì. L'output finale potrebbe essere un file binario eseguibile comeMyFirstApplication
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:
-
Segui le istruzioni di onboarding all'indirizzo. Integra i tuoi hub verso integrazioni gestite
-
Completa il processo di installazione documentato in. Installa e convalida 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 il
messageType. 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.