Urządzenia w Matter mają dobrze zdefiniowany model danych (DM), który jest hierarchicznym modelowaniem funkcji urządzenia. Na najwyższym poziomie tej hierarchii znajduje się Urządzenie.
Urządzenia i punkty końcowe
Wszystkie urządzenia, w tym smartfony i asystenci domowi, składają się z węzłów1. Węzeł to unikalny, możliwy do zidentyfikowania i adresowalny zasób w sieci, który użytkownik może postrzegać jako funkcjonalną całość. Komunikacja sieciowa w Matter rozpoczyna się i kończy w węźle.
Węzły to zbiór punktów końcowych. Każdy punkt końcowy zawiera zestaw funkcji. Na przykład punkt końcowy może dotyczyć funkcji oświetlenia, inny – wykrywania ruchu, a jeszcze inny – narzędzi, takich jak OTA (Over-The-Air).
![Hierarchia urządzeń, węzłów i punktów końcowych](https://developers.home.google.com/static/matter/primer/images/primer-device-node.png?authuser=6&hl=pl)
Role węzłów
Rola węzła to zbiór powiązanych zachowań. Każdy węzeł może mieć co najmniej jedną rolę. Role węzła:
- Commissioner: węzeł, który wykonuje komercjalizację.
- Kontroler: węzeł, który może sterować co najmniej jednym węzłem. Przykłady to Google Home app (GHA), Google Assistant i Google Nest Hub (2nd gen). Niektóre typy urządzeń, takie jak przełącznik światła, mają rolę sterownika.
- Element sterowany: węzeł, który może być sterowany przez co najmniej jeden inny węzeł. Większość typów urządzeń może być kontrolowana, z wyjątkiem niektórych typów urządzeń, które mają rolę kontrolera, takich jak przełącznik światła. Przełącznik włączania i wyłączania światła może być tylko kontrolerem. Nie może to być element kontroli.
- Dostawca OTA: węzeł, który może dostarczać aktualizacje oprogramowania OTA.
- OTA Requestor: węzeł, który może żądać aktualizacji oprogramowania OTA.
Klastry
W ramach punktu końcowego węzeł ma co najmniej 1 klaster. To kolejny poziom w hierarchii urządzeń, ponieważ grupują one określone funkcje, takie jak włączanie/wyłączanie w przypadku gniazda inteligentnego urządzenia lub kontrola poziomu w przypadku ściemnialnego punktu końcowego światła.
Węzeł może też mieć kilka punktów końcowych, z których każdy tworzy instancję tej samej funkcjonalności. Na przykład oświetlenie może mieć niezależne sterowanie poszczególnymi lampami, a listwa zasilająca może sterować poszczególnymi gniazdami.
Atrybuty
Na ostatnim poziomie znajdują się atrybuty, czyli stany przechowywane przez węzeł, takie jak atrybut bieżący poziom w klastrze kontroli poziomu. Atrybuty mogą być zdefiniowane jako różne typy danych, np. uint8, ciągi znaków lub tablice.
![Hierarchia węzłów, punktów końcowych, atrybutów i komend](https://developers.home.google.com/static/matter/primer/images/primer-node-endpoint-attribute.png?authuser=6&hl=pl)
Polecenia
Oprócz atrybutów klastry mają też polecenia, czyli działania, które można wykonać. W przypadku Matter są one odpowiednikiem wywołania procedury zdalnej. Polecenia są podobne do czasownika, np. zamknij drzwi w klastrze Zamek w drzwiach. Polecenia mogą generować odpowiedzi i wyniki. W Matter takie odpowiedzi są również definiowane jako polecenia, ale w odwrotnej kolejności.
Wydarzenia
Wreszcie klastry mogą też zawierać zdarzenia, które można traktować jako zapisy poprzednich przejść między stanami. Atrybuty reprezentują bieżące stany, a zdarzenia stanowią dziennik przeszłości. Obejmują one monotonicznie rosnący licznik, sygnaturę czasową i priorytet. Umożliwiają one rejestrowanie przejść między stanami oraz modelowanie danych, czego nie można łatwo osiągnąć za pomocą atrybutów.
![Pełne urządzenie przykładowe](https://developers.home.google.com/static/matter/primer/images/primer-device-type.png?authuser=6&hl=pl)
Punkt końcowy 0 jest zarezerwowany dla klastrów usługowych. Klastry usług to konkretne klastry, które zawierają funkcje obsługi punktu końcowego, takie jak wykrywanie, adresowanie, diagnostyka i aktualizacja oprogramowania. Z drugiej strony klastry aplikacji obsługują działania podstawowe, takie jak włączanie i wyłączanie czy pomiar temperatury.
Typy urządzeń
Które kombinacje klastrów należy uwzględnić, gdy producent planuje nowe urządzenie?
Specyfikacja Matter wymaga, aby urządzenie implementowało co najmniej jeden z typów urządzeń lub rozszerzało ich możliwości. Typ urządzenia to zbiór klastrów (obowiązkowych i opcjonalnych), które definiują atrybuty najwyższego poziomu fizycznego urządzenia, np. ściemniacz światła, zamek do drzwi czy odtwarzacz wideo.
Typy urządzeń nie są określone w głównym dokumencie ze specyfikacją Matter, ale w dokumencie towarzyszącym: Device Library. Podobnie wszystkie klastry aplikacji są definiowane w bibliotece klastrów aplikacji. Te 3 dokumenty znajdziesz na stronie dla członków Connectivity Standards Alliance (Alliance).
Każdy punkt końcowy implementujący typ urządzenia musi implementować obowiązkowe klastry, które definiują ten typ urządzenia. Oprócz grup węzłów obowiązkowych punkt końcowy może wdrażać dodatkowe grupy węzłów, w tym co najmniej 1 z opcjonalnych grup węzłów typu urządzenia lub nawet grupy węzłów, które nie są częścią typu urządzenia.
Klienci i serwery
Klastry mogą być klastrami klientów lub klastrami serwerów. Serwer jest stanowy i przechowuje atrybuty, zdarzenia i polecenia, a klient jest stanowy i ma za zadanie inicjowanie interakcji z odległym klastrem serwerów, wykonując w ten sposób:
- Odczytuje i zapisuje atrybuty zdalne.
- odczytuje zdarzenia zdalne.
- wywołania poleceń zdalnych.
DM jest hierarchiczny w ramach węzła, ale relacje między węzłami nie są hierarchiczne. Węzły w Matter nie mają relacji pionowych kontroler–peryferyjne ani lider–podążający. Wręcz przeciwnie, relacja jest pozioma: każdy klaster może być albo serwerem, albo klientem. W związku z tym węzeł może pełnić funkcję serwera i klienta w odniesieniu do różnych klastrów i funkcji.
Możemy na przykład mieć 2 lampy stołowe: Node A i Node B. Oba węzły implementują typ urządzenia Światło włącz/wyłącz. Ten typ urządzenia obejmuje klaster Włącz/wyłącz serwer, który kontroluje odpowiednie fizyczne wyjścia światła.
Jednak podobnie jak w przypadku typowych lampek stołowych, nasze urządzenia fizyczne będą też zawierać przełącznik włączania i wyłączania światła, który będzie służył do włączania i wyłączania lokalnych przełączników. Ten typ urządzenia musi implementować klaster klienta włączania/wyłączania, aby mógł kontrolować klastry serwerów.
![Lampy z włącznikiem światła do włączania i wyłączania](https://developers.home.google.com/static/matter/primer/images/primer-client-server.png?authuser=6&hl=pl)
W tym przykładzie klaster klienta włączania/wyłączania w węźle A zmienia atrybuty klastra serwera włączania/wyłączania w węźle A i węźle B, a klaster klienta w węźle B zmienia tylko klaster serwera w węźle B.
W następnej sekcji szczegółowo opiszemy sposób interakcji klastrów klientów i serwerów, czyli model interakcji.
Klaster deskryptorów
Jak wskazuje nazwa, serwer klastra z indeksem udostępnia informacje o inspektowaniu. Opisuje punkt końcowy, wymieniając:
- klastry serwerów,
- Klastry klientów.
- Typy urządzeń.
- dodatkowe punkty końcowe, zwane częściami;
Każdy typ urządzenia wymaga implementacji klastrów opisów. Typ urządzenia głównego jest zdefiniowany w punkcie końcowym 0. Odczytanie klastra opisów zapewni klientowi możliwość przejrzenia pełnego drzewa dostępnych punktów końcowych i wykonania odpowiednich operacji.
Użytkownik zlecający lub urządzenie sterujące, takie jak telefon czy centralka, może używać informacji znalezionych w grupie opisów do modelowania urządzenia (światło, przełącznik, pompa, termostat) i określania funkcji implementowanych przez dany egzemplarz urządzenia, wyświetlając użytkownikowi odpowiedni interfejs.
Klastry serwerów
Atrybut ServerList
zawiera listę serwerów klastra w punkcie końcowym.
Klastry klienta
Atrybut ClientList
zawiera listę klientów klastra w urządzeniu końcowym.
Lista typów urządzeń
Atrybut DeviceTypeList
to lista typów urządzeń obsługiwanych przez punkt końcowy wraz z ich odpowiednimi wersjami. Musi zawierać co najmniej jeden typ urządzenia.
Lista części
PartsList
zawiera listę punktów końcowych używanych do implementacji tego typu urządzenia.
PartsList
punktu końcowego 0 (węzła głównego) zawiera wszystkie punkty końcowe urządzenia oprócz samego siebie (punkt końcowy 0).
PartsList
innych punktów końcowych jest zwykle pusty. Na przykład czujnik temperatury wymaga klastra serwera pomiaru temperatury i nic więcej.
Inne typy urządzeń mogą być skomponowane w strukturze drzewa z wielu wystąpień typu Device Type. Na przykład urządzenie typu Odtwarzacz wideo może składać się z urządzenia TV, odtwarzacza wideo, głośnika i różnych typów urządzeń z aplikacją do treści, z których każde jest obsługiwane przez inny punkt końcowy.
-
Specyfikacja Matter określa, że urządzenie może mieć wiele węzłów. Na przykład smartfony mogą mieć wiele aplikacji, z których każda jest innym węzłem. W tym wprowadzeniu wszystkie urządzenia będą zawierać pojedynczy węzeł. Oczekuje się, że większość urządzeń fizycznych będzie działać zgodnie z tym wzorcem. ↩