ハブコントロール - のマネージド統合 AWS IoT Device Management

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ハブコントロール

ハブコントロールは、 マネージド統合の拡張です。エンドデバイス SDK は、Hub SDK の MQTTProxyコンポーネントとインターフェイスできます。ハブコントロールを使用すると、エンドデバイス SDK を使用してコードを実装し、マネージド統合クラウドを介してハブを別のデバイスとして制御できます。ハブコントロール SDK は、 というラベルが付けられた Hub SDK 内の別のパッケージとして提供されますiot-managed-integrations-hub-control-x.x.x

前提条件

ハブコントロールを設定するには、以下が必要です。

  • Hub SDK バージョン 0.4.0 以降にオンボードされたハブ。

  • から End Device SDK の最新バージョンをダウンロードします AWS マネジメントコンソール。

  • ハブ、バージョン 0.5.0 以降で実行されている MQTT プロキシコンポーネント。

エンドデバイス SDK コンポーネント

エンドデバイス SDK の次のコンポーネントを使用します。

  • データモデルのコードジェネレーター

  • データモデルハンドラー

Hub SDK にはすでにオンボーディングプロセスとクラウドへの接続があるため、以下のコンポーネントは必要ありません。

  • プロビジョニング先

  • PKCS インターフェイス

  • ジョブハンドラー

  • MQTT エージェント

End Device SDK との統合

  1. データモデルのコードジェネレーターの指示に従って、低レベル C コードを生成します。

  2. 「エンドデバイス SDK の統合」の手順に従って、次の操作を行います。

    1. ビルド環境をセットアップします。

      開発ホストとして Amazon Linux 2023/x86_64 でコードを構築します。必要なビルドの依存関係をインストールします。

      dnf install make gcc gcc-c++ cmake
    2. ハードウェアコールバック関数の開発

      ハードウェアコールバック関数を実装する前に、API の仕組みを理解してください。この例では、On/Off クラスターと OnOff 属性を使用してデバイス関数を制御します。API の詳細については、「」を参照してください低レベルの C 機能 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. エンドポイントをセットアップし、ハードウェアコールバック関数をフックする

      関数を実装したら、エンドポイントを作成し、コールバックを登録します。以下のタスクを完了します。

      1. デバイスエージェントを作成する

      2. サポートするクラスター構造ごとにコールバック関数ポイントを埋める

      3. エンドポイントをセットアップし、サポートされているクラスターを登録する

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

例: ハブコントロールを構築する

ハブコントロールは、Hub SDK パッケージの一部として提供されます。ハブコントロールのサブパッケージには というラベルが付けられiot-managed-integrations-hub-control-x.x.x、変更されていないデバイス SDK とは異なるライブラリが含まれています。

  1. コード生成ファイルを exampleフォルダに移動します。

    cp codegen/out/* example/dm
  2. ハブコントロールを構築するには、次のコマンドを実行します。

    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. ハブの MQTTProxyコンポーネントで例を実行し、 HubOnboarding および MQTTProxyコンポーネントを実行します。

    ./examples/iotmi_device_sample_camera/iotmi_device_sample_camera

データモデルマネージド統合データモデルについては、「」を参照してください。のステップ 5 に従ってエンドポイントEnd Device SDK の使用を開始するを設定し、エンドユーザーと iot-managed-integrations 間の通信を管理します。

サポートされている例

以下の例が構築され、テストされています。

  • iotmi_device_dm_air_purifier_demo

  • iotmi_device_basic_diagnostics

  • iotmi_device_dm_camera_demo

サポートされているプラットフォーム

次の表は、ハブ制御でサポートされているプラットフォームを示しています。

アーキテクチャ オペレーティングシステム GCC バージョン Binutils バージョン

X86_64

リナックス

10.5.0

2.37

AARCH64

リナックス

10.5.0

2.37