View a markdown version of this page

AWS.DiscoverDevices 작업 구현 - 에 대한 관리형 통합 AWS IoT Device Management

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS.DiscoverDevices 작업 구현

디바이스 검색은 최종 사용자가 소유한 물리적 디바이스의 목록을 관리형 통합에서 유지 관리하는 최종 사용자 디바이스의 디지털 표현과 일치시킵니다 AWS IoT Device Management. 최종 사용자가 소유한 디바이스에서 AWS 고객이 수행합니다. OAuth 2.0의 경우 계정 연결이 완료된 후 발생합니다. 일반 권한 부여의 경우 계정 연결이 생성된 후 발생할 수 있습니다.

디바이스 검색은 용 Managed Integrations AWS IoT Device Management 가 커넥터를 호출하여 디바이스 검색 요청을 시작하는 비동기 프로세스입니다. C2C 커넥터는 Managed Integrations에서 생성한 참조 식별자(라고 함deviceDiscoveryId)와 함께 검색된 최종 사용자 디바이스 목록을 비동기적으로 반환합니다 AWS IoT Device Management.

AWS.DiscoverDevices 워크플로

다음 다이어그램은 최종 사용자와 관리형 통합 간의 디바이스 검색 워크플로를 보여줍니다 AWS IoT Device Management.

AWS.DiscoverDevices 워크플로
워크플로우 단계
  1. 고객이 디바이스 검색 시작 - 고객이 최종 사용자를 대신하여 디바이스 검색 프로세스를 시작합니다.

  2. 관리형 통합은 참조 ID 생성 - 용 관리형 통합은 고객이 생성한 디바이스 검색 요청에 deviceDiscoveryId 대해 라는 참조 식별자를 AWS IoT Device Management AWS 생성합니다.

  3. 디바이스 검색 요청 전송 - 용 관리형 통합은 권한 부여 정보(OAuth 액세스 토큰 또는 AWS Secrets Manager 참조)와를 포함한 AWS.DiscoverDevices 작업 인터페이스를 사용하여 디바이스 검색 요청을 C2C 커넥터로 AWS IoT Device Management 보냅니다deviceDiscoveryId.

  4. 커넥터는 deviceDiscoveryId를 저장합니다. 커넥터는 DEVICE_DISCOVERY 이벤트에 포함할 deviceDiscoveryId를 저장합니다. 이 이벤트에는 검색된 최종 사용자의 디바이스 목록도 포함되며 API를 DEVICE_DISCOVERY 이벤트 AWS IoT Device Management 로 사용하여에 대한 관리형 통합SendConnectorEvent으로 전송해야 합니다.

  5. 커넥터 호출 리소스 서버 - C2C 커넥터는 리소스 서버를 호출하여 최종 사용자가 소유한 모든 디바이스를 가져와야 합니다.

  6. 커넥터는 ACK로 응답 - C2C 커넥터 Lambda는 AWS.DiscoverDevices Lambda 호출(invokeFunction)에 응답하고 ACK 응답은에 대한 관리형 통합에 다시 응답하며 AWS IoT Device Management작업에 대한 초기 응답 역할을 합니다. 용 관리형 통합은 ACK를 통해 고객에게 시작된 디바이스 검색 프로세스에 대해 AWS IoT Device Management 알립니다.

  7. 리소스 서버가 디바이스 목록 반환 - 리소스 서버가 최종 사용자가 소유하고 운영하는 디바이스 목록을 전송합니다.

  8. 디바이스 형식 변환 - 커넥터는 각 최종 사용자 디바이스를 각 디바이스에 대한 및 ConnectorDeviceId ConnectorDeviceName 기능 보고서를 포함하여 AWS IoT Device Management 필요한 디바이스 형식에 대한 관리형 통합으로 변환합니다.

  9. UserId 제공 - C2C 커넥터는 검색된 디바이스 소유자UserId의 도 제공합니다. 리소스 서버 구현에 따라 디바이스 목록의 일부로 또는 별도의 호출로 리소스 서버에서 검색할 수 있습니다.

  10. SendConnectorEvent API 호출 - 다음으로 C2C 커넥터는 자격 AWS 계정 증명을 사용하고 작업 파라미터가 "DEVICE_DISCOVERY"로 설정된 상태에서 SigV4를 통해 AWS IoT Device Management API용 Managed IntegrationsSendConnectorEvent,를 호출합니다. 용 관리형 통합으로 전송된 디바이스 목록의 각 디바이스는 connectorDeviceId, connectorDeviceName및와 같은 디바이스별 파라미터로 AWS IoT Device Management 표시됩니다capabilityReport.

    • 리소스 서버 응답에 따라 이에 따라 AWS IoT Device Management Managed Integrations에 알려야 합니다.

    • 예를 들어 리소스 서버에 최종 사용자의 검색된 디바이스 목록에 대한 페이지 매김 응답이 있는 경우 각 폴링에 대해 statusCode 파라미터를 사용하여 개별 DEVICE_DISCOVERY 작업 이벤트를 보낼 수 있습니다3xx. 디바이스 검색이 아직 진행 중인 경우 5, 6, 7단계를 반복합니다.

  11. 관리형 통합은 고객에게 알림 - 용 관리형 통합은 고객에게 검색된 최종 사용자의 디바이스에 대한 알림을 AWS IoT Device Management 보냅니다.

  12. 완료 알림 - C2C 커넥터가 statusCode 파라미터가 200으로 업데이트된 DEVICE_DISCOVERY 작업 이벤트를 전송하는 경우 용 AWS IoT Device Management 관리형 통합은 고객에게 디바이스 검색 워크플로 완료를 알립니다.

