Il modello dei dati del dispositivo

I dispositivi in Matter hanno un modello dei dati (DM) ben definito, ovvero un modello gerarchico delle funzionalità di un Dispositivo. Al livello più alto 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 include un insieme di caratteristiche. 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 le OTA dei dispositivi.

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

Ruoli nodo

Un ruolo 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, ad esempio l'interruttore della luce on/off, 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 controllo, ad eccezione di alcuni che hanno il ruolo Controller, come l'interruttore della luce on/off. L'interruttore della luce acceso/spento può fungere solo come controller. Non può essere una persona di controllo.
  • 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. Si tratta di un altro passaggio nella gerarchia dei dispositivi, in quanto raggruppa funzionalità specifiche quali un cluster on/off su una presa smart o un cluster di controllo del livello su un endpoint con luce regolabile.

Un nodo può anche avere diversi endpoint, ognuno dei quali crea un'istanza della stessa funzionalità. Ad esempio, un apparecchio di illuminazione potrebbe esporre il controllo indipendente di singole luci o una presa multipla potrebbe esporre il controllo di singole prese.

Attributi

Nell'ultimo livello troviamo gli Attributi, ovvero gli stati trattenuti dal nodo, come l'attributo livello attuale di un cluster di controllo a 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 i comandi, che sono azioni che possono essere eseguite. Esse sono l'equivalente nel messaggio diretto di Matter di una chiamata di procedura remota. I comandi sono simili a quelli di un verbo, ad esempio lockdoor su un cluster Door Lock. I comandi possono generare risposte e risultati; in Matter, queste risposte sono definite anche Comandi, 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 diario del passato e includono un contatore che aumenta monotonicamente, un timestamp e una priorità. Consentono l'acquisizione delle transizioni di stato, nonché una modellazione dei dati che non è facilmente raggiungibile con gli attributi.

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

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

Tipi di dispositivi

Complessivamente, 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 espanda 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 regolabile, Serratura porta o Video player.

I tipi di dispositivo non sono specificati dal documento principale della specifica Matter, ma da un documento di accompagnamento: la Libreria dei dispositivi. Allo stesso modo, tutti i cluster delle applicazioni sono definiti nella libreria di cluster delle 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 di questo 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 ha la responsabilità di avviare interazioni con un cluster di server remoto, eseguendo così:

  • legge e scrive nei relativi attributi remoti.
  • lezioni dei suoi Eventi remoti.
  • invocazione dei suoi Comandi remoti.

Mentre il messaggio diretto è gerarchico all'interno di un nodo, la relazione tra i nodi non lo è. I nodi in Matter non hanno relazioni controller/periferiche verticali 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 cluster e funzionalità differenti.

Ad esempio, potremmo avere due lampade da tavolo: Nodo A e Nodo B. Entrambi i nodi implementano un tipo di dispositivo Luce acceso/spento. Questo tipo di dispositivo include un cluster server on/off che controlla i rispettivi output luminosi fisici.

Tuttavia, come le tipiche lampade da tavolo, i nostri dispositivi fisici includeranno anche un tipo di dispositivo con interruttore della luce on/off per gli 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 luce accesa/spenta e 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 di server on/off sul nodo A e sul nodo B, mentre il cluster client del nodo B modifica il cluster di server solo sul nodo B.

Nella prossima sezione illustreremo in dettaglio l'interazione tra cluster client e server: il modello di interazione.

Cluster di descrittori

Come suggerisce il nome, Descriptor Cluster Server fornisce informazioni sull'introspezione. Descrive l'endpoint enumerandolo:

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

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

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

Cluster di server

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

Cluster client

L'attributo ClientList elenca i client cluster nell'endpoint.

Elenco dei tipi di dispositivo

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 di ricambio

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

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

In genere, PartsList degli altri endpoint è 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 da una struttura ad albero di più di un'istanza Tipo di dispositivo. Ad esempio, un tipo di dispositivo video player può essere composto da TV, video player, altoparlante 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, ognuna che è un Nodo diverso. Ai fini di questa guida introduttiva, tutti i dispositivi conterranno un singolo Nodo. La maggior parte dei dispositivi fisici segue questo schema.