本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
实施 AWS。 DiscoverDevices 操作
设备发现会将最终用户拥有的物理设备列表与 AWS IoT Device Management 托管集成中维护的最终用户设备的数字表示形式保持一致。只有在用户与 AWS IoT Device Management 的托管集成之间完成账户关联后, AWS 客户才会在最终用户拥有的设备上执行此操作。设备发现是一个异步过程,其中 AWS IoT Device Management 的托管集成会调用连接器来启动设备发现请求。C2C 连接器异步返回已发现的最终用户设备列表,其中包含托管集成生成的参考标识符(称为deviceDiscoveryId
)。
下图说明了 AWS IoT Device Management 的最终用户和托管集成之间的设备发现工作流程:

AWS。 DiscoverDevices 工作流程
-
客户代表最终用户启动设备发现流程。
-
的托管集成 AWS IoT Device Management 会生成一个参考标识符,该标识符调
deviceDiscoveryId
用 AWS 客户生成的设备发现请求。 -
的托管集成使用
AWS.DiscoverDevices
操作界面向 C2C 连接器 AWS IoT Device Management 发送设备发现请求,包括有效 OAuthaccessToken
的最终用户以及.deviceDiscoveryId
-
您的连接器存储
deviceDiscoveryId
以包含在DEVICE_DISCOVERY
活动中。此事件还将包含已发现的最终用户设备的列表,并且必须将其发送到 AWS IoT Device Management 的托管集成,并将SendConnectorEvent
API 作为DEVICE_DISCOVERY
事件发送。 -
您的 C2C 连接器应调用资源服务器来获取最终用户拥有的所有设备。
-
您的 C2C 连接器 Lambda 会响应 Lambda 调用
invokeFunction
(),并向 AWS IoT Device Management 的托管集成发出 ACK 响应,作为操作的初始响应。AWS.DiscoverDevices
托管集成通过 ACK 通知客户已启动的设备发现流程。 -
您的资源服务器会向您发送最终用户拥有和操作的设备列表。
-
您的连接器将每台最终用户设备转换为 AWS IoT Device Management 所需设备格式的托管集成
ConnectorDeviceId
ConnectorDeviceName
,包括每台设备的能力报告。 -
C2C 连接器还提供
UserId
已发现设备所有者的信息。它可以作为设备列表的一部分从您的资源服务器中检索,也可以根据您的资源服务器实现情况在单独的调用中检索。 -
接下来,您的 C2C 连接器将使用 AWS 账户 凭证并将操作参数设置为 “DEVICE_DISCOVERY”
SendConnectorEvent
,通过 sigv4 调用 AWS IoT 设备管理 API 的托管集成。发送到 AWS IoT Device Management 托管集成的设备列表中的每台设备都将由设备特定的参数表示connectorDeviceId
,例如connectorDeviceName
、和 a。capabilityReport
-
根据您的资源服务器响应,您需要相应地通知 AWS IoT Device Management 的托管集成。
例如,如果您的资源服务器对最终用户发现的设备列表进行了分页响应,那么对于每次轮询,您都可以发送一个
statusCode
参数为的3xx
单个DEVICE_DISCOVERY
操作事件。如果您的设备发现仍在进行中,请重复步骤 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 a 可以处理来自 AWS IoT Device Management 托管集成的设备发现请求消息并处理操作。
AWS.DiscoverDevices
-
您的 C2C 连接器可以使用用于注册连接器的凭证 APIs 通过 Sigv4 调用 AWS IoT Device Management 的 AWS 账户 托管集成。
设备发现过程
以下步骤概述了使用您的 C2C 连接器和托管集成 AWS IoT Device Management 的设备发现过程。
设备发现过程
-
托管集成会触发设备发现:
-
使用以下 JSON 负载
DiscoverDevices
向发送 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`" } }
-
-
连接器发送设备发现事件:
-
使用以下 JSON 负载
/connector-event/
向发送 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_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 实现的当前列表,请参阅最新版本的数据模型文档。