중요

원하는 경우 6단계 전에 7~11단계를 수행할 수 있습니다. 예를 들어 타사 플랫폼에 최종 사용자의 디바이스를 나열하는 API가 있는 경우 C2C 커넥터 Lambda가 일반적인 ACK로 응답SendConnectorEvent하기 전에 DEVICE_DISCOVERY 이벤트를 로 전송할 수 있습니다.

디바이스 검색을 위한 C2C 커넥터 요구 사항

다음 목록은 성공적인 디바이스 검색을 용이하게 하기 위한 C2C 커넥터의 요구 사항을 간략하게 설명합니다.

  • C2C 커넥터 Lambda는 용 Managed Integrations의 디바이스 검색 요청 메시지를 처리하고 AWS.DiscoverDevices 작업을 AWS IoT Device Management 처리할 수 있습니다.

  • C2C 커넥터는 커넥터 등록에 AWS 계정 사용되는의 자격 증명을 사용하여 SigV4를 통해 Managed Integrations for AWS IoT Device Management APIs를 호출할 수 있습니다.

디바이스 검색 프로세스

1단계: 관리형 통합으로 디바이스 검색 트리거

권한 부여 유형에 따라 다음 JSON 페이로드 중 하나를 DiscoverDevices 사용하여에 POST 요청을 보냅니다.

OAuth 2.0 요청:

