Il modello dei dati del dispositivo

I dispositivi in Matter dispongono di un modello di dati ben definito (DM), ovvero una modellazione gerarchica delle funzionalità di un Dispositivo. Al livello superiore della gerarchia è presente un Dispositivo.

Dispositivi ed endpoint

Tutti i dispositivi, inclusi smartphone e assistenti domestici, sono composti da nodi.1 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 include un set di funzionalità. Ad esempio, un endpoint potrebbe riguardare una funzionalità di illuminazione, un altro potrebbe riguardare il rilevamento dei movimenti e un altro potrebbe riguardare utilità, come OTA del dispositivo.

Gerarchia di dispositivi, nodi ed endpoint
Figura 1: dispositivi, nodi ed endpoint

Ruoli nodo

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 messa in servizio.
  • Controller: un nodo in grado di controllare uno o più nodi. Alcuni esempi sono: Google Home app (GHA), Google Assistant e Google Nest Hub (2nd gen). Alcuni tipi di dispositivi, ad esempio l'interruttore della luce di accensione/spegnimento, hanno il ruolo Controller.
  • Controllato: un nodo che può essere controllato da uno o più nodi. La maggior parte dei tipi di dispositivi può essere un Controllore, ad eccezione di alcuni tipi di dispositivi che hanno il ruolo Controller, ad esempio l'interruttore On/Off Light. L'interruttore per la luce di accensione/spegnimento può essere solo un controller. Non può essere un Controllante.
  • Provider OTA: un nodo in grado di 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 di livello su un endpoint con luce dimmerabile.

Un nodo può anche avere più endpoint, ognuno dei quali crea un'istanza con la stessa funzionalità. Ad esempio, un apparecchio di illuminazione potrebbe esporre il controllo indipendente di singole luci oppure una presa multipla potrebbe esporre il controllo delle singole prese.

Attributi

All'ultimo livello troverai gli Attributi, ovvero gli stati conservati dal nodo, come l'attributo livello attuale di un cluster di controllo di livello. Gli attributi possono essere definiti come diversi tipi di dati, come uint8, stringhe o array.

Gerarchia di nodi, endpoint, attributi e comandi
Figura 2: nodi, endpoint, attributi e comandi

Comandi

Oltre agli attributi, i cluster hanno anche comandi, che sono azioni che possono essere eseguite. Sono l'equivalente nel messaggio diretto di Matter di una chiamata di procedura remota. I comandi sono simili a quelli dei verbi, ad esempio serratura della porta su un cluster Serratura per porte. I comandi possono generare risposte e risultati; in Matter, tali risposte sono anche definite come comandi, andando in direzione inversa.

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 attuali, gli eventi sono un diario del passato e includono un contatore che aumenta monotonicamente, un timestamp e una priorità. Consentono di acquisire le transizioni di stato e creare modelli dei dati che non è possibile ottenere facilmente con gli attributi.

Esempio completo del dispositivo
Figura 3: esempio della gerarchia del Matter modello di interazione con i dispositivi

L'Endpoint 0 è riservato ai Utility Cluster. I cluster di utilità sono cluster specifici che racchiudono le funzionalità di servizio su un endpoint, ad esempio rilevamento, indirizzamento, diagnostica e aggiornamento del software. I cluster di applicazioni supportano azioni principali, come l'accensione e lo spegnimento o la misurazione della temperatura.

Tipi di dispositivi

Nel complesso, quali combinazioni di cluster devono essere incluse se un produttore di dispositivi pianifica un nuovo dispositivo?

La specifica Matter richiede che il dispositivo implementi o estenda uno o più tipi di dispositivo. Un Tipo di dispositivo è una raccolta di cluster obbligatori e facoltativi che definiscono gli attributi di primo livello di un dispositivo fisico, come Luce regolabile, Serratura per porte o Video player.

I tipi di dispositivi non sono specificati dal documento principale della specifica Matter, ma da un documento di accompagnamento: la Libreria dispositivi. Analogamente, tutti i cluster di applicazioni sono definiti nella libreria dei cluster di applicazioni. Questi tre documenti sono disponibili sul sito web dei 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, inclusi uno o più cluster facoltativi del tipo di dispositivo o persino cluster che non fanno parte del tipo di dispositivo.

Client e server

I cluster possono essere un cluster client o un cluster di 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, in questo modo:

  • legge e scrive nei relativi attributi remoti.
  • lette dei suoi eventi remoti.
  • chiamata dei relativi comandi remoti.

Mentre il Deployment Manager è gerarchico all'interno di un Nodo, la relazione tra i Nodi non lo è. I nodi in Matter non hanno relazioni tra controller/periferica o leader/follower. Al contrario, la relazione è orizzontale: ogni cluster può essere Server o Client. Pertanto, un Nodo può essere sia Server sia Client in relazione a diversi Cluster e funzionalità.

Ad esempio, potremmo avere due lampade da tavolo: nodo A e nodo B. Entrambi i nodi implementano un tipo di dispositivo On/Off Light. Questo tipo di dispositivo include un cluster On/Off Server che controlla le rispettive uscite di illuminazione fisiche.

Tuttavia, come fanno le classiche lampade da tavolo, i nostri dispositivi fisici includeranno anche un tipo di dispositivo interruttore della luce On/Off per i loro interruttori on/off locali. Questo tipo di dispositivo deve implementare un cluster client on/off in modo da poter controllare i cluster di server.

Lampade con interruttore On/Off e luce
Figura 4: cluster client e server

In questo esempio, il cluster client on/off sul nodo A modifica gli attributi del cluster di server On/Off sui nodi A e sul nodo B, mentre il cluster client del nodo B modifica solo il cluster di server sul nodo B.

Nella prossima sezione illustreremo in dettaglio come interagiscono i cluster client e i cluster di server: il modello di interazione.

Cluster descrittore

Come suggerisce il nome, Descriptor Cluster Server fornisce informazioni sull'introspezione. Descrive l'endpoint che enumera i suoi:

  • Cluster di server.
  • Cluster client.
  • Tipi di dispositivi.
  • Endpoint aggiuntivi, noti come parti.

Ogni tipo di dispositivo richiede l'implementazione di cluster descrittori. Il tipo di dispositivo root è definito su Endpoint 0. La lettura del relativo cluster del descrittore fornirà al client la visibilità per attraversare l'intera struttura degli endpoint disponibili ed eseguire le operazioni applicabili.

Il Commissioner o il dispositivo di controllo, ad esempio uno smartphone o un hub, possono utilizzare le informazioni presenti nel cluster del descrittore per modellare il Dispositivo (spia, interruttore, pompa, termostato) e le funzionalità specifiche implementate da quella particolare istanza del Dispositivo, mostrando all'utente la UI corretta.

Cluster di server

L'attributo ServerList elenca i server del 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 dei tipi di dispositivi supportati dall'endpoint, insieme alle rispettive revisioni. Deve contenere almeno un Tipo di dispositivo.

Elenco delle parti

PartsList contiene l'elenco di endpoint utilizzati per l'implementazione di questo tipo di dispositivo.

L'elemento PartsList dell'endpoint 0 (nodo radice) contiene tutti gli endpoint del dispositivo tranne se stesso (Endpoint 0).

Il campo PartsList di altri endpoint di solito sarà vuoto. Ad esempio, un sensore di temperatura impone 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 Tipo di dispositivo. Ad esempio, un tipo di dispositivo video player può essere composto da TV, video player, speaker e diversi tipi di dispositivi dell'app per i contenuti, ognuno su un endpoint diverso.


  1. La specifica Matter determina che un Dispositivo può avere più Nodi. Ad esempio, gli smartphone possono avere più app, ognuna con un Nodo diverso. Ai fini di questo manuale, tutti i dispositivi conterranno un solo Nodo. Si prevede che la maggior parte dei dispositivi fisici seguirà questo schema.