기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS.SendCommand 작업 구현
AWS.SendCommand
작업을 통해 AWS IoT Device Management의 관리형 통합은 최종 사용자가 AWS 고객을 통해 시작한 명령을 리소스 서버로 전송할 수 있습니다. 리소스 서버는 각 유형에 자체 응답 모델이 있는 여러 유형의 디바이스를 지원할 수 있습니다. 명령 실행은 AWS IoT Device Management의 관리형 통합이 'traceId'를 사용하여 명령 실행 요청을 보내는 비동기 프로세스로, 커넥터는 'SendConnectorEvent' API를 통해 관리형 통합으로 다시 전송되는 명령 응답에 포함됩니다. AWS IoT Device Management의 관리형 통합은 리소스 서버가 명령이 수신되었음을 승인하지만 명령이 실행되었음을 반드시 나타내는 것은 아닙니다.
다음 다이어그램은 최종 사용자가 집의 조명을 켜려고 하는 예제와 함께 명령 실행 흐름을 보여줍니다.

디바이스 명령 실행 워크플로
-
최종 사용자는 AWS 고객의 애플리케이션을 사용하여 조명을 켜는 명령을 보냅니다.
-
고객은 최종 사용자의 디바이스 정보와 함께 AWS IoT Device Management의 관리형 통합에 명령 정보를 전달합니다.
-
관리형 통합은 명령 응답을 서비스로 다시 보내는 동안 커넥터가 사용할 "traceId"를 생성합니다.
-
AWS IoT Device Management의 관리형 통합은
AWS.SendCommand
작업 인터페이스를 사용하여 명령 요청을 커넥터로 보냅니다.-
이 인터페이스에서 정의한 페이로드는 디바이스 식별자, Matter endpoints/clusters/commands으로 공식화된 디바이스 명령, 최종 사용자의 액세스 토큰 및 기타 필수 파라미터로 구성됩니다.
-
-
커넥터는 명령 응답에
traceId
포함할를 저장합니다.-
커넥터는 관리형 통합 명령 요청을 리소스 서버의 적절한 형식으로 변환합니다.
-
-
커넥터는 제공된 최종 사용자의 액세스 토큰
UserId
에서 가져와 명령과 연결합니다.-
는 별도의 호출을 사용하여 리소스 서버에서 검색하거나 JWT 및 유사한 토큰의 경우 액세스 토큰에서 추출할
UserId
수 있습니다. -
구현은 리소스 서버 및 액세스 토큰 세부 정보에 따라 달라집니다.
-
-
커넥터는 리소스 서버를 호출하여 최종 사용자의 조명을 "켜기" 합니다.
-
리소스 서버는 디바이스와 상호 작용합니다.
-
커넥터는 리소스 서버가 명령을 전달한 AWS IoT Device Management의 관리형 통합으로 릴레이되어 초기 동기 명령 응답으로 ACK로 응답합니다.
-
그런 다음 관리형 통합은 이를 고객 애플리케이션으로 다시 릴레이합니다.
-
-
디바이스가 켜지면 리소스 서버에서 해당 디바이스 이벤트를 캡처합니다.
-
리소스 서버가 디바이스 이벤트를 커넥터로 보냅니다.
-
커넥터는 리소스 서버에서 생성된 디바이스 이벤트를 관리형 통합 DEVICE_COMMAND_RESPONSE 이벤트 작업 유형으로 변환합니다.
-
커넥터는 작업을 "DEVICE_COMMAND_RESPONSE"로 사용하여
SendConnectorEvent
API를 호출합니다.-
초기 요청에서 AWS IoT Device Management에 대한 관리형 통합에서
traceId
제공하는를 연결합니다.
-
-
관리형 통합은 고객에게 최종 사용자의 디바이스 상태 변경을 알립니다.
-
고객은 디바이스의 조명이 켜져 있음을 최종 사용자에게 알립니다.
참고
리소스 서버 구성에 따라 실패한 디바이스 명령 요청 및 응답 메시지를 처리하기 위한 로직이 결정됩니다. 여기에는 명령에 동일한 referenceId를 사용하는 메시지 재시도가 포함됩니다.
디바이스 명령 실행을 위한 C2C 커넥터 요구 사항
다음 목록은 성공적인 디바이스 명령 실행을 용이하게 하기 위한 C2C 커넥터의 요구 사항을 간략하게 설명합니다.
-
C2C 커넥터 Lambda는 AWS IoT Device Management에 대한 관리형 통합의
AWS.SendCommand
작업 요청 메시지를 처리할 수 있습니다. -
C2C 커넥터는 리소스 서버로 전송된 명령을 추적하고 적절한 'traceId'로 매핑해야 합니다.
-
C2C 커넥터를 등록하는 데 AWS 계정 사용되는의 AWS 자격 증명을 사용하여 SigV4를 통해 AWS IoT Device Management 서비스 API에 대한 관리형 통합을 호출할 수 있습니다.
-
관리형 통합은 명령을 커넥터로 전송합니다(이전 다이어그램의 4단계 참조).
-
/Send-Command { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.SendCommand", "operationVersion": "1.0", "connectorId": "
Your-Connector-Id
", "connectorDeviceId": "Your_Device_Id
", "traceId": "traceId-3241u78123419", "endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }] } }
-
-
C2C 커넥터 ACK 명령(커넥터가 AWS IoT Device Management Service의 관리형 통합으로 ACK를 전송하는 이전 다이어그램의 7단계 참조).
-
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector '
Your-Connector-Id
' and connector-device-id 'Your_Device_Id
'" } }
-
-
커넥터는 Device Command Response 이벤트를 전송합니다(이전 다이어그램의 11단계 참조).
-
AWS-API: /SendConnectorEvent URI: POST /connector-event/{
Your-Connector-Id
} { "UserId": "End-User-Id", "Operation": "DEVICE_COMMAND_RESPONSE", "OperationVersion": "1.0", "StatusCode": 200, "Message": “Example message”, "ConnectorDeviceId": "Your_Device_Id
", "TraceId": "traceId-3241u78123419", "MatterEndpoint": { "id": "1", "clusters": [{ "id": "0x0202", "attributes": [ { "0x0000": “3” } ], "commands": [ "0xff01": { "0x0000": "3” } ] }] } }
참고
명령 실행으로 인한 디바이스 상태 변경은 SendConnectorEvent API를 통해 해당 DEVICE_COMMAND_RESPONSE 이벤트를 수신할 때까지 AWS IoT Device Management의 관리형 통합에 반영되지 않습니다. 즉, 관리형 통합이 이전 3단계에서 이벤트를 수신할 때까지 커넥터 호출 응답이 성공을 나타내는지 여부에 관계없이 디바이스 상태는 업데이트되지 않습니다.
-
AWS.SendCommand 요청에 포함된 중요 '엔드포인트' 해석
관리형 통합은 디바이스 검색 중에 보고된 디바이스 기능을 사용하여 디바이스가 수락할 수 있는 명령을 결정합니다. 모든 디바이스 기능은 Matter Data Model의 AWS 구현을 통해 모델링되므로 모든 수신 명령은 지정된 클러스터 내의 '명령' 필드에서 파생됩니다. 커넥터는 'endpoints' 필드를 구문 분석하여 해당 Matter 명령을 결정하고 올바른 명령이 디바이스에 도달하도록 변환할 책임이 있습니다. 일반적으로 이는 Matter 데이터 모델을 관련 API 요청으로 변환하는 것을 의미합니다.
명령이 실행된 후 커넥터는 Matter Data Model의 AWS 구현에 의해 정의된 '속성'이 결과적으로 변경되었는지 확인합니다. 그런 다음 이러한 변경 사항은 API와 함께 전송된 API DEVICE_COMMAND_RESPONSE 이벤트를 통해 AWS IoT Device Management의 관리형 통합에 보고됩니다SendConnectorEvent
.
다음 예제 AWS.SendCommand
페이로드에 포함된 '엔드포인트' 필드를 고려합니다.
"endpoints": [{ "id": "1", "clusters": [{ "id": "0x0202", "commands": [{ "0xff01": { "0x0000": "3” } }] }] }]
이 객체에서 커넥터는 다음을 확인할 수 있습니다.
-
엔드포인트 및 클러스터 정보를 설정합니다.
-
엔드포인트를 "1"
id
로 설정합니다.참고
디바이스가 단일 클러스터(예: 켜기/끄기)가 여러 기능을 제어할 수 있도록 여러 엔드포인트를 정의하는 경우(예: 조명 켜기/끄기 및 스트로브 켜기/끄기)이 ID는 명령을 올바른 기능으로 라우팅하는 데 사용됩니다.
-
클러스터를 "0x0202"(팬 컨트롤 클러스터)
id
로 설정합니다.
-
-
명령 정보를 설정합니다.
-
명령 식별자를 "0xff01"(에서 정의한 상태 업데이트 명령)로 설정합니다 AWS.
-
포함된 속성 식별자를 요청에 제공된 값으로 업데이트합니다.
-
-
속성을 업데이트합니다.
-
속성 식별자를 "0x0000"(FanMode 속성)으로 설정합니다.
-
속성 값을 "3"(높은 팬 속도)으로 설정합니다.
-
관리형 통합은 Matter Data Model의 AWS 구현으로 엄격하게 정의되지 않은 두 가지 “사용자 지정” 명령 유형인 ReadState 및 UpdateState 명령을 정의했습니다. Matter 정의 클러스터 속성을 가져오고 설정하기 위해 관리형 통합은 UpdateState(id: 0xff01) 또는 ReadState(id: 0xff02)AWS.SendCommand
와 관련된 명령 IDs와 함께 업데이트하거나 읽어야 하는 속성의 해당 파라미터를 사용하여 커넥터를 전송합니다. Matter Data Model의 해당 AWS 구현에서 변경 가능(업데이트 가능) 또는 검색 가능(읽기 가능)으로 설정된 속성에 대해 모든 디바이스 유형에 대해 이러한 명령을 호출할 수 있습니다.