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

Hubsteuerung

Hub Control ist eine Erweiterung des Endgeräte-SDK für verwaltete Integrationen, die es ermöglicht, eine Schnittstelle mit der MQTTProxy Komponente im Hub-SDK herzustellen. Mit der Hub-Steuerung können Sie Code mithilfe des Endgeräte-SDK implementieren und Ihren Hub über die Managed Integrations Cloud als separates Gerät steuern. Das Hub Control SDK wird als separates Paket innerhalb des Hub-SDK mit der Bezeichnung als bereitgestellt. iot-managed-integrations-hub-control-x.x.x

Voraussetzungen

Um die Hub-Steuerung einzurichten, benötigen Sie Folgendes:

  • Ein Hub, der in das Hub-SDK, Version 0.4.0 oder höher, integriert ist.

  • Laden Sie die neueste Version des Endgeräte-SDK von der herunter. AWS-Managementkonsole

  • Eine MQTT-Proxykomponente, die auf dem Hub läuft, Version 0.5.0 oder höher.

SDK-Komponenten für Endgeräte

Verwenden Sie die folgenden Komponenten aus dem Endgeräte-SDK:

  • Codegenerator für das Datenmodell

  • Datenmodell-Handler

Da das Hub-SDK bereits über einen Onboarding-Prozess und eine Verbindung zur Cloud verfügt, benötigen Sie die folgenden Komponenten nicht:

  • Bereitsteller

  • PKCS-Schnittstelle

  • Handler für Jobs

  • MQTT-Agent

Integrieren Sie es in das Endgeräte-SDK

  1. Folgen Sie den Anweisungen im Codegenerator für Datenmodell, um den Low-Level-C-Code zu generieren.

  2. Folgen Sie den Anweisungen unter Integrieren des Endgeräte-SDK, um:

    1. Richten Sie die Build-Umgebung ein

      Erstellen Sie den Code auf Amazon Linux 2023/x86_64 als Entwicklungshost. Installieren Sie die erforderlichen Build-Abhängigkeiten:

      dnf install make gcc gcc-c++ cmake
    2. Entwickeln Sie Hardware-Callback-Funktionen

      Bevor Sie die Hardware-Callback-Funktionen implementieren, sollten Sie sich mit der Funktionsweise der API vertraut machen. In diesem Beispiel werden der On/Off Cluster und das OnOff Attribut verwendet, um eine Gerätefunktion zu steuern. Einzelheiten zur API finden Sie unterC-Funktion auf niedriger Ebene 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; }
    3. Richten Sie Endpunkte ein und binden Sie Hardware-Callback-Funktionen ein

      Nachdem Sie die Funktionen implementiert haben, erstellen Sie Endpunkte und registrieren Sie Ihre Callbacks. Erledigen Sie diese Aufgaben:

      1. Erstellen Sie einen Geräteagenten

      2. Füllen Sie die Callback-Funktionspunkte für jede Clusterstruktur aus, die Sie unterstützen möchten

      3. Richten Sie Endpunkte ein und registrieren Sie unterstützte Cluster

      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); }

Beispiel: Hub-Kontrolle erstellen

Die Hub-Steuerung wird als Teil des Hub-SDK-Pakets bereitgestellt. Das Hub Control-Unterpaket ist mit anderen Bibliotheken gekennzeichnet iot-managed-integrations-hub-control-x.x.x und enthält andere Bibliotheken als das unveränderte Geräte-SDK.

  1. Verschieben Sie die mit dem Code generierten Dateien in den folgenden Ordnerexample:

    cp codegen/out/* example/dm
  2. Führen Sie die folgenden Befehle aus, um die Hub-Steuerung zu erstellen:

    cd <hub-control-root-folder>
    mkdir build
    cd build
    cmake -DBUILD_EXAMPLE_WITH_MQTT_PROXY=ON -DIOTMI_USE_MANAGED_INTEGRATIONS_DEVICE_LOG=ON ..
    cmake -build .
  3. Führen Sie die Beispiele mit der MQTTProxy Komponente auf dem Hub aus, während die MQTTProxy Komponenten HubOnboarding und ausgeführt werden.

    ./examples/iotmi_device_sample_camera/iotmi_device_sample_camera

Informationen Datenmodell für verwaltete Integrationen zum Datenmodell finden Sie unter. Folgen Sie Schritt 5 unterBeginnen Sie mit dem End Device SDK, um Endgeräte einzurichten und die Kommunikation zwischen dem Endbenutzer und zu verwalten. iot-managed-integrations

Unterstützte Beispiele

Die folgenden Beispiele wurden erstellt und getestet:

  • iotmi_device_dm_air_purifier_demo

  • Grundlegende Diagnose für iotmi_device_devices

  • iotmi_device_dm_camera_demo

Unterstützte Plattformen

In der folgenden Tabelle sind die unterstützten Plattformen für die Hub-Steuerung aufgeführt.

Architektur Betriebssystem GCC-Version Binutils-Version

X86_64

Linux

10.5.0

2,37

aarch64

Linux

10,5,0

2,37