/DiscoverDevices { "header": { "auth": { "token": "ashriu32yr97feqy7afsaf", "type": "OAuth2.0" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
참고

connectorDeviceIdList 파라미터는 검색할 디바이스 IDs 수 있는 선택적 필터입니다. 비어 있으면([]) 계정과 연결된 모든 디바이스가 검색됩니다. 특정 디바이스 IDs로 채워지면 해당 디바이스만 검색 응답에 포함됩니다.

일반 권한 부여 요청:

/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
참고

connectorDeviceIdList 파라미터는 검색할 디바이스 IDs 수 있는 선택적 필터입니다. 비어 있으면([]) 계정과 연결된 모든 디바이스가 검색됩니다. 특정 디바이스 IDs로 채워지면 해당 디바이스만 검색 응답에 포함됩니다.

일반 권한 부여 요청:

/DiscoverDevices { "header": { "auth": { "secretsManager": { "arn": "string", "versionId": "string" }, "type": "GeneralAuthorization" } }, "payload": { "operationName": "AWS.DiscoverDevices", "operationVersion": "1.0", "connectorId": "Your-Connector-Id", "deviceDiscoveryId": "12345678", "connectorDeviceIdList": [] } }
참고

connectorDeviceIdList 파라미터는 검색할 디바이스 IDs 수 있는 선택적 필터입니다. 비어 있으면([]) 계정과 연결된 모든 디바이스가 검색됩니다. 특정 디바이스 IDs로 채워지면 해당 디바이스만 검색 응답에 포함됩니다.

2단계: 커넥터에서 검색 승인

커넥터는 다음 JSON 응답과 함께 승인을 전송합니다.

{ "header": { "responseCode":200 }, "payload": { "responseMessage": "Discovering devices for discovery-job-id '12345678' with connector-id `Your-Connector-Id`" } }

3단계: 커넥터가 디바이스 검색 이벤트 전송

다음 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"] }] }] } } ] }

검색된 디바이스에 브랜드 및 모델 채우기

C2C 커넥터는 선택적으로 DEVICE_DISCOVERY 이벤트의 각 디바이스에 대한 DeviceMetadata 객체를 포함하여 디바이스의 브랜드와 모델을 보고할 수 있습니다. 그러면 이러한 값이 ListDiscoveredDevices 및 ListManagedThings 응답에 반환됩니다.

각 디바이스 항목 및 맵에 DeviceMetadata 객체를 포함합니다.

  • DeviceMetadata.Brand (문자열) → Brand

  • DeviceMetadata.Model (문자열) → Model

다음 예제에서는가 DeviceMetadata 포함된 디바이스 항목을 보여줍니다.

{ "ConnectorDeviceId": "Your_Device_Id_1", "ConnectorDeviceName": "Your-Device-Name", "CapabilityReport": { ... }, "DeviceMetadata": { "Brand": "ExampleBrand", "Model": "ExampleModel-X1" } }

두 키 모두 대/소문자를 구분하는 문자열입니다. 를 생략하거나DeviceMetadata, 개별 키를 생략하거나, 문자열이 아닌 값을 제공하는 경우 디바이스를 검색할 때 해당 필드를 사용할 수 없습니다.

DISCOVER_DEVICES 이벤트에 대한 CapabilityReport 구성

위에 정의된 이벤트 구조에서 볼 수 있듯이 AWS.DiscoverDevices 작업에 대한 응답으로 사용되는 DISCOVER_DEVICES 이벤트에서 보고된 모든 디바이스에는 해당 디바이스의 기능을 설명하는 CapbilityReport가 필요합니다. 'CapabilityReport'는 AWS IoT Device Management 디바이스 기능에 대한 관리형 통합을 Matter 준수 형식으로 알려줍니다.

CapabilityReport의 필수 필드
  • nodeId, 문자열: 다음을 포함하는 디바이스 노드의 식별자입니다. endpoints

  • version, 문자열: 커넥터 개발자가 설정한이 디바이스 노드의 버전

  • endpoints, List<Cluster>:이 디바이스 엔드포인트에서 지원하는 Matter Data Model의 AWS 구현 목록입니다.

    • id, 문자열: 커넥터 개발자가 설정한 엔드포인트 식별자

    • deviceTypes, List<String>:이 엔드포인트가 캡처하는 디바이스 유형 목록, 즉 "Camera".

    • clusters, List<Cluster>:이 엔드포인트가 지원하는 Matter Data Model의 AWS 구현 목록입니다.

      • id, 문자열: Matter 표준에 정의된 클러스터 식별자입니다.

      • revision, 정수: Matter 표준에 정의된 클러스터 개정 번호입니다.

      • attributes, 맵<문자열, 객체>: 항목 표준에서 정의한 식별자 및 유효한 값과 함께 속성 식별자 및 해당 현재 디바이스 상태 값의 맵입니다.

        • id, 문자열: Matter Data Model의 AWS 구현에 의해 정의된 속성 ID입니다.

        • value, 객체: 속성 ID로 정의된 속성의 현재 값입니다. '값' 유형은 속성에 따라 변경될 수 있습니다. value 필드는 각 속성에 대해 선택 사항이며 커넥터 Lambda가 검색 중에 현재 상태를 확인할 수 있는 경우에만 포함되어야 합니다.

      • commands, List<String>: Matter 표준에 정의된 대로이 클러스터를 지원하는 명령 IDs.

      • events, List<String>: Matter 표준에 정의된 대로이 클러스터를 지원하는 이벤트 IDs.

지원되는 기능의 현재 목록과 AWS Matter Data Model의 해당 구현은 Data Model 설명서의 최신 릴리스를 참조하세요.