AWS.DiscoverDevices オペレーションを実装する - のマネージド統合 AWS IoT Device Management

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

AWS.DiscoverDevices オペレーションを実装する

デバイス検出は、エンドユーザーが所有する物理デバイスのリストを、AWS IoT Device Management のマネージド統合で維持されているエンドユーザーデバイスのデジタル表現と一致させます。これは、AWS IoT Device Management のユーザーとマネージド統合間のアカウントリンクが完了した後にのみ、エンドユーザーが所有するデバイスで AWS 顧客によって実行されます。デバイス検出は、AWS IoT Device Management のマネージド統合がコネクタを呼び出してデバイス検出リクエストを開始する非同期プロセスです。C2C コネクタは、検出されたエンドユーザーデバイスのリストを、マネージド統合によって生成された参照識別子 ( と呼ばれますdeviceDiscoveryId) とともに非同期的に返します。

次の図は、AWS IoT Device Management のエンドユーザーとマネージド統合間のデバイス検出ワークフローを示しています。

AWS.DiscoverDevices ワークフロー
AWS.DiscoverDevices ワークフロー
  1. お客様は、エンドユーザーに代わってデバイス検出プロセスを開始します。

  2. のマネージド統合は、お客様が生成 AWS したデバイス検出リクエストdeviceDiscoveryIdに という参照識別子 AWS IoT Device Management を生成します。

  3. のマネージド統合は、エンドユーザーaccessTokenの有効な OAuth と を含む AWS.DiscoverDevicesオペレーションインターフェイスを使用して、C2C コネクタにデバイス検出リクエスト AWS IoT Device Management を送信しますdeviceDiscoveryId

  4. コネクタには、DEVICE_DISCOVERYイベントに含めるdeviceDiscoveryIdための が保存されます。このイベントには、検出されたエンドユーザーのデバイスのリストも含まれ、DEVICE_DISCOVERYイベントとして SendConnectorEvent API を使用して AWS IoT Device Management のマネージド統合に送信する必要があります。

  5. C2C コネクタはリソースサーバーを呼び出して、エンドユーザーが所有するすべてのデバイスを取得します。

  6. C2C コネクタ Lambda は Lambda 呼び出し (invokeFunction) に応答し、ACK 応答を AWS IoT Device Management のマネージド統合に返し、AWS.DiscoverDevicesオペレーションの初期応答として機能します。マネージド統合は、お客様が開始したデバイス検出プロセスに ACK で通知します。

  7. リソースサーバーは、エンドユーザーが所有および運用するデバイスのリストを送信します。

  8. コネクタは、各エンドユーザーデバイスを、AWS IoT Device Management に必要なデバイス形式のマネージド統合に変換ConnectorDeviceIdConnectorDeviceNameします。これには、、および各デバイスの機能レポートが含まれます。

  9. C2C コネクタは、検出されたデバイスの所有者もUserId提供します。デバイスリストの一部として、またはリソースサーバーの実装に応じて別の呼び出しで、リソースサーバーから取得できます。

  10. 次に、C2C コネクタは認証情報を使用し、オペレーションパラメータを「DEVICE_DISCOVERY」に設定 AWS アカウント してSendConnectorEvent、SigV4 経由で AWS IoT Device Management API のマネージド統合 を呼び出します。AWS IoT Device Management のマネージド統合に送信されるデバイスのリスト内の各デバイスは、connectorDeviceIdconnectorDeviceName、 などのデバイス固有のパラメータで表されますcapabilityReport

    1. リソースサーバーのレスポンスに基づいて、AWS IoT Device Management のマネージド統合を適宜通知する必要があります。

      たとえば、リソースサーバーがエンドユーザーの検出されたデバイスのリストにページ分割されたレスポンスを持っている場合、ポーリングごとに statusCodeパラメータを にして、個々のDEVICE_DISCOVERYオペレーションイベントを送信できます3xx。デバイス検出がまだ進行中の場合は、ステップ 5、6、7 を繰り返します。

  11. のマネージド統合は、検出されたエンドユーザーのデバイスに関する通知を顧客 AWS IoT Device Management に送信します。

  12. C2C コネクタが値 200 で更新された statusCodeパラメータでDEVICE_DISCOVERYオペレーションイベントを送信すると、マネージド統合はデバイス検出ワークフローの完了をお客様に通知します。

    重要

    必要に応じて、ステップ 7~11 をステップ 6 の前に実行できます。たとえば、サードパーティープラットフォームにエンドユーザーデバイスを一覧表示する API がある場合、C2C コネクタ Lambda が一般的な ACK で応答SendConnectorEventする前に、DEVICE_DISCOVERY イベントを で送信できます。

