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