Matter의 기기에는 기기의 기능을 계층적으로 모델링하는 잘 정의된 데이터 모델 (DM)이 있습니다.Matter 이 계층 구조의 최상위에는 기기 가 있습니다.
기기 및 엔드포인트
스마트폰과 홈 어시스턴트를 비롯한 모든 기기는 노드1로 구성됩니다. 노드 는 사용자가 기능적으로 온전하다고 인식할 수 있는 네트워크 내 고유하게 식별 가능하며 주소 지정이 가능한 리소스입니다. Matter의 네트워크 통신은 Matter 노드에서 시작되고 종료됩니다.
노드는 엔드포인트 의 모음입니다. 각 엔드포인트는 특성 세트를 포함합니다. 예를 들어 한 엔드포인트는 조명 기능과 관련이 있고 다른 엔드포인트는 움직임 감지 와 관련이 있으며 또 다른 엔드포인트는 기기 OTA와 같은 유틸리티 를 처리합니다.
노드 역할
노드 역할 은 관련 동작의 집합입니다. 각 노드에는 하나 이상의 역할이 있을 수 있습니다. 노드 역할은 다음과 같습니다.
- 커미셔너: 커미셔닝을 실행하는 노드입니다.
- 컨트롤러: 하나 이상의 노드를 제어할 수 있는 노드입니다. 예로는 Google Home app (GHA), Google Assistant, Google Nest Hub (2nd gen)가 있습니다. 일부 기기 유형(예: 전원 켜기/끄기 조명 스위치)에는 컨트롤러 역할이 있습니다.
- 제어 대상: 하나 이상의 노드로 제어할 수 있는 노드입니다. 대부분의 기기 유형은 제어 대상이 될 수 있지만 컨트롤러 역할이 있는 일부 기기 유형 은 예외입니다. 예를 들어 전원 켜기/끄기 조명 스위치가 있습니다. 전원 켜기/끄기 조명 스위치는 컨트롤러만 될 수 있습니다. 제어 대상이 될 수 없습니다.
- OTA 제공업체: OTA 소프트웨어 업데이트를 제공할 수 있는 노드입니다.
- OTA 요청자: OTA 소프트웨어 업데이트를 요청할 수 있는 노드입니다.
클러스터
엔드포인트 내에서 노드에는 하나 이상의 클러스터 가 있습니다. 이는 스마트 플러그의 전원 켜기/끄기 클러스터 또는 조광 가능한 조명 엔드포인트의 수준 제어 클러스터와 같은 특정 기능을 그룹화하므로 기기 계층 구조의 또 다른 단계입니다.
노드에는 여러 엔드포인트가 있을 수도 있으며 각 엔드포인트는 동일한 기능의 인스턴스를 만듭니다. 예를 들어 조명 기구는 개별 조명의 독립적인 제어를 노출할 수 있고 전원 스트립은 개별 소켓의 제어를 노출할 수 있습니다.
속성
마지막 수준에는 노드가 보유하는 상태인 속성이 있습니다. 예를 들어 수준 제3} 클러스터의 현재 수준 속성이 있습니다. 속성은 uint8, 문자열 또는 배열과 같은 다양한 데이터 유형으로 정의될 수 있습니다.
명령어
속성 외에도 클러스터에는 실행할 수 있는 작업인 명령어도 있습니다. 이는 Matter's DM에서 리모트 프로시져 콜과 동일합니다. 명령어는 동사 와 같습니다. 예를 들어 도어락 클러스터의 도어락 이 있습니다. 명령어는 응답과 결과를 생성할 수 있습니다. Matter에서 이러한 응답은 역방향으로 이동하는 명령어이기도 합니다.
이벤트
마지막으로 클러스터에는 과거 상태 전환 기록으로 생각할 수 있는 이벤트도 있을 수 있습니다. 속성은 현재 상태를 나타내는 반면 이벤트는 과거의 저널이며 단조롭게 증가하는 카운터, 타임스탬프, 우선순위를 포함합니다. 이를 통해 상태 전환을 캡처하고 속성으로 쉽게 달성할 수 없는 데이터 모델링을 실행할 수 있습니다.
엔드포인트 0 은 유틸리티 클러스터 용으로 예약되어 있습니다. 유틸리티 클러스터는 검색, 주소 지정, 진단, 소프트웨어 업데이트와 같은 엔드포인트의 서비스 기능을 포함하는 특정 클러스터입니다. 반면 애플리케이션 클러스터 는 전원 켜기/끄기 또는 온도 측정과 같은 기본 작업을 지원합니다.
기기 유형
기기 제조업체가 새 기기를 계획할 때 어떤 클러스터 조합을 포함해야 할까요?
Matter 사양에서는 기기가 하나 이상의 기기 유형을 구현하거나 확장해야 합니다. 기기 유형은 _조광 가능한 조명_ , _도어락_ 또는 _동영상 플레이어_ 와 같은 실제 기기의 최상위 속성을 정의하는 필수 및 선택적 클러스터의 모음입니다.
기기 유형은 Matter 사양 기본 문서가 아니라 기기 라이브러리 라는 첨부 문서에 지정되어 있습니다. 마찬가지로 모든 애플리케이션 클러스터는 애플리케이션 클러스터 라이브러리 에 정의되어 있습니다. 이 세 문서는 Connectivity Standards Alliance (Alliance) 회원 웹사이트에서 확인할 수 있습니다.
기기 유형을 구현하는 각 엔드포인트는 해당 기기 유형을 정의하는 필수 클러스터를 구현해야 합니다. 필수 클러스터 외에도 엔드포인트는 기기 유형의 선택적 클러스터 중 하나 이상 또는 기기 유형에 속하지 않는 클러스터를 포함하여 추가 클러스터를 구현할 수 있습니다.
클라이언트 및 서버
클러스터는 클라이언트 클러스터 또는 서버 클러스터 일 수 있습니다. 서버는 스테이트풀(Stateful) 이고 속성, 이벤트, 명령어를 보유하는 반면 클라이언트는 스테이트리스(Stateless) 이며 원격 서버 클러스터와의 상호작용 을 시작하는 것이 책임입니다. 따라서 다음을 실행합니다.
- 원격 속성에서 읽고 원격 속성에 씁니다.
- 원격 이벤트 읽기.
- 원격 명령어 호출.
DM은 노드 내에서 계층적이지만 노드 간의 관계는 그렇지 않습니다. Matter의 노드에는 수직 컨트롤러/주변기기 또는 리더/팔로워 관계가 없습니다.Matter 반대로 관계는 수평적입니다. 모든 클러스터는 서버 또는 클라이언트 일 수 있습니다. 따라서 노드는 서로 다른 클러스터 및 기능과 관련하여 서버 및 클라이언트가 될 수 있습니다.
예를 들어 노드 A 와 노드 B 라는 두 개의 테이블 램프가 있을 수 있습니다. 두 노드 모두 전원 켜기/끄기 조명 기기 유형을 구현합니다. 이 기기 유형에는 각 물리적 조명 출력을 제어하는 전원 켜기/끄기 서버 클러스터가 포함되어 있습니다.
하지만 일반적인 테이블 램프와 마찬가지로 물리적 기기에는 로컬 전원 켜기/끄기 스위치를 위한 전원 켜기/끄기 조명 스위치 기기 유형도 포함됩니다. 이 기기 유형은 서버 클러스터를 제어할 수 있도록 전원 켜기/끄기 클라이언트 클러스터를 구현해야 합니다.
이 샘플에서 노드 A의 전원 켜기/끄기 클라이언트 클러스터는 노드 A와 노드 B의 전원 켜기/끄기 서버 클러스터의 속성을 변경하는 반면 노드 B의 클라이언트 클러스터는 노드 B 자체의 서버 클러스터만 변경합니다.
다음 섹션에서는 클라이언트 및 서버 클러스터가 상호작용하는 방식인 상호작용 모델 을 자세히 설명합니다.
설명자 클러스터
이름에서 알 수 있듯이 설명자 클러스터 서버는 인트로스펙션 정보를 제공합니다. 엔드포인트를 설명 하고 다음을 열거합니다.
- 서버 클러스터.
- 클라이언트 클러스터.
- 기기 유형.
- 추가 엔드포인트(파트라고 함).
모든 기기 유형에는 설명자 클러스터의 구현이 필요합니다. 루트 기기 유형은 엔드포인트 0에 정의되어 있습니다. 설명자 클러스터를 읽으면 클라이언트가 사용 가능한 엔드포인트의 전체 트리를 탐색하고 적용 가능한 작업을 실행할 수 있습니다.
커미셔너 또는 휴대전화나 허브와 같은 제어 기기는 설명자 클러스터에서 찾은 정보를 사용하여 기기 (조명, 스위치, 펌프, 온도 조절기)와 기기의 특정 인스턴스에서 구현된 특정 기능을 모델링하여 사용자에게 올바른 UI를 표시할 수 있습니다.
서버 클러스터
ServerList 속성은 엔드포인트의 클러스터 서버를 나열합니다.
클라이언트 클러스터
ClientList 속성은 엔드포인트의 클러스터 클라이언트를 나열합니다.
기기 유형 목록
DeviceTypeList 속성은 엔드포인트에서 지원하는 기기 유형과 각 수정 버전의 목록입니다. 기기 유형을 하나 이상 포함해야 합니다.
파트 목록
PartsList에는 이 기기 유형을 구현하는 데 사용되는 엔드포인트 목록이 포함되어 있습니다.
엔드포인트 0 (루트 노드)의 PartsList에는 자체 (엔드포인트 0)를 제외한 기기의 모든 엔드포인트가 포함되어 있습니다.
다른 엔드포인트의 PartsList는 일반적으로 비어 있습니다. 예를 들어 온도 센서는 온도 측정 서버 클러스터만 필요합니다.
다른 기기 유형은 둘 이상의 기기 유형 인스턴스의 트리 구조로 구성될 수 있습니다. 예를 들어 동영상 플레이어 기기 유형은 TV, 동영상 플레이어, 스피커, 다양한 콘텐츠 앱 기기 유형으로 구성될 수 있으며 각 기기 유형은 서로 다른 엔드포인트에 있습니다.
-
Matter 사양에서는 기기에 여러 노드가 있을 수 있다고 규정합니다. 예를 들어 스마트폰에는 여러 앱이 있을 수 있으며 각 앱은 서로 다른 노드입니다. 이 기본사항에서는 모든 기기에 단일 노드가 포함됩니다. 대부분의 물리적 기기는 이 패턴을 따를 것으로 예상됩니다. ↩