デバイス検出の C2C コネクタ要件

次のリストは、デバイス検出を成功させるための C2C コネクタの要件の概要を示しています。

  • C2C コネクタ Lambda a は、AWS IoT Device Management のマネージド統合からのデバイス検出リクエストメッセージを処理して、AWS.DiscoverDevicesオペレーションを処理できます。

  • C2C コネクタは、コネクタの登録 AWS アカウント に使用される の認証情報を使用して、SigV4 経由で AWS IoT Device Management APIs のマネージド統合を呼び出すことができます。

デバイス検出プロセス

次の手順では、AWS IoT Device Management の C2C コネクタとマネージド統合を使用したデバイス検出プロセスの概要を説明します。 AWS IoT Device Management

デバイス検出プロセス
  1. マネージド統合は、デバイス検出をトリガーします。

    1. 次の JSON ペイロードDiscoverDevicesを使用して POST リクエストを に送信します。

      /DiscoverDevices { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678" } }
  2. Connector は検出を承認します。

    1. コネクタは、次の JSON レスポンスを使用して確認を送信します。

      { "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }
  3. コネクタは Device Discovery Event を送信します。

    1. 次の JSON ペイロード/connector-event/{your_connector_id}を使用して POST リクエストを に送信します。

      AWS API - /SendConnectorEvent URI – POST /connector-event/{your_connector_id} { "UserId": "6109342", "Operation": "DEVICE_DISCOVERY", "OperationVersion": "1.0", "StatusCode": 200, "DeviceDiscoveryId": "12345678", "ConnectorId": "Your_connector_Id", "Message": "Device discovery for discovery-job-id '12345678' successful", "Devices": [ { "ConnectorDeviceId": "Your_Device_Id_1", "ConnectorDeviceName": "Your-Device-Name", "CapabilityReport": { "nodeId":"1", "version":"1.0.0", "endpoints":[{ "id":"1", "deviceTypes":["Camera"], "clusters":[{ "id":"0x0006", "revision":1, "attributes":[{ "id":"0x0000", }], "commands":["0x00","0x01"], "events":["0x00"] }] }] } } ] }

DISCOVER_DEVICES イベントの CapabilityReport を作成する

上記のイベント構造に示すように、 DISCOVER_DEVICES イベントで報告されたすべてのデバイスは、AWS.DiscoverDevicesオペレーションへの応答として機能し、対応するデバイスの機能を記述するために CapbilityReport を必要とします。CapabilityReport」は、AWS IoT Device Management デバイス機能のマネージド統合を Matter 準拠の形式で指示します。「CapabilityReport」には、次のフィールドを指定する必要があります。

  • nodeId、文字列: 以下を含むデバイスノードの識別子 endpoints

  • version、文字列: コネクタ開発者によって設定されたこのデバイスノードのバージョン

  • endpoints、List<Cluster>: このデバイスエンドポイントでサポートされている Matter データモデルの AWS 実装のリスト。

    • id、文字列: コネクタ開発者によって設定されたエンドポイント識別子

    • deviceTypes、List<String>: このエンドポイントがキャプチャするデバイスタイプのリスト、つまり「カメラ」。

    • clusters、List<Cluster>: このエンドポイントがサポートする Matter データモデルの AWS 実装のリスト。

      • id、文字列: Matter 標準で定義されているクラスター識別子。

      • revision、整数: Matter 標準で定義されているクラスターリビジョン番号。

      • attributes、Map<String、Object>: 属性識別子とそれに対応する現在のデバイス状態値のマップ。識別子と有効な値は問題標準で定義されています。

        • id、文字列: Matter データモデルの AWS 実装で定義される属性 ID。

        • value、オブジェクト: 属性 ID で定義された属性の現在の値。「値」のタイプは、属性によって異なる場合があります。value フィールドは各属性に対してオプションであり、検出中にコネクタ Lambda が現在の状態を判断できる場合にのみ含める必要があります。

      • commands、List<String>: Matter 標準で定義されているように、このクラスターでサポートされているコマンド IDs のリスト。

      • events、List<String>: Matter 標準で定義されているように、このクラスターでサポートされているイベント IDs のリスト。

サポートされている機能の現在のリストと AWS Matter Data Model の対応する実装については、Data Model ドキュメントの最新リリースを参照してください。