Il modello dei dati del dispositivo

I dispositivi in Matter hanno un modello di dati (DM) ben definito, che è una modellazione gerarchica delle funzionalità di un dispositivo. Al livello superiore di questa gerarchia è presente un dispositivo.

Dispositivi ed endpoint

Tutti i dispositivi, inclusi smartphone e assistenti domestici, sono composti da nodi1. Un nodo è una risorsa univoca identificabile e indirizzabile in una rete che un utente può percepire come funzionalmente completa. La comunicazione di rete in Matter ha origine e termina in un nodo.

I nodi sono una raccolta di endpoint. Ogni endpoint racchiude un insieme di funzionalità. Ad esempio, un endpoint potrebbe essere correlato a una funzionalità di illuminazione, mentre un altro al rilevamento dei movimenti e un altro ancora alle utilità, come l'aggiornamento OTA del dispositivo.

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

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 il commissioning.
  • Controller: un nodo che può controllare uno o più nodi. Esempi includono 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.
  • Controlee: 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 on/off può essere solo un controller. Non può essere un controlee.
  • OTA Provider: 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 intelligente 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 delle singole luci o una ciabatta può esporre il controllo delle singole prese.

Attributi

All'ultimo livello troviamo gli attributi, che sono stati mantenuti dal nodo, come l'attributo livello attuale di un cluster di controllo del livello. Gli attributi possono essere definiti come tipi di dati diversi, 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 Matter's DM di una chiamata di procedura remota. I comandi sono simili a verbi, ad esempio chiudi la porta in un Blocco porta cluster. 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 attuali , gli eventi sono un registro del passato, e includono un contatore in aumento monotono, un timestamp e una priorità. Consentono di acquisire le transizioni di stato, nonché la modellazione dei dati che non è facilmente ottenibile con gli attributi.

Dispositivo di esempio completo
Figura 3: un esempio della gerarchia del modello di interazione dei dispositivi Matter

L'endpoint 0 è riservato ai cluster di utilità. I cluster di utilità sono cluster specifici che racchiudono funzionalità di assistenza su un endpoint, come rilevamento, indirizzamento, diagnostica e aggiornamento software. D'altra parte, i cluster di applicazioni supportano azioni principali come on/off o misurazione della temperatura.

Tipi di dispositivi

In totale, quali combinazioni di cluster devono essere incluse quando un produttore di dispositivi pianifica un nuovo dispositivo?

La Matter specifica 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, come Luce dimmerabile, Blocco porta o Lettore video.

I tipi di dispositivi non sono specificati nel Matter documento principale della specifica, ma in un documento di accompagnamento: la libreria dei dispositivi. Allo stesso modo, tutti i cluster di applicazioni sono definiti nella libreria dei cluster di applicazioni. Questi tre documenti sono disponibili sul sito web dei Connectivity Standards Alliance (Alliance) membri.

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 anche cluster che non fanno parte del tipo di dispositivo.

Client e server

I cluster possono essere un cluster client o un cluster server. Mentre un server è stateful e contiene attributi, eventi e comandi, un client è stateless e la sua responsabilità è quella di avviare interazioni con un cluster server remoto, eseguendo quindi:

  • legge e scrive ai relativi attributi remoti.
  • letture dei relativi eventi remoti.
  • chiamata dei relativi 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 che client per quanto riguarda 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 Luce on/off. Questo tipo di dispositivo include un cluster Server on/off che controlla le rispettive uscite di luce fisica.

Tuttavia, come fanno le lampade da tavolo tipiche, i nostri dispositivi fisici includeranno anche un tipo di dispositivo Interruttore della luce on/off per i relativi interruttori on/off locali. Questo tipo di dispositivo deve implementare un cluster Client on/off in modo che possa controllare i cluster server.

Lampade che implementano sia la luce on/off sia l'interruttore della luce
Figura 4: cluster client e server

In questo esempio, il cluster client on/off sul nodo A sta modificando gli attributi del cluster server on/off sul nodo A e sul nodo B, mentre il cluster client del nodo B sta modificando solo il cluster server sul nodo B stesso.

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

Cluster di descrittori

Come suggerisce il nome, il server del cluster di descrittori fornisce informazioni di introspezione. Descrive l'endpoint enumerando:

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

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

Il dispositivo di commissioning o di controllo, come uno smartphone o un hub, può utilizzare le informazioni trovate nel cluster di descrittori per modellare il dispositivo (luce, interruttore, pompa, termostato) e le funzionalità specifiche implementate da quella particolare istanza del dispositivo, mostrando all'utente l'interfaccia utente corretta.

Cluster server

L'attributo ServerList elenca i server dei cluster nell'endpoint.

Cluster client

L'attributo ClientList elenca i client dei 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 degli endpoint utilizzati per l'implementazione di questo tipo di dispositivo.

PartsList dell'endpoint 0 (nodo root) contiene tutti gli endpoint del dispositivo ad eccezione di se stesso (endpoint 0).

PartsList di altri endpoint sarà in genere vuoto. Ad esempio, un sensore di temperatura richiede un cluster 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 Lettore video può essere composto da TV, Lettore video, Speaker e diversi tipi di dispositivi App di contenuti, ognuno su un endpoint diverso.


  1. 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.