Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Hub-SDK-Client
Die Hub SDK-Clientbibliothek dient als Schnittstelle zwischen dem Hub-SDK für verwaltete Integrationen und Ihrem eigenen Protokollstapel, der auf demselben Hub ausgeführt wird. Sie macht eine Reihe von öffentlichen Dateien verfügbar APIs , um die Interaktion Ihres Protokollstapels mit den Device Hub SDK-Komponenten zu erleichtern. Zu den Anwendungsfällen gehören die benutzerdefinierte Plugin-Kontrolle, der benutzerdefinierte Plugin-Provisioner und der lokale Controller.
Themen
Holen Sie sich Ihr Hub-SDK für verwaltete Integrationen
Der Hub SDK Client wird mit dem SDK für verwaltete Integrationen geliefert. Kontaktieren Sie uns über die Managed Integrations Console
Über das Hub SDK-Toolkit
Nach dem Herunterladen wird ein IotMI-DeviceSDK-Toolkit Ordner angezeigt, der alle öffentlichen Header-Dateien und .so Dateien enthält, die Sie in Ihrer Anwendung verwenden können. Das Team für verwaltete Integrationen stellt auch ein Beispiel main.cpp für Demo-Zwecke zur Verfügung, zusammen mit der Binärdatei der Demo-Anwendungbin/, die Sie direkt ausführen können. Sie können dies optional als Ausgangspunkt für Ihre Anwendung verwenden.
Erstellen Sie Ihre benutzerdefinierte Anwendung mit dem Hub SDK-Client
Gehen Sie wie folgt vor, um Ihre benutzerdefinierte Anwendung zu erstellen.
-
Nehmen Sie die Header-Dateien (.h) und die Dateien mit gemeinsam genutzten Objekten (.so) in Ihre Anwendung auf.
Sie müssen die öffentlichen Header-Dateien (.h) und Shared Object-Dateien (.so) in Ihre Anwendung aufnehmen. Die .so-Dateien können Sie in einem lib-Ordner ablegen. Das endgültige Layout wird dem folgenden ähneln:
├── 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 -
Erstellen Sie einen Hub-SDK-Client in Ihrer Hauptanwendung.
In Ihrer Hauptanwendung müssen Sie zuerst den Hub SDK-Client initialisieren, bevor er zur Bearbeitung von Anfragen verwendet werden kann. Sie können den Client einfach mit einem
clientIderstellen.Sobald Sie den Client haben, können Sie ihn mit dem Geräte-SDK für verwaltete Integrationen verbinden.
Im Folgenden finden Sie ein Beispiel für die Erstellung des Hub SDK-Clients und für die Herstellung einer Verbindung.
#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();Anmerkung
your_own_clientIdmuss mit dem identisch sein, den Sie start-device-discoveryin der benutzergeführten Einrichtung oder create-managed-thingim Bereitstellungsablauf für die einfache Einrichtung angegeben haben.
Veröffentlichen und abonnieren Sie, indem Sie die folgenden Schritte ausführen.
Nachdem die Verbindung hergestellt wurde, können Sie jetzt eingehende Aufgaben über das Hub-SDK für verwaltete Integrationen abonnieren. Bei den eingehenden Aufgaben kann es sich um Steuerungs- oder Bereitstellungsaufgaben handeln. Sie müssen auch Ihre eigene Rückruffunktion für eingegangene Aufgaben und Ihren eigenen benutzerdefinierten Kontext für Ihre eigenen Nachverfolgungszwecke definieren.
// 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);Nachdem die Verbindung hergestellt wurde, können Sie nun Anfragen aus Ihrer Anwendung im Hub-SDK für verwaltete Integrationen veröffentlichen. Sie können Ihren eigenen Aufgabennachrichtentyp mit unterschiedlichen Payloads für unterschiedliche Geschäftszwecke definieren. Die Anfragen können sowohl Kontroll- als auch Bereitstellungsanforderungen enthalten, ähnlich wie beim Abonnement-Flow. Schließlich können Sie Ihnen eine Adresse zuweisen,
rspPayloadum die Antwort vom Hub-SDK für verwaltete Integrationen synchronisiert zu erhalten.// 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);
Erstellen Sie Ihre eigene
CMakeLists.txtund erstellen Sie Ihre Anwendung von dort aus. Die endgültige Ausgabe könnte eine ausführbare Binärdatei sein, wieMyFirstApplication
Ausführen Ihrer benutzerdefinierten Anwendung
Bevor Sie Ihre benutzerdefinierte Anwendung ausführen, führen Sie die folgenden Schritte aus, um Ihren Hub einzurichten und das Hub-SDK für verwaltete Integrationen zu starten:
-
Folgen Sie den Onboarding-Anweisungen unter. Integrieren Sie Ihre Hubs in verwaltete Integrationen
-
Schließen Sie den unter dokumentierten Installationsvorgang ab. Installieren und validieren Sie das Hub-SDK für verwaltete Integrationen
Sobald die Voraussetzungen erfüllt sind, können Sie Ihre benutzerdefinierte Anwendung ausführen. Zum Beispiel:
./MyFirstApplication
Wichtig
Sie müssen das unter aufgeführte Startskript manuell Stellen Sie das Hub-SDK mit einem Skript bereit mit einem Skript aktualisieren, um Ihre eigene Anwendung zu starten. Die Reihenfolge ist wichtig, ändern Sie die Reihenfolge nicht.
Aktualisiere Folgendes. Änderung
./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &
to
./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &
Datentypen
In diesem Abschnitt werden die Datentypen definiert, die für das benutzerdefinierte Protokoll-Plugin verwendet werden.
- iotmi_client_request_t
-
Stellt eine Anfrage dar, die in den Komponenten der verwalteten Integration veröffentlicht werden soll.
- messageType
-
Der Typ der Nachricht (CommonTypes: MIMessage :C2 Type). Die folgende Liste zeigt die gültigen Werte.
-
C2MI_DEVICE_ONBOARDED: Weist auf eine Onboarding-Meldung des Geräts mit zugehöriger Nutzlast hin. -
C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: Weist darauf hin, dass für ein bereits zugeordnetes Gerät eine Benachrichtigung über die Beendigung der Bereitstellung der Aufgabe angezeigt wird. -
C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: Zeigt an, dass für ein aktiviertes Gerät eine Benachrichtigung über den Abschluss der Bereitstellung der Aufgabe angezeigt wird. -
C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: Zeigt eine Antwort an, dass die Aufgabe zur Deprovisionierung abgeschlossen wurde. -
C2MI_CONTROL_EVENT: Weist auf ein Steuerungsereignis mit potenzieller Änderung des Gerätestatus hin. -
C2MI_CONTROL_SEND_COMMAND: Weist auf einen Steuerbefehl von einem lokalen Controller hin. -
C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: Weist auf eine Statusabfrage eines Steuergeräts von einem lokalen Controller hin.
-
- reqPayload
-
Die Payload der Anfrage, normalerweise eine Zeichenfolge im JSON-Format.
- RSP-Nutzlast
-
Die Antwortnutzlast, gefüllt mit den Komponenten der verwalteten Integration.
- iotmi_client_event_t
-
Stellt ein Ereignis dar, das von den Komponenten der verwalteten Integration empfangen wurde.
- event_id
-
Die eindeutige Kennung des Ereignisses.
- length
-
Die Länge der Ereignisdaten.
- data
-
Ein Zeiger auf die Ereignisdaten, einschließlich der
messageType. Die folgende Liste zeigt die möglichen Werte.-
C2MI_PROVISION_UGS_TASK: Weist auf eine Bereitstellungsaufgabe für den UGS-Flow hin. -
C2MI_PROVISION_SS_TASK: Weist auf eine Bereitstellungsaufgabe für den SimpleSetup Flow hin. -
C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: Weist auf eine Aufgabe zur Aufhebung der Bereitstellung für ein bereits zugeordnetes Gerät hin. -
C2MI_DE_PROVISION_ACTIVATED_TASK: Weist auf eine Aufgabe zur Aufhebung der Bereitstellung für ein aktiviertes Gerät hin. -
C2MI_DEVICE_ONBOARDED_RESPONSE: Weist auf eine Reaktion beim Onboarding des Geräts hin. -
C2MI_CONTROL_TASK: Weist auf eine Kontrollaufgabe hin. -
C2MI_CONTROL_EVENT_NOTIFICATION: Weist auf eine Benachrichtigung über ein Steuerungsereignis für einen lokalen Controller hin.
-
- ctx
-
Ein benutzerdefinierter Kontext, der mit dem Ereignis verknüpft ist.