本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
實作 AWS.DiscoverDevices 操作
裝置探索會將最終使用者擁有的實體裝置清單與 AWS IoT Device Management 受管整合中維護的那些最終使用者裝置的數位表示法保持一致。只有在使用者與 AWS IoT Device Management 的受管整合之間完成帳戶連結之後, AWS 客戶才會在最終使用者擁有的裝置上執行。裝置探索是一種非同步程序,其中 AWS IoT Device Management 的受管整合會呼叫連接器來啟動裝置探索請求。C2C 連接器會傳回由受管整合產生的與參考識別碼 (稱為 deviceDiscoveryId) 非同步的探索最終使用者裝置清單。
下圖說明最終使用者與 AWS IoT Device Management 受管整合之間的裝置探索工作流程:
AWS.DiscoverDevices 工作流程
-
客戶代表最終使用者啟動裝置探索程序。
-
的受管整合會
deviceDiscoveryId針對客戶產生的裝置探索請求 AWS IoT Device Management 產生名為 的 AWS 參考識別符。 -
的受管整合會使用
AWS.DiscoverDevices操作介面將裝置探索請求 AWS IoT Device Management 傳送至 C2C 連接器,包括accessToken最終使用者的有效 OAuth 以及deviceDiscoveryId。 -
您的連接器存放
deviceDiscoveryId區要包含在DEVICE_DISCOVERY事件中。此事件也會包含探索到的最終使用者裝置清單,而且必須傳送至 AWS IoT Device Management 的受管整合,並將SendConnectorEventAPI 做為DEVICE_DISCOVERY事件。 -
您的 C2C 連接器應呼叫資源伺服器,以擷取最終使用者擁有的所有裝置。
-
您的 C2C 連接器 Lambda 會使用 ACK 回應來回應 Lambda 呼叫 (
invokeFunction),以傳回 AWS IoT Device Management 的受管整合,做為AWS.DiscoverDevices操作的初始回應。受管整合會通知客戶其已啟動裝置探索程序的 ACK。 -
您的資源伺服器會將最終使用者擁有和操作的裝置清單傳送給您。
-
連接器會將每個最終使用者裝置轉換為 AWS IoT Device Management 所需裝置格式的受管整合,包括
ConnectorDeviceIdConnectorDeviceName和每個裝置的功能報告。 -
C2C 連接器也
UserId提供探索到的裝置擁有者。視您的資源伺服器實作而定,它可能會在裝置清單或個別呼叫中從您的資源伺服器擷取。 -
接著,您的 C2C 連接器將使用 AWS 帳戶 登入資料和操作參數設定為 "DEVICE_DISCOVERY"
SendConnectorEvent,透過 SigV4 呼叫 AWS IoT Device Management API 的受管整合 。傳送至 AWS IoT Device Management 受管整合之裝置清單中的每個裝置都會以裝置特定參數表示connectorDeviceName,例如connectorDeviceId、 和capabilityReport。-
根據您的資源伺服器回應,您需要相應地通知 AWS IoT Device Management 的受管整合。
例如,如果您的資源伺服器對最終使用者探索的裝置清單具有分頁回應,則對於每個輪詢,您可以使用
statusCode參數 傳送個別DEVICE_DISCOVERY操作事件3xx。如果您的裝置探索仍在進行中,請重複步驟 5、6 和 7。
-
-
的受管整合 AWS IoT Device Management 會將發現最終使用者裝置的通知傳送給客戶。
-
如果您的 C2C 連接器傳送
DEVICE_DISCOVERY操作事件,並將statusCode參數更新為 200,則受管整合會通知客戶裝置探索工作流程完成。重要
如有需要,步驟 7 到 11 可以在步驟 6 之前進行。例如,如果您的第三方平台具有 API 來列出最終使用者裝置,則可以在 C2C 連接器 Lambda 回應一般 ACK
SendConnectorEvent之前,使用 傳送 DEVICE_DISCOVERY 事件。
裝置探索的 C2C 連接器需求
以下清單概述 C2C 連接器的要求,以促進成功的裝置探索。
-
C2C 連接器 Lambda 可以處理來自 AWS IoT Device Management 受管整合的裝置探索請求訊息,並處理
AWS.DiscoverDevices操作。 -
您的 C2C 連接器可以使用 AWS 帳戶 用於註冊連接器的 憑證,透過 SigV4 呼叫 AWS IoT Device Management APIs 的受管整合。
裝置探索程序
下列步驟概述使用 C2C 連接器的裝置探索程序,以及 AWS IoT Device Management 的受管整合。
裝置探索程序
-
受管整合會觸發裝置探索:
-
DiscoverDevices使用下列 JSON 承載將 POST 請求傳送至 :/DiscoverDevices { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678" } }
-
-
連接器認可探索:
-
連接器會傳送包含下列 JSON 回應的確認:
{ "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }
-
-
連接器會傳送裝置探索事件:
-
/connector-event/使用下列 JSON 承載將 POST 請求傳送至 :{your_connector_id}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
如上述定義的事件結構所示,做為 AWS.DiscoverDevices操作回應的 DISCOVER_DEVICES 事件中所報告的每個裝置,都需要 CapbilityReport 來描述對應的裝置功能。`CapabilityReport` 會以符合事項的格式告知 AWS IoT Device Management 裝置功能的受管整合。下列欄位必須在 ` CapabilityReport ` 中提供:
-
nodeId、字串:包含下列項目之裝置節點的識別符endpoints -
version、字串:此裝置節點的版本,由連接器開發人員設定 -
endpoints、List<Cluster>:此裝置端點支援的事項資料模型 AWS 實作清單。-
id、字串:連接器開發人員設定的端點識別符 -
deviceTypes、List<String>:此端點擷取的裝置類型清單,即「攝影機」。 -
clusters、List<Cluster>:此端點支援的事項資料模型 AWS 實作清單。-
id、字串:依事項標準定義的叢集識別符。 -
revision、整數:依事項標準定義的叢集修訂編號。 -
attributes、Map<String、Object>:屬性識別符及其對應目前裝置狀態值的映射,具有 事件標準定義的識別符和有效值。-
id、字串:Matter Data Model AWS 實作定義的屬性 ID。 -
value、物件:屬性 ID 所定義之屬性的目前值。'value' 的類型可能會根據 屬性而變更。每個屬性的value欄位都是選用的,只有在連接器 Lambda 可以在探索期間判斷目前狀態時才應包含。
-
-
commands,List<String>:依事項標準所定義,支援此叢集的命令 IDs 清單。 -
events、List<String>:依事項標準所定義,支援此叢集的事件 IDs 清單。
-
-
如需目前支援的功能清單及其對應的AWS 事項資料模型實作,請參閱最新版本的資料模型文件。