Il modello dei dati del dispositivo

I dispositivi in Matter hanno un modello di dati ben definito (DM), ovvero una definizione 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 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 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 a utility come la 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 la Messa in servizio.
  • Controller: un nodo che può controllare uno o più nodi. Alcuni esempi sono Google Home app (GHA), Google Assistant e Google Nest Hub (2nd gen). Alcuni tipi di dispositivi, come l'interruttore dimmer, 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 dispositivo controllato, ad eccezione di alcuni tipi di dispositivi che hanno il ruolo di dispositivo di controllo, ad esempio l'interruttore di illuminazione On/Off. L'interruttore di illuminazione on/off può solo essere un controller. Non può essere un controllato.
  • Fornitore 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. Si tratta di un altro passaggio nella gerarchia dei dispositivi, in quanto raggruppano funzionalità specifiche come un gruppo on/off su una presa smart o un gruppo di controllo della luminosità su un endpoint di illuminazione dimmerabile.

Un nodo può avere anche più endpoint, ognuno dei quali crea un'istanza della stessa funzionalità. Ad esempio, una lampada potrebbe esporre il controllo indipendente di singole lampade o una ciabatta di corrente potrebbe esporre il controllo di singole prese.

Attributi

All'ultimo livello troviamo gli Attributi, ovvero gli stati detenuti dal nodo, come l'attributo livello corrente di un cluster di controllo del livello. Gli attributi possono essere definiti come tipi di dati diversi, ad esempio 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, ovvero azioni che possono essere eseguite. Sono l'equivalente nel DM di Matter di una chiamata di procedura remota. I comandi sono simili ai verbi, ad esempio chiudi porta in un cluster di serrature di porte. I comandi possono generare risposte e risultati. In Matter, queste risposte sono definite anche come comandi, in direzione opposta.

Eventi

Infine, i cluster possono avere anche 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 in aumento monotonico, un timestamp e una priorità. Consentono di acquisire le transizioni di stato, nonché la definizione di modelli di dati che non è possibile ottenere facilmente con gli attributi.

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

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

Tipi di dispositivi

Nel complesso, 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 è un insieme di cluster obbligatori e facoltativi che definiscono gli attributi di primo livello di un dispositivo fisico, ad esempio Luce dimmerabile, Serratura di casa o Lettore video.

I tipi di dispositivo non sono specificati nel documento principale della specifica Matter, ma in un documento aggiuntivo: la Device Library. Analogamente, tutti i cluster di applicazioni sono definiti nella libreria dei cluster di applicazioni. Questi tre documenti sono disponibili sul Connectivity Standards Alliance (Alliance) sito web per i 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 di client o un cluster di server. Mentre un server è stateful e contiene attributi, eventi e comandi, un client è stateless e ha il compito di avviare interazioni con un cluster di server remoto, eseguendo quindi:

  • Leggi da e scrivi negli attributi remoti.
  • Leggi gli eventi remoti.
  • Richiamo dei suoi comandi remoti.

Sebbene il modello di dati sia gerarchico all'interno di un nodo, la relazione tra i nodi non lo è. I nodi in Matter non hanno relazioni verticali di tipo controller/periferica o leader/follower. Al contrario, il rapporto è orizzontale: qualsiasi cluster può essere Server o Client. Pertanto, un Nodo può essere sia Server che 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 Luce On/Off. Questo tipo di dispositivo include un cluster di server On/Off che controlla le rispettive uscite di luce fisiche.

Tuttavia, come le normali lampade da tavolo, i nostri dispositivi fisici includeranno anche un tipo di dispositivo Interruttore di illuminazione On/Off per gli interruttori di accensione/spegnimento locali. Questo tipo di dispositivo deve implementare un cluster di client On/Off per poter controllare i cluster di server.

Lampade che implementano sia la luce On/Off sia l'interruttore della luce
Figura 4: cluster di client e 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 illustreremo 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 sull'introspezione. Descrivi l'endpoint elencandone:

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

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

Il commissario o il dispositivo di controllo, ad esempio uno smartphone o un hub, può utilizzare le informazioni presenti nel cluster di descrittori per modellare il dispositivo (lampada, interruttore, pompa, termostato) e le funzionalità specifiche implementate da quella determinata istanza del dispositivo, mostrando all'utente l'interfaccia utente corretta.

Cluster di server

L'attributo ServerList elenca i server di 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 l'implementazione di questo tipo di dispositivo.

Il PartsList dell'endpoint 0 (Nodo principale) contiene tutti gli endpoint del dispositivo tranne se stesso (endpoint 0).

In genere, PartsList di altri endpoint sarà 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 Device Type. Ad esempio, un tipo di dispositivo video player può essere composto da TV, video player, altoparlanti e diversi tipi di dispositivi per app di contenuti, ciascuno su un endpoint diverso.


  1. La specifica Matter determina che un dispositivo può avere più nodi. Ad esempio, gli smartphone possono avere più app, ciascuna delle quali è un Nodo diverso. Ai fini di questo articolo introduttivo, tutti i dispositivi conterranno un singolo Nodo. È previsto che la maggior parte dei dispositivi fisici segua questo schema.