本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 SendConnectorEvent API 发送设备事件
设备启动的事件概述
虽然 SendConnectorEvent
API 用于异步响应AWS.SendCommand
和AWS.DiscoverDevices
操作,但它也用于将任何设备启动的事件通知托管集成。设备启动的事件可以定义为设备在没有用户启动命令的情况下生成的任何事件。这些设备事件可能包括但不限于设备状态变化、运动检测、电池电量等。您可以使用带操作 DEV IC E_EVENT 的 SendConnectorEvent
API 将这些事件发送回托管集成。
以下部分以安装在家中的智能摄像头为例,进一步说明这些事件的工作流程:

设备事件工作流程
-
您的摄像机会检测到动作,并为此生成一个发送到您的资源服务器的事件。
-
您的资源服务器处理该事件并将其发送到您的 C2C 连接器。
-
您的连接器会将此事件转换为 AWS IoT Device Manag
DEVICE_EVENT
ement 接口的托管集成。 -
您的 C2C 连接器使用操作设置为 “DEVICE_EVENT”
SendConnectorEvent
的 API 将此设备事件发送到托管集成。 -
托管集成可识别相关客户,并将此事件转发给客户。
-
客户收到此事件并通过用户标识符将其显示给用户。
有关 SendConnectorEvent
API 操作的更多信息,请参阅 SendConnectorEvent
AWS IoT Device Management 托管集成 API 参考指南。
设备启动的事件要求
以下是设备启动的事件的一些要求。
-
您的 C2C 连接器资源应该能够从您的资源服务器接收异步设备事件
-
您的 C2C 连接器资源应该能够使用用于注册 C2C 连接器的 AWS 凭证通过 Sigv4 调用 AWS IoT 设备管理服务 API 的 AWS 账户 托管集成。
以下示例演示了连接器通过 API 发送源于设备的事件: SendConnectorEvent
AWS-API: /SendConnectorEvent URI: POST /connector-event/{
Your-Connector-Id
} { "UserId": "Your-End-User-ID", "Operation": "DEVICE_EVENT", "OperationVersion": "1.0", "StatusCode": 200, "Message": None, "ConnectorDeviceId": "Your_Device_Id
", "MatterEndpoint": { "id": "1", "clusters": [{ "id": "0x0202", "attributes": [ { "0x0000": "3" } ] }] }] }
从以下示例中,我们可以看到以下内容:
-
这来自 ID 等于 1 的设备端点。
-
与该事件相关的设备功能的集群 ID 为 0x0202,与风扇控制问题集群有关。
-
已更改的属性的 ID 为 0x000,与集群中的风扇模式枚举有关。它已更新为值 3,与 High 的值有关。
-
由于
connectorId
是云服务在创建时返回的参数,因此 Connectors 必须使用查询 GetCloudConnector 和筛选依据lambdaARN
。使用Lambda.get_function_url_config
API 查询 lambda 自己的ARN
值。这CloudConnectorId
允许在 lambda 中动态访问,而不是像之前那样进行静态配置。