읽기 트랜잭션

거래 읽기

Matter에서 노드와 상호작용할 때의 첫 번째 사용 사례 중 하나는 센서의 온도 값과 같이 다른 노드에서 속성을 읽는 것입니다.Matter 이러한 상호작용에서 먼저 실행해야 하는 작업은 읽기 요청 작업입니다.

읽기 트랜잭션의 작업 시퀀스
그림 1: 거래 읽기

읽기 요청 작업

방향: 이니시에이터 -> 타겟

이 작업에서 이니시에이터는 다음을 제공하는 타겟을 쿼리합니다.

  • 속성 요청: 타겟의 속성 0개 이상의 목록입니다. 이 목록은 타겟의 요청된 속성에 대한 경로 0개 이상으로 구성됩니다.
  • 이벤트 요청: 타겟의 요청된 이벤트에 대한 경로 목록(0개 이상)

타겟이 읽기 요청 작업을 수신하면 요청된 정보로 보고서 데이터 작업을 어셈블합니다.

보고서 데이터 작업

방향: 타겟 -> 이니시에이터

이 작업에서 타겟은 다음으로 응답합니다.

  • 속성 보고서: 읽기 작업 요청에서 요청된 보고된 속성 0개 이상의 목록입니다.
  • 이벤트 보고서: 보고된 이벤트 0개 이상의 목록입니다.
  • 응답 표시 안함: 이 작업에 대한 상태 응답을 표시하지 않을지 여부를 결정하는 플래그입니다.
  • 구독 ID: 이 보고서가 구독 거래의 일부인 경우 구독 거래를 식별하는 데 사용되는 정수를 포함해야 합니다.

상태 응답 작업

방향: 타겟 -> 이니시에이터 또는 이니시에이터 -> 타겟

이니시에이터가 요청된 데이터를 수신하면 기본적으로 상태 응답 작업을 생성해야 합니다. 이 작업은 보고된 데이터의 수신을 확인하는 이니시에이터에서 전송됩니다. 상태 응답 표시 안함 플래그가 설정된 경우 이니시에이터는 상태 응답 작업을 전송해서는 안 됩니다.

이니시에이터가 상태 응답 작업을 전송하거나 이니시에이터가 응답 표시 안함 플래그가 사용 설정된 보고서 데이터 작업을 수신하면 읽기/보고서 쿼리가 완료됩니다.

상태 응답 작업에는 작업 성공을 확인하거나 실패 코드를 표시하는 상태 필드가 포함됩니다.

읽기 제한

읽기 요청 작업 및 보고서 데이터 작업은 Unicast-전용입니다. 또한 이러한 요청의 경로는 노드 그룹을 타겟팅할 수 없습니다.

상태 응답 작업은 Unicast-전용이며 그룹캐스트에 대한 응답으로 생성할 수 없습니다.

구독 거래

정기 결제 거래의 작업 순서
그림 2: 구독 거래

구독 요청 작업

방향: 이니시에이터 -> 타겟

이니시에이터는 단일 읽기 요청 작업 외에도 속성 또는 이벤트의 주기적 업데이트를 구독할 수 있습니다. 따라서 구독 거래 를 따르는 주기적 데이터 업데이트의 결과로 동일한 보고서 데이터 작업을 생성할 수 있습니다.

구독 상호작용은 두 노드 간의 관계를 만듭니다. 이 관계에서 타겟은 이니시에이터에 보고서 데이터 작업을 주기적으로 생성합니다. 이니시에이터는 구독자 이고 타겟은 게시자 입니다.

구독 요청 작업에는 다음이 포함됩니다.

  • 최소 간격 하한: 보고서 간의 최소 간격입니다.
  • 최대 간격 상한: 보고서 간의 최대 간격입니다.
  • 속성 보고서: 읽기 작업 요청에서 요청된 보고된 속성 0개 이상의 목록입니다.
  • 이벤트 보고서: 보고된 이벤트 0개 이상의 목록입니다.

구독 요청 후 타겟은 보고된 데이터의 첫 번째 배치를 포함하는 보고서 데이터 작업으로 이니시에이터에 응답합니다. 이 데이터는 준비된 게시 데이터 입니다.

그러면 이니시에이터는 타겟에 전송된 상태 응답 작업으로 보고서 데이터 작업을 확인합니다. 타겟이 오류가 없음을 보고하는 상태 응답 작업을 수신하면 구독 응답 작업을 전송합니다.

타겟은 협상된 간격으로 보고서 데이터 작업을 주기적으로 전송하고 이니시에이터는 구독이 손실되거나 취소될 때까지 이러한 작업에 응답합니다.

구독 응답 작업

방향: 타겟 -> 이니시에이터

이 작업은 구독 거래의 마지막 작업이며 프로세스를 완료합니다. 다음이 포함됩니다.

  • 구독 ID: 구독을 식별하는 정수입니다.
  • 최소 간격: 보고서 간의 최종, 결정된 최소 간격입니다.
  • 최대 간격: 보고서 간의 최종, 결정된 최대 간격입니다.

구독 제한

  • 구독 요청 작업 및 구독 응답 작업은 Unicast-전용 작업입니다.
  • 구독 상호작용의 모든 보고서 데이터 작업은 동일한 구독 ID를 가져야 합니다.
  • 구독자가 작업 간의 최대 협상 간격 내에 보고서 데이터 작업을 수신하지 않으면 구독이 종료됩니다.
  • 이전 규칙의 결과로 게시자는 주기적 보고서 데이터 작업 전송을 중지하여 구독 상호작용을 종료할 수 있습니다.
  • 구독자는 INACTIVE_SUBSCRIPTION 상태 코드로 보고서 데이터 작업에 응답하여 구독 상호작용을 종료할 수 있습니다.