实施 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 IoT Device Management 会生成一个参考标识符,该标识符调deviceDiscoveryId用 AWS 客户生成的设备发现请求。

  3. 的托管集成使用AWS.DiscoverDevices操作界面向 C2C 连接器 AWS IoT Device Management 发送设备发现请求,包括有效 OAuthaccessToken的最终用户以及. deviceDiscoveryId

  4. 您的连接器存储deviceDiscoveryId以包含在DEVICE_DISCOVERY活动中。此事件还将包含已发现的最终用户设备的列表,并且必须将其发送到 AWS IoT Device Management 的托管集成,并将 SendConnectorEvent API 作为DEVICE_DISCOVERY事件发送。

  5. 您的 C2C 连接器应调用资源服务器来获取最终用户拥有的所有设备。

  6. 您的 C2C 连接器 Lambda 会响应 Lambda 调用 invokeFunction (),并向 AWS IoT Device Management 的托管集成发出 ACK 响应,作为操作的初始响应。AWS.DiscoverDevices托管集成通过 ACK 通知客户已启动的设备发现流程。

  7. 您的资源服务器会向您发送最终用户拥有和操作的设备列表。

  8. 您的连接器将每台最终用户设备转换为 AWS IoT Device Management 所需设备格式的托管集成 ConnectorDeviceIdConnectorDeviceName,包括每台设备的能力报告。

  9. C2C 连接器还提供UserId已发现设备所有者的信息。它可以作为设备列表的一部分从您的资源服务器中检索,也可以根据您的资源服务器实现情况在单独的调用中检索。

  10. 接下来,您的 C2C 连接器将使用 AWS 账户 凭证并将操作参数设置为 “DEVICE_DISCOVERY”SendConnectorEvent,通过 sigv4 调用 AWS IoT 设备管理 API 的托管集成。发送到 AWS IoT Device Management 托管集成的设备列表中的每台设备都将由设备特定的参数表示connectorDeviceId,例如connectorDeviceName、和 a。capabilityReport

    1. 根据您的资源服务器响应,您需要相应地通知 AWS IoT Device Management 的托管集成。

      例如,如果您的资源服务器对最终用户发现的设备列表进行了分页响应,那么对于每次轮询,您都可以发送一个statusCode参数为的3xx单个DEVICE_DISCOVERY操作事件。如果您的设备发现仍在进行中,请重复步骤 5、6 和 7。

  11. 的托管集成会向客户 AWS IoT Device Management 发送有关已发现最终用户设备的通知。

  12. 如果您的 C2C 连接器发送的DEVICE_DISCOVERY操作事件statusCode参数更新为 200,则托管集成将通知客户设备发现工作流程已完成。

    重要

    如果需要,步骤 7 到 11 可以在步骤 6 之前进行。例如,如果您的第三方平台有一个用于列出最终用户设备的 API,则可以在 C2C 连接器 Lambda 使用典型的 ACK 响应SendConnectorEvent之前发送 DEVICE_DISCOVERY 事件。

设备发现的 C2C 连接器要求

以下列表概述了 C2C 连接器的要求,以便于成功发现设备。

  • C2C 连接器 Lambda a 可以处理来自 AWS IoT Device Management 托管集成的设备发现请求消息并处理操作。AWS.DiscoverDevices

  • 您的 C2C 连接器可以使用用于注册连接器的凭证 APIs 通过 Sigv4 调用 AWS IoT Device Management 的 AWS 账户 托管集成。

设备发现过程

以下步骤概述了使用您的 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. 连接器确认发现:

    1. 连接器发送带有以下 JSON 响应的确认:

      { "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }
  3. 连接器发送设备发现事件:

    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_D CapabilityReport EVICES 事件构造一个

如上面定义的事件结构所示,在 DISCOVER_DEVICES 事件中报告的每台设备作为对AWS.DiscoverDevices操作的响应,都需要 CapbilityReport 来描述相应设备的功能。`CapabilityReport`以符合 Matter 的格式表示 AWS IoT Device Management 设备功能的托管集成。` CapabilityReport`中必须提供以下字段:

  • nodeId,字符串:包含以下内容的设备节点的标识符 endpoints

  • version,String:此设备节点的版本,由连接器开发者设置

  • endpoints,<Cluster>列表:此设备端点支持的案件数据模型 AWS 实现列表。

    • id,字符串:连接器开发者设置的端点标识符

    • deviceTypes,<String>列表:此端点捕获的设备类型列表,即 “摄像头”。

    • clusters,Lis <Cluster>t:此端点支持的案件数据模型的 AWS 实现列表。

      • id,字符串:Matter 标准定义的集群标识符。

      • revision,整数:Matter 标准定义的聚类修订号。

      • attributes,<String, Object> 地图:属性标识符及其对应的当前设备状态值的映射,标识符和有效值由问题标准定义。

        • id,字符串:案件数据模型的 AWS 实现所定义的属性 ID。

        • value,对象:由属性 ID 定义的属性的当前值。“值” 的类型可以根据属性而变化。该value字段对于每个属性都是可选的,只有当您的连接器 lambda 可以在发现期间确定当前状态时,才应包含该字段。

      • commands,<String>列表:按照 Matter 标准的定义,此集群 IDs 支持的命令列表。

      • events,<String>列表:根据 Matter 标准的定义,此集群 IDs 支持的事件列表。

有关物质数据模型支持的功能及其相应AWS 实现的当前列表,请参阅最新版本的数据模型文档。