Hub-SDK-Client - Verwaltete Integrationen für AWS IoT Device Management

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.

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, um auf das Hub-SDK zuzugreifen.

Ü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.

  1. 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
  2. Erstellen Sie einen Hub-SDK-Client in Ihrer Hauptanwendung.

    1. 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 clientId erstellen.

    2. 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.

  3. Veröffentlichen und abonnieren Sie, indem Sie die folgenden Schritte ausführen.

    1. 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);
    2. 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, rspPayload um 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);
  4. Erstellen Sie Ihre eigene CMakeLists.txt und erstellen Sie Ihre Anwendung von dort aus. Die endgültige Ausgabe könnte eine ausführbare Binärdatei sein, wie MyFirstApplication

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:

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 dermessageType. 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.