I dispositivi in Matter hanno un modello dei dati (DM) ben definito, ovvero una modellazione gerarchica delle funzionalità di un dispositivo. Al livello più alto di questa gerarchia si trova un dispositivo.
Dispositivi ed endpoint
Tutti i dispositivi, inclusi smartphone e assistenti domestici, sono composti da Nodi1. Un Nodo è una risorsa identificabile in modo univoco e indirizzabile in una rete che un utente può percepire come funzionalmente completa. La comunicazione di rete in Matter ha origine e termina su un Nodo.
I nodi sono una raccolta di endpoint. Ogni endpoint racchiude un set di funzionalità. Ad esempio, un endpoint potrebbe essere correlato a una funzionalità di illuminazione, un altro al rilevamento dei movimenti e un altro ancora a utilità come l'OTA del dispositivo.
Ruoli dei nodi
Un ruolo del nodo è un insieme di comportamenti correlati. Ogni nodo può avere uno o più ruoli. I ruoli dei nodi includono:
- Commissioner: un nodo che esegue la commissione.
- Controller: un nodo che può controllare uno o più nodi. Esempi: Google Home app (GHA), Google Assistant e Google Nest Hub (2nd gen). Alcuni tipi di dispositivi, come l'interruttore della luce on/off, hanno il ruolo di controller.
- Controllato: un nodo che può essere controllato da uno o più nodi. La maggior parte dei tipi di dispositivi può essere un Controlee, ad eccezione di alcuni tipi di dispositivi che hanno il ruolo di Controller, come l'interruttore della luce on/off. L'interruttore della luce può essere solo un controller. Non può essere un Controlee.
- Provider OTA: un nodo che può fornire aggiornamenti software OTA.
- Richiedente OTA: un nodo che può richiedere aggiornamenti software OTA.
Cluster
All'interno di un endpoint, un nodo ha uno o più cluster. Questi sono un altro passaggio nella gerarchia dei dispositivi, in quanto raggruppano funzionalità specifiche, come un cluster on/off su una presa smart o un cluster di controllo del livello su un endpoint di luce dimmerabile.
Un nodo può anche avere più endpoint, ognuno dei quali crea un'istanza della stessa funzionalità. Ad esempio, un apparecchio di illuminazione può esporre il controllo indipendente di singole luci o una presa multipla può esporre il controllo di singole prese.
Attributi
All'ultimo livello troviamo gli attributi, ovvero gli stati del nodo, come l'attributo livello attuale di un cluster di controllo del livello. Gli attributi possono essere definiti come tipi di dati diversi, ad esempio uint8, stringhe o array.
Comandi
Oltre agli attributi, i cluster hanno anche comandi, ovvero azioni che possono essere eseguite. Sono l'equivalente di una chiamata di procedura remota nel DM di Matter. I comandi sono simili a verbi, ad esempio chiudi porta in un cluster Serratura per porte. I comandi possono generare risposte e risultati; in Matter, queste risposte sono definite anche come comandi, che vanno nella direzione opposta.
Eventi
Infine, i cluster possono anche avere eventi, che possono essere considerati come un record delle transizioni di stato passate. Mentre gli attributi rappresentano gli stati correnti, gli eventi sono un diario del passato e includono un contatore che aumenta in modo monotono, un timestamp e una priorità. Consentono di acquisire le transizioni di stato, nonché la modellazione dei dati che non è facilmente realizzabile con gli attributi.
L'Endpoint 0 è riservato ai cluster di utilità. I cluster di utilità sono cluster specifici che racchiudono le funzionalità di gestione su un endpoint, come rilevamento, indirizzamento, diagnostica e aggiornamento software. D'altra parte, i cluster di applicazioni supportano azioni principali come l'accensione/lo spegnimento o la misurazione della temperatura.
Tipi di dispositivi
In sintesi, quali combinazioni di cluster devono essere incluse quando un produttore di dispositivi pianifica un nuovo dispositivo?
La specifica Matter richiede che il dispositivo implementi o estenda uno o più tipi di dispositivi. Un tipo di dispositivo è una raccolta di cluster obbligatori e facoltativi che definiscono gli attributi di primo livello di un dispositivo fisico, ad esempio Luce dimmerabile, Serratura o Video player.
I tipi di dispositivi non sono specificati nel documento principale della specifica Matter, ma in un documento di accompagnamento: la libreria dei dispositivi. Analogamente, tutti i cluster di applicazioni sono definiti nella libreria dei cluster di applicazioni. Questi tre documenti sono disponibili sul sito web per i membri di Connectivity Standards Alliance (Alliance).
Ogni endpoint che implementa un tipo di dispositivo deve implementare i cluster obbligatori che definiscono quel tipo di dispositivo. Oltre ai cluster obbligatori, l'endpoint può implementare cluster aggiuntivi, tra cui uno o più cluster facoltativi del tipo di dispositivo o anche cluster che non fanno parte del tipo di dispositivo.
Client e server
I cluster possono essere cluster client o cluster server. Mentre un server è stateful e contiene attributi, eventi e comandi, un client è stateless e la sua responsabilità è avviare interazioni con un cluster di server remoto, eseguendo così:
- legge e scrive nei suoi attributi remoti.
- letture dei suoi eventi remoti.
- richiamo dei suoi comandi remoti.
Sebbene il DM sia gerarchico all'interno di un nodo, la relazione tra i nodi non lo è. I nodi in Matter non hanno relazioni verticali controller/periferica o leader/follower. Al contrario, la relazione è orizzontale: qualsiasi cluster può essere Server o Client. Pertanto, un nodo può essere sia server sia client per quanto riguarda cluster e funzionalità diversi.
Ad esempio, potremmo avere due lampade da tavolo: Nodo A e Nodo B. Entrambi i nodi implementano un tipo di dispositivo Luce on/off. Questo tipo di dispositivo include un cluster On/Off Server che controlla le rispettive uscite di luce fisiche.
Tuttavia, come le tipiche lampade da tavolo, i nostri dispositivi fisici includeranno anche un tipo di dispositivo Interruttore luce on/off per i relativi interruttori on/off locali. Questo tipo di dispositivo deve implementare un cluster Client on/off in modo da poter controllare i cluster server.
In questo esempio, il cluster client On/Off sul nodo A modifica gli attributi del cluster server On/Off sul nodo A e sul nodo B, mentre il cluster client del nodo B modifica solo il cluster server sul nodo B stesso.
Nella sezione successiva descriveremo in dettaglio l'interazione tra i cluster client e server: il modello di interazione.
Cluster di descrittori
Come suggerisce il nome, il server cluster descrittore fornisce informazioni di introspezione. Descrive l'endpoint elencando:
- Cluster di server.
- Cluster client.
- Tipi di dispositivi.
- Endpoint aggiuntivi, noti come parti.
Ogni tipo di dispositivo richiede l'implementazione di cluster di descrittori. Il tipo di dispositivo principale è definito sull'endpoint 0. La lettura del cluster descrittore fornirà al client la visibilità per attraversare l'intero albero degli endpoint disponibili ed eseguire le operazioni applicabili.
Il dispositivo di controllo o di commissione, ad esempio uno smartphone o un hub, può utilizzare le informazioni presenti nel cluster descrittore per modellare il dispositivo (luce, interruttore, pompa, termostato) e le funzionalità specifiche implementate da quella particolare istanza del dispositivo, mostrando la UI corretta all'utente.
Cluster di server
L'attributo ServerList elenca i server cluster nell'endpoint.
Cluster client
L'attributo ClientList elenca i client del cluster nell'endpoint.
Elenco dei tipi di dispositivi
L'attributo DeviceTypeList è un elenco di tipi di dispositivi supportati dall'endpoint, insieme alle rispettive revisioni. Deve contenere almeno un tipo di dispositivo.
Elenco dei pezzi
PartsList contiene l'elenco degli endpoint utilizzati per implementare questo tipo di dispositivo.
Il PartsList dell'endpoint 0 (nodo principale) contiene tutti gli endpoint del dispositivo, ad eccezione di se stesso (endpoint 0).
Il campo PartsList di altri endpoint di solito è vuoto. Ad esempio, un sensore di temperatura richiede un cluster di server di misurazione della temperatura e nient'altro.
Altri tipi di dispositivi potrebbero essere composti in una struttura ad albero di più istanze di tipi di dispositivi. Ad esempio, un tipo di dispositivo Video Player può essere composto da TV, Video Player, Speaker e diversi tipi di dispositivi Content App, ciascuno su un endpoint diverso.
-
La specifica Matter stabilisce che un Dispositivo può avere più Nodi. Ad esempio, gli smartphone possono avere più app, ognuna delle quali è un nodo diverso. Ai fini di questa guida introduttiva, tutti i dispositivi conterranno un singolo nodo. Si prevede che la maggior parte dei dispositivi fisici seguirà questo pattern. ↩