기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS.SendCommand 작업 구현
AWS.SendCommand 작업을 통해 AWS IoT Device Management 용 관리형 통합은 최종 사용자가 AWS 고객을 통해 시작한 명령을 리소스 서버로 전송할 수 있습니다. 리소스 서버는 여러 유형의 디바이스를 지원할 수 있으며, 각 유형에는 자체 응답 모델이 있습니다.
명령 실행은 용 Managed Integrations가 API를 AWS IoT Device Management 통해 용 Managed Integrations로 다시 전송되는 명령 응답에 traceId커넥터가 포함하는를 사용하여 명령 실행 요청을 AWS IoT Device Management 보내는 비동기 프로세스입니다SendConnectorEvent. 용 관리형 통합은 리소스 서버가 명령이 수신되었음을 확인하는 응답을 반환할 것으로 AWS IoT Device Management 예상하지만 명령이 실행되었음을 반드시 나타내는 것은 아닙니다.
디바이스 명령 실행 워크플로
다음 다이어그램은 최종 사용자가 집의 조명을 켜려고 하는 예제와 함께 명령 실행 흐름을 보여줍니다.
워크플로우 단계
-
최종 사용자가 명령 전송 - 최종 사용자가 AWS 고객의 애플리케이션을 사용하여 조명을 켜는 명령을 보냅니다.
-
고객 릴레이 명령 - 고객은 최종 사용자의 디바이스 정보와 AWS IoT Device Management 함께 용 관리형 통합에 명령 정보를 릴레이합니다.
-
관리형 통합은 traceId 생성 - 용 관리형 통합은 커넥터가 명령 응답을 서비스로 다시 보내는 동안 사용할 "traceId"를 AWS IoT Device Management 생성합니다.
-
커넥터로 전송된 명령 요청 - 용 관리형 통합은
AWS.SendCommand작업 인터페이스를 사용하여 커넥터로 명령 요청을 AWS IoT Device Management 보냅니다.-
이 인터페이스에서 정의한 페이로드는 디바이스 식별자, Matter endpoints/clusters/commands으로 공식화된 디바이스 명령, 최종 사용자의 액세스 토큰 및 기타 필수 파라미터로 구성됩니다.
-
-
커넥터 스토어 traceId - 커넥터는 명령 응답에
traceId포함할를 저장합니다.-
커넥터는 AWS IoT Device Management 명령 요청에 대한 관리형 통합을 리소스 서버의 적절한 형식으로 변환합니다.
-
-
커넥터가 UserId 가져오기 - 커넥터는 제공된 최종 사용자의 액세스 토큰
UserId에서 가져와 명령과 연결합니다.-
는 별도의 호출을 사용하여 리소스 서버에서 검색하거나 JWT 및 유사한 토큰의 경우 액세스 토큰에서 추출할
UserId수 있습니다. -
구현은 리소스 서버 및 액세스 토큰 세부 정보에 따라 달라집니다.
-
-
커넥터가 리소스 서버 호출 - 커넥터가 리소스 서버를 “켜기” 최종 사용자의 조명으로 호출합니다.
-
리소스 서버가 디바이스와 상호 작용 - 리소스 서버가 디바이스와 상호 작용합니다.
-
커넥터는 리소스 서버 AWS IoT Device Management 가 명령을 전달한에 대한 관리형 통합으로 릴레이되어 초기 동기 명령 응답으로 ACK로 응답합니다.
-
AWS IoT Device Management 그런 다음 용 관리형 통합은 이를 고객 애플리케이션으로 다시 릴레이합니다.
-
-
디바이스가 명령 실행 - 디바이스가 켜지면 리소스 서버에서 해당 디바이스 이벤트를 캡처합니다.
-
리소스 서버가 디바이스 이벤트 전송 - 리소스 서버가 디바이스 이벤트를 커넥터로 전송합니다.
-
커넥터 변환 이벤트 - 커넥터는 리소스 서버에서 생성된 디바이스 이벤트를 Managed Integrations for AWS IoT Device Management DEVICE_COMMAND_RESPONSE 이벤트 작업 유형으로 변환합니다.
-
커넥터는 SendConnectorEvent를 호출합니다. 커넥터는 작업을 "DEVICE_COMMAND_RESPONSE"로 사용하여
SendConnectorEventAPI를 호출합니다.-
초기 요청 AWS IoT Device Management 에서 용 관리형 통합에서
traceId제공하는를 연결합니다.
-
-
관리형 통합은 고객에게 알림 - 용 관리형 통합은 고객에게 최종 사용자의 디바이스 상태 변경을 AWS IoT Device Management 알립니다.
-
고객이 최종 사용자에게 알림 - 고객은 디바이스의 조명이 켜져 있음을 최종 사용자에게 알립니다.
참고
리소스 서버 구성에 따라 실패한 디바이스 명령 요청 및 응답 메시지를 처리하기 위한 로직이 결정됩니다. 여기에는 명령에 동일한 referenceId를 사용하는 메시지 재시도가 포함됩니다.
디바이스 명령 실행을 위한 C2C 커넥터 요구 사항
다음 목록은 성공적인 디바이스 명령 실행을 용이하게 하기 위한 C2C 커넥터의 요구 사항을 간략하게 설명합니다.
-
C2C 커넥터 Lambda는 AWS IoT Device Management에 대한 관리형 통합의
AWS.SendCommand작업 요청 메시지를 처리할 수 있습니다. -
C2C 커넥터는 리소스 서버로 전송된 명령을 추적하고 적절한 'traceId'로 매핑해야 합니다.
-
C2C 커넥터를 등록하는 데 AWS 계정 사용되는의 AWS 자격 증명을 사용하여 SigV4를 통해 AWS IoT Device Management 서비스 API에 대한 관리형 통합을 호출할 수 있습니다.
명령 실행 프로세스
1단계: 커넥터에 명령을 보내는 관리형 통합
권한 부여 유형에 따라 다음 페이로드 중 하나를 사용하여 POST 요청을 보냅니다.
OAuth 2.0 요청:
/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” } }] }] }] } }
일반 권한 부여 요청:
/Send-Command { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "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" } }] }] }] } }
2단계: C2C 커넥터 ACK 명령
{ "header":{ "responseCode":200 }, "payload":{ "responseMessage": "Successfully received send-command request for connector 'Your-Connector-Id' and connector-device-id 'Your_Device_Id'" } }
3단계: 커넥터가 디바이스 명령 응답 이벤트 전송
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 때까지의 관리형 통합에 반영되지 않습니다. 즉, 용 Managed Integrations가 이전 3단계에서 이벤트를 AWS IoT Device Management 수신할 때까지 커넥터 호출 응답이 성공을 나타내는지 여부에 관계없이 디바이스 상태는 업데이트되지 않습니다.
중요
디바이스가 상태 변경이 실제로 적용되었음을 확인하지 않는 한 DEVICE_COMMAND_RESPONSE 페이로드에 속성을 포함하지 마십시오. 속성이 없는 DEVICE_COMMAND_RESPONSE는 명령이 타사에 디스패치되었다는 승인 역할을 하며 DEVICE_COMMAND 알림이 발생합니다. 디바이스에서 속성 값이 업데이트되었음을 보고하려면 업데이트된 속성과 함께 별도의 DEVICE_EVENT를 전송합니다. 이러한 구분은 명령이 성공하는 것처럼 보이지만 디바이스가 최근에 연결이 끊어졌을 때와 같이 디바이스가 상태 변경을 수신하지 못한 거짓 긍정을 방지합니다.
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"(높은 팬 속도)으로 설정합니다.
-
Managed Integrations는 Matter Data Model의 AWS 구현으로 엄격하게 정의되지 않은 두 가지 “사용자 지정” 명령 유형인 ReadState 및 UpdateState 명령을 정의했습니다. Matter 정의 클러스터 속성을 가져오고 설정하기 위해 Managed Integrations는 UpdateState(id: 0xff01) 또는 ReadState(id: 0xff02)AWS.SendCommand와 관련된 명령 IDs와 함께 업데이트하거나 읽어야 하는 속성의 해당 파라미터를 사용하여 커넥터를 전송합니다. 이러한 명령은 Matter Data Model의 해당 AWS 구현에서 변경 가능(업데이트 가능) 또는 검색 가능(읽기 가능)으로 설정된 속성의 ANY 디바이스 유형에 대해 호출할 수 있습니다.