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 całość funkcjonalną. 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).
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 komisjonowanie.
- 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 kontrolowany: węzeł, który może być kontrolowany przez co najmniej jeden inny węzeł. Większość typów urządzeń może być kontrolowanym, 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 tylko być kontrolerem. Nie może to być element kontroli.
- Dostawca OTA: węzeł, który może dostarczać aktualizacje oprogramowania OTA.
- Wydawca prośby o aktualizację OTA: 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.
Polecenia
Oprócz atrybutów klastry mają też polecenia, czyli działania, które można wykonać. Są one odpowiednikiem w DM Matter wywołania zdalnej procedury. Polecenia są podobne do czasownika, np. zamknij drzwi w klastrze Zamek w drzwiach. Polecenia mogą generować odpowiedzi i wyniki. W Matter takie odpowiedzi są też definiowane jako polecenia, ale w odwrotnej kolejności.
Wydarzenia
Klaster może też zawierać zdarzenia, które można traktować jako zapis przejścia między stanami w przeszłości. 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.
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/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 należą do 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 światła, który 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.
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 klienta.
- 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) oraz konkretnych 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 większej liczby wystąpień typu Device Type. Na przykład typ urządzenia odtwarzacza wideo może składać się z telewizora, odtwarzacza wideo, głośnika i różnych typów urządzeń z aplikacją do treści, z których każdy jest obsługiwany 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 wstępie wszystkie urządzenia będą zawierać pojedynczy węzeł. Spodziewamy się, że większość urządzeń fizycznych będzie działać zgodnie z tym wzorcem. ↩