Hub SDK クライアント - のマネージド統合 AWS IoT Device Management

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

Hub SDK クライアント

Hub SDK クライアントライブラリは、マネージド統合 Hub SDK と、同じハブで実行されている独自のプロトコルスタックとの間のインターフェイスとして機能します。これにより、一連のパブリック APIs公開され、プロトコルスタックと Device Hub SDK コンポーネントとのやり取りが容易になります。ユースケースには、カスタムプラグインコントロール、カスタムプラグインプロビジョナー、ローカルコントローラーが含まれます。

マネージド統合 Hub SDK を取得する

Hub SDK クライアントには、 マネージド統合 SDK が付属しています。ハブ SDK にアクセスするには、 マネージド統合コンソールからお問い合わせください。

Hub SDK ツールキットについて

ダウンロードすると、アプリケーションで使用できるすべてのパブリックヘッダーファイルと.soファイルを含むIotMI-DeviceSDK-Toolkitフォルダが表示されます。マネージド統合チームには、デモmain.cpp用の例と、直接実行できる bin/ のデモアプリケーションバイナリも用意されています。オプションで、これをアプリケーションの開始点として使用できます。

Hub SDK クライアントを使用してカスタムアプリケーションを作成する

次の手順を使用して、カスタムアプリケーションを作成します。

  1. ヘッダーファイル (.h) と共有オブジェクトファイル (.so) をアプリケーションに含めます。

    アプリケーションには、パブリックヘッダーファイル (.h) と共有オブジェクトファイル (.so) を含める必要があります。.so ファイルの場合は、lib フォルダに配置することができます。最終的なレイアウトは次のようになります。

    ├── 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. メインアプリケーションで Hub SDK クライアントを作成します。

    1. メインアプリケーションでは、リクエストの処理に使用する前に、まず Hub SDK クライアントを初期化する必要があります。クライアントは、 を使用して簡単に構築できますclientId

    2. クライアントを取得したら、マネージド統合 Device SDK に接続できます。

      以下は、Hub SDK クライアントの作成方法と接続方法の例です。

      #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();
      注記

      your_own_clientId は、ユーザーガイド付きセットアップで start-device-discovery で指定するもの、または簡易セットアッププロビジョニングフローで create-managed-thing で指定するものと同じである必要があります。

  3. 次の手順を実行して、パブリッシュおよびサブスクライブします。

    1. 接続が確立されたら、マネージド統合 Hub SDK から受信タスクをサブスクライブできるようになりました。受信タスクは、制御タスクでもプロビジョニングタスクでもかまいません。また、受信したタスクに対して独自のコールバック関数を定義し、独自のトレース目的で独自のカスタムコンテキストを定義する必要があります。

      // 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. 接続が確立されたら、アプリケーションからマネージドインテグレーション Hub SDK にリクエストを発行できるようになりました。独自のタスクメッセージタイプを定義し、ビジネス目的に応じてペイロードを変更できます。リクエストには、サブスクライブフローと同様に、コントロールリクエストとプロビジョニングリクエストの両方を含めることができます。最後に、 のアドレスを割り当てrspPayloadて、 マネージド統合 Hub SDK から同期された方法でレスポンスを取得できます。

      // 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. 独自の を構築しCMakeLists.txt、そこからアプリケーションを構築します。最終出力は、次のような実行可能バイナリにすることができます。 MyFirstApplication

カスタムアプリケーションの実行

カスタムアプリケーションを実行する前に、次の手順を実行してハブをセットアップし、マネージド統合 Hub SDK を起動します。

前提条件が満たされたら、カスタムアプリケーションを実行できます。例:

./MyFirstApplication
重要

にリストされている開始スクリプトをスクリプトスクリプトを使用して Hub SDK をデプロイするで手動で更新して、独自のアプリケーションを起動する必要があります。順序は重要です。順序は変更しないでください。

以下を更新します。変更

./IotMI-DeviceSDK-Toolkit/bin/DeviceSDKClientDemo >> $LOGS_DIR/logDeviceSDKClientDemo_logs.txt &

次のように変更します。

./MyFirstApplication >> $LOGS_DIR/MyFirstApplication_logs.txtt &

データ型

このセクションでは、カスタムプロトコルプラグインに使用されるデータ型を定義します。

iotmi_client_request_t

マネージド統合コンポーネントに発行されるリクエストを表します。

messageType

メッセージのタイプ (CommonTypes::C2MIMessageType)。次のリストは有効な値を示しています。

  • C2MI_DEVICE_ONBOARDED: 関連するペイロードを含むデバイスのオンボーディングメッセージを示します。

  • C2MI_DE_PROVISIONING_PRE_ASSOCIATED_COMPLETE: 事前関連付けられたデバイスのプロビジョニング解除タスク完了通知を示します。

  • C2MI_DE_PROVISIONING_ACTIVATED_COMPLETE: アクティブ化されたデバイスのプロビジョニング解除タスク完了通知を示します。

  • C2MI_DE_PROVISIONING_COMPLETE_RESPONSE: プロビジョニング解除タスクの完了レスポンスを示します。

  • C2MI_CONTROL_EVENT: デバイスの状態が変化する可能性のあるコントロールイベントを示します。

  • C2MI_CONTROL_SEND_COMMAND: ローカルコントローラーからのコントロールコマンドを示します。

  • C2MI_CONTROL_SEND_DEVICE_STATE_QUERY: ローカルコントローラーからのコントロールデバイスの状態クエリを示します。

reqPayload

リクエストペイロード。通常は JSON 形式の文字列です。

rspPayload

マネージド統合コンポーネントによって入力されたレスポンスペイロード。

iotmi_client_event_t

マネージド統合コンポーネントから受信したイベントを表します。

event_id

イベントの一意の識別子。

length

イベントデータの長さ。

データ

を含むイベントデータへのポインタmessageType。次のリストは、可能な値を示しています。

  • C2MI_PROVISION_UGS_TASK: UGS フローのプロビジョニングタスクを示します。

  • C2MI_PROVISION_SS_TASK: SimpleSetup フローのプロビジョニングタスクを示します。

  • C2MI_DE_PROVISION_PRE_ASSOCIATED_TASK: 事前関連付けられたデバイスのプロビジョニング解除タスクを示します。

  • C2MI_DE_PROVISION_ACTIVATED_TASK: アクティブ化されたデバイスのプロビジョニング解除タスクを示します。

  • C2MI_DEVICE_ONBOARDED_RESPONSE: デバイスのオンボーディングレスポンスを示します。

  • C2MI_CONTROL_TASK: コントロールタスクを示します。

  • C2MI_CONTROL_EVENT_NOTIFICATION: ローカルコントローラーのコントロールイベント通知を示します。

ctx

イベントに関連付けられたカスタムコンテキスト。