본문 바로가기
Matter

[Matter] Device Data Model

by 붕어사랑 티스토리 2022. 6. 14.
반응형

https://developers.home.google.com/matter/primer/device-data-model?hl=en 

 

기기 데이터 모델  |  Matter  |  Google Home

법적 사안 기기를 뒷받침하는 데이터 모델 이해하기

developers.home.google.com

 

매터 디바이스는 DM, 데이터 모델이라는 것ㅇ르 가지고 있다. 그리고 이 데이타모델은 디바이스의 기능을 계층화 시킨다. 아 계층에 최상위에는 Device가 있다.

 

 

 

Device와 Endpoints

모든 디바이스, 예를들어 스마트폰과 홈 어시스턴스들은 Node로 구성된다. Node는 unique하게 구별되고 자체 주소를 가진 네트워크에 있는 리소스이며, 유저가 기능을 전체적으로 인식 할 수 있다. 매터의 네트워크는 Node로 시작해서 Node로 끝난다.

 

Node는 또 Endpoints로 구성된다. 각각의 Endpoint들은 기능묶음을 가지고 있다. 예를들어 한 Endpoint는 조명과 관련된 기능을 가질수 있고, 다른 Endpoint는 모션감지를 가질수 있고 또는 OTA 유틸리티와 관려된 기능을 가질 수 있다.

 

 

Figure 1: Devices, Nodes and Endpoints

 

 

 

Cluster

Endpoint안에는 하나 이상의 Cluster가 있다. 이 클러스터는 디바이스 계층안에 있는 또다른 계층이며, 클러스는 특정한 기능을 그륩핑 합니다. 예를들어 스마트 플러그를 on/off 하는 기능을 묶거나, 조명의 조도를 조절하는 기능을 묶습니다.

 

 

Attribute

계층의 마지막 level은 Attribute입니다. 이 노드의 state를 나타냅니다. 예를들어 level control cluster에서의 level을 나타냄이 있습니다. Attribute는 다양한 데이터 타입을 정의될 수 있습니다. uint8 혹은 strings 또는 array 등등

Figure 2: Nodes, Endpoints, Attributes and Commands

 

 

 

Command

Attribute와 별개로, Cluster는 Command라는것을 가집니다. Command는 수행될 수 있는 하나의 action을 의미합니다. 이 Command는 Matter의 데이터 모델링에 remote procedure call와 동일합니다. Command는 동사언어와 유사합니다. 예를어 lock door on Door lock(도어락을 잠가라) 같이요.

 

Commands는 responseresults를 가질 수 있습니다. 매터에서는 그러한 response가 또하나의 Command로 정의될 수있습니다. 그리고 이 Command의 명령 방향은 반대방향입니다.

 

 

Event

Cluster는 마지막으로 Event라는것을 가집니다. Event는 간단하게 생각하면 state변화에 대한 기록입니다. Attribute가 현재 state를 나타낸다면, Event는 과거내용이 기록된 신문으로 나타낼 수 있지요. 이 Event는 단순하게 증가하는 카운터, 타임스탬프, 그리고 우선순위를 포함합니다. 이벤트는 state의 변화를 capturing 할 수 있을 뿐만 아니라 Attribute로 쉽게 다룰 수 없는 데이터 모델링도 가능하게 합니다.

 

 

Figure 3: A sample of the hierarchy of Matter Devices interaction model

 

Entrypoint0는 Utility Cluster집합으로 정해져 있다. Utility Cluster는 서비스 기능을 담당하는 특별한 클러스터이며 discovery, addressing, diagnostics 그리고 software update를 담당한다. Endpoint1는 Application Cluster집합으로 로 액션들을 제공하며 위 예제에서는 on/off 기능이다.

 

 

 

 

 

Device Type

제조사가 새로운 디바이스를 만들때 어떤 클러스터 조합을 포함해야 할 까? 기본적인 원칙은 Device Type이라는 것 을 상속받거나 구현하는 것이다. Device Type은 필수 클러스터와 optional 클러스터의 집합체이며, 하나이상의 Endpoint를 가진다. 이 Endpoint는 장치의 최상위 attribute, 조명 조도 조정, 도어락 또는 비디오플레어와 같은 attribute를 정의한다

 

Endpoint가 요구사항이 적은 반면, DeviceType은 requirement가 strong 하다. 만약 한 노드가 Device Type을 정의하는 경우, 이때 반드시 특정한 통합기능을 가진 클러스터를 하나 이상의 엔드포인트에 정의해야 한다.

 

Device Type은 매터 다큐먼트에 따로 자세히 적혀있지 않고 Device Library에 자세히 나와있으며, Application Cluster 또한 Application Cluster Library에 자세히 적혀 있다. 이 다큐먼트들은 CSA의 멤버사이트에서 찾을 수 있다.

 

 

Client와 Server

 

Cluster는 Client Cluster와 Server Cluster로 구분 될 수 있다. Server는 stateful하다. 즉 상태를 가지며 Attribute와 Event 그리고 Command를 가지고 있다. 반면 Client는 stateless, 즉 상태가 없으며 이것의 역할은 remote Server와 interaction하는게 주 역할아디.

 

아래는 Client가 하는 기능들의 내용이다

  • remote Attribute의 값을 read, write한다
  • remote Event에서 값을 read 한다
  • remote Command를 호출한다

 

 

Data Modeling은 Node안에서 계층화 되어있지만. Node와 Node사이에서는 계층화가 되어 있지 않다. 매터의 노드끼리 관계는 수직적이거나 지엽적이거나 lead follow형태의 관계를 가지지 않는다. 반대로, 매터의 노드끼리 관계는 수평적이다. 클러스터는 서버 또는 클라이언트일 수 있다. 따라서 노드는 서로 다른 클러스터 및 기능과 관련하여 서버 및 클라이언트일 수 있다.

 

예를들어 우리가 두가지 테이블 램프를 가지고 있다고 하자. 그리고 이를 NodeA와 NodeB라고 부르자. 두 노드는 On/Off Light Device Type을 구현했다고 하자. 이 Device Type은 On/Off Server Cluster를 포함하고 있고 각각의 전구를 컨트롤 한다.

 

그러나 이 두가지 램프는 일반적인 램프와 마찬가지로 On/Off Light Switch Device 타입을 가진다. 이 DeviceType은 On/Off Clinet Cluster를 구현하여 ServerCluster를 조종해야 한다.

 

Figure 4: Client and Server Clusters

이 샘플에서 노드 A의 On/Off 클라이언트 클러스터는 노드 A와 노드 B의 On/Off 서버 클러스터의 속성을 변경하고 노드 B의 클라이언트 클러스터는 노드 B 자체의 서버 클러스터만 변경한다.

반응형

댓글