기기 데이터 모델

Matter의 기기에는 기기의 기능을 계층적으로 모델링하는 잘 정의된 데이터 모델 (DM)이 있습니다.Matter 이 계층 구조의 최상위에는 기기 가 있습니다.

기기 및 엔드포인트

스마트폰과 홈 어시스턴트를 비롯한 모든 기기는 노드1로 구성됩니다. 노드 는 사용자가 기능적으로 온전하다고 인식할 수 있는 네트워크 내 고유하게 식별 가능하며 주소 지정이 가능한 리소스입니다. Matter의 네트워크 통신은 Matter 노드에서 시작되고 종료됩니다.

노드는 엔드포인트 의 모음입니다. 각 엔드포인트는 특성 세트를 포함합니다. 예를 들어 한 엔드포인트는 조명 기능과 관련이 있고 다른 엔드포인트는 움직임 감지 와 관련이 있으며 또 다른 엔드포인트는 기기 OTA와 같은 유틸리티 를 처리합니다.

기기, 노드, 엔드포인트의 계층 구조
그림 1: 기기, 노드, 엔드포인트

노드 역할

노드 역할 은 관련 동작의 집합입니다. 각 노드에는 하나 이상의 역할이 있을 수 있습니다. 노드 역할은 다음과 같습니다.

  • 커미셔너: 커미셔닝을 실행하는 노드입니다.
  • 컨트롤러: 하나 이상의 노드를 제어할 수 있는 노드입니다. 예로는 Google Home app (GHA), Google Assistant, Google Nest Hub (2nd gen)가 있습니다. 일부 기기 유형(예: 전원 켜기/끄기 조명 스위치)에는 컨트롤러 역할이 있습니다.
  • 제어 대상: 하나 이상의 노드로 제어할 수 있는 노드입니다. 대부분의 기기 유형은 제어 대상이 될 수 있지만 컨트롤러 역할이 있는 일부 기기 유형 은 예외입니다. 예를 들어 전원 켜기/끄기 조명 스위치가 있습니다. 전원 켜기/끄기 조명 스위치는 컨트롤러 될 수 있습니다. 제어 대상이 될 수 없습니다.
  • OTA 제공업체: OTA 소프트웨어 업데이트를 제공할 수 있는 노드입니다.
  • OTA 요청자: OTA 소프트웨어 업데이트를 요청할 수 있는 노드입니다.

클러스터

엔드포인트 내에서 노드에는 하나 이상의 클러스터 가 있습니다. 이는 스마트 플러그의 전원 켜기/끄기 클러스터 또는 조광 가능한 조명 엔드포인트의 수준 제어 클러스터와 같은 특정 기능을 그룹화하므로 기기 계층 구조의 또 다른 단계입니다.

노드에는 여러 엔드포인트가 있을 수도 있으며 각 엔드포인트는 동일한 기능의 인스턴스를 만듭니다. 예를 들어 조명 기구는 개별 조명의 독립적인 제어를 노출할 수 있고 전원 스트립은 개별 소켓의 제어를 노출할 수 있습니다.

속성

마지막 수준에는 노드가 보유하는 상태인 속성이 있습니다. 예를 들어 수준 제3} 클러스터의 현재 수준 속성이 있습니다. 속성은 uint8, 문자열 또는 배열과 같은 다양한 데이터 유형으로 정의될 수 있습니다.

노드, 엔드포인트, 속성, 명령어의 계층 구조
그림 2: 노드, 엔드포인트, 속성, 명령어

명령어

속성 외에도 클러스터에는 실행할 수 있는 작업명령어도 있습니다. 이는 Matter's DM에서 리모트 프로시져 콜과 동일합니다. 명령어는 동사 와 같습니다. 예를 들어 도어락 클러스터의 도어락 이 있습니다. 명령어는 응답과 결과를 생성할 수 있습니다. Matter에서 이러한 응답은 역방향으로 이동하는 명령어이기도 합니다.

이벤트

마지막으로 클러스터에는 과거 상태 전환 기록으로 생각할 수 있는 이벤트도 있을 수 있습니다. 속성은 현재 상태를 나타내는 반면 이벤트는 과거의 저널이며 단조롭게 증가하는 카운터, 타임스탬프, 우선순위를 포함합니다. 이를 통해 상태 전환을 캡처하고 속성으로 쉽게 달성할 수 없는 데이터 모델링을 실행할 수 있습니다.

전체 샘플 기기
그림 3: Matter 기기 상호작용 모델의 계층 구조 샘플

엔드포인트 0유틸리티 클러스터 용으로 예약되어 있습니다. 유틸리티 클러스터는 검색, 주소 지정, 진단, 소프트웨어 업데이트와 같은 엔드포인트의 서비스 기능을 포함하는 특정 클러스터입니다. 반면 애플리케이션 클러스터 는 전원 켜기/끄기 또는 온도 측정과 같은 기본 작업을 지원합니다.

기기 유형

기기 제조업체가 새 기기를 계획할 때 어떤 클러스터 조합을 포함해야 할까요?

Matter 사양에서는 기기가 하나 이상의 기기 유형을 구현하거나 확장해야 합니다. 기기 유형은 _조광 가능한 조명_ , _도어락_ 또는 _동영상 플레이어_ 와 같은 실제 기기의 최상위 속성을 정의하는 필수 및 선택적 클러스터의 모음입니다.

기기 유형은 Matter 사양 기본 문서가 아니라 기기 라이브러리 라는 첨부 문서에 지정되어 있습니다. 마찬가지로 모든 애플리케이션 클러스터는 애플리케이션 클러스터 라이브러리 에 정의되어 있습니다. 이 세 문서는 Connectivity Standards Alliance (Alliance) 회원 웹사이트에서 확인할 수 있습니다.

기기 유형을 구현하는 각 엔드포인트는 해당 기기 유형을 정의하는 필수 클러스터를 구현해야 합니다. 필수 클러스터 외에도 엔드포인트는 기기 유형의 선택적 클러스터 중 하나 이상 또는 기기 유형에 속하지 않는 클러스터를 포함하여 추가 클러스터를 구현할 수 있습니다.

클라이언트 및 서버

클러스터는 클라이언트 클러스터 또는 서버 클러스터 일 수 있습니다. 서버는 스테이트풀(Stateful) 이고 속성, 이벤트, 명령어를 보유하는 반면 클라이언트는 스테이트리스(Stateless) 이며 원격 서버 클러스터와의 상호작용 을 시작하는 것이 책임입니다. 따라서 다음을 실행합니다.

  • 원격 속성에서 읽고 원격 속성에 씁니다.
  • 원격 이벤트 읽기.
  • 원격 명령어 호출.

DM은 노드 내에서 계층적이지만 노드 간의 관계는 그렇지 않습니다. Matter의 노드에는 수직 컨트롤러/주변기기 또는 리더/팔로워 관계가 없습니다.Matter 반대로 관계는 수평적입니다. 모든 클러스터는 서버 또는 클라이언트 일 수 있습니다. 따라서 노드는 서로 다른 클러스터 및 기능과 관련하여 서버 클라이언트가 될 수 있습니다.

예를 들어 노드 A노드 B 라는 두 개의 테이블 램프가 있을 수 있습니다. 두 노드 모두 전원 켜기/끄기 조명 기기 유형을 구현합니다. 이 기기 유형에는 각 물리적 조명 출력을 제어하는 전원 켜기/끄기 서버 클러스터가 포함되어 있습니다.

하지만 일반적인 테이블 램프와 마찬가지로 물리적 기기에는 로컬 전원 켜기/끄기 스위치를 위한 전원 켜기/끄기 조명 스위치 기기 유형도 포함됩니다. 이 기기 유형은 서버 클러스터를 제어할 수 있도록 전원 켜기/끄기 클라이언트 클러스터를 구현해야 합니다.

켜기/끄기 조명과 조명 스위치를 모두 구현하는 램프
그림 4: 클라이언트 및 서버 클러스터

이 샘플에서 노드 A의 전원 켜기/끄기 클라이언트 클러스터는 노드 A와 노드 B의 전원 켜기/끄기 서버 클러스터의 속성을 변경하는 반면 노드 B의 클라이언트 클러스터는 노드 B 자체의 서버 클러스터만 변경합니다.

다음 섹션에서는 클라이언트 및 서버 클러스터가 상호작용하는 방식인 상호작용 모델 을 자세히 설명합니다.

설명자 클러스터

이름에서 알 수 있듯이 설명자 클러스터 서버는 인트로스펙션 정보를 제공합니다. 엔드포인트를 설명 하고 다음을 열거합니다.

  • 서버 클러스터.
  • 클라이언트 클러스터.
  • 기기 유형.
  • 추가 엔드포인트(파트라고 함).

모든 기기 유형에는 설명자 클러스터의 구현이 필요합니다. 루트 기기 유형은 엔드포인트 0에 정의되어 있습니다. 설명자 클러스터를 읽으면 클라이언트가 사용 가능한 엔드포인트의 전체 트리를 탐색하고 적용 가능한 작업을 실행할 수 있습니다.

커미셔너 또는 휴대전화나 허브와 같은 제어 기기는 설명자 클러스터에서 찾은 정보를 사용하여 기기 (조명, 스위치, 펌프, 온도 조절기)와 기기의 특정 인스턴스에서 구현된 특정 기능을 모델링하여 사용자에게 올바른 UI를 표시할 수 있습니다.

서버 클러스터

ServerList 속성은 엔드포인트의 클러스터 서버를 나열합니다.

클라이언트 클러스터

ClientList 속성은 엔드포인트의 클러스터 클라이언트를 나열합니다.

기기 유형 목록

DeviceTypeList 속성은 엔드포인트에서 지원하는 기기 유형과 각 수정 버전의 목록입니다. 기기 유형을 하나 이상 포함해야 합니다.

파트 목록

PartsList에는 이 기기 유형을 구현하는 데 사용되는 엔드포인트 목록이 포함되어 있습니다.

엔드포인트 0 (루트 노드)의 PartsList에는 자체 (엔드포인트 0)를 제외한 기기의 모든 엔드포인트가 포함되어 있습니다.

다른 엔드포인트의 PartsList는 일반적으로 비어 있습니다. 예를 들어 온도 센서는 온도 측정 서버 클러스터만 필요합니다.

다른 기기 유형은 둘 이상의 기기 유형 인스턴스의 트리 구조로 구성될 수 있습니다. 예를 들어 동영상 플레이어 기기 유형은 TV, 동영상 플레이어, 스피커, 다양한 콘텐츠 앱 기기 유형으로 구성될 수 있으며 각 기기 유형은 서로 다른 엔드포인트에 있습니다.


  1. Matter 사양에서는 기기에 여러 노드가 있을 수 있다고 규정합니다. 예를 들어 스마트폰에는 여러 앱이 있을 수 있으며 각 앱은 서로 다른 노드입니다. 이 기본사항에서는 모든 기기에 단일 노드가 포함됩니다. 대부분의 물리적 기기는 이 패턴을 따를 것으로 예상됩니다.