Matter
Riferimento del driver Matter - le reti Wi-Fi e Thread in cui entrano i dispositivi, la messa in servizio via Bluetooth nella Fabric locale, il flusso Associa dispositivo, l'identità del nodo, i tag che vengono dal dispositivo e che cosa fa scrivere ciascuno.
Il driver Matter legge le apparecchiature Matter: sensori intelligenti, prese, luci e dispositivi simili certificati per lo standard Matter, sia che entrino nella rete via Wi-Fi sia via Thread. È un driver solo per entrambi. La rete è solo la via d'ingresso: una volta che il dispositivo ci è entrato, Ganter Lab lo legge allo stesso modo, sulla rete locale.
Ganter Lab si comporta come un controllore Matter con una Fabric locale propria: mette in servizio ogni dispositivo una volta sola via Bluetooth Low Energy su questo computer, gli passa le credenziali di una rete registrata nella scheda Reti del driver, e da quel momento in poi gli parla sulla rete locale: attraverso il router per un dispositivo Wi-Fi, attraverso il Thread Border Router per un dispositivo Thread.
Non dici mai a Ganter Lab se un dispositivo è Wi-Fi o Thread: lo dice il dispositivo stesso. Aperta la sessione via Bluetooth, Ganter Lab legge dal dispositivo in quale tipo di rete entra, prima di scriverci qualsiasi cosa, e si ferma con un messaggio suo quando la rete scelta è dell'altro tipo.
Questo rovescia il solito ordine di configurazione. Un dispositivo Matter non parte da un host e da una porta: parte da una cerimonia di associazione, e dopo viene memorizzata soltanto l'identità stabile del nodo messo in servizio.
Che cosa serve prima di associare:
- Un adattatore Bluetooth Low Energy su questo computer, acceso, con Windows che permette a Ganter Lab di usarlo.
- La rete in cui il dispositivo entrerà, registrata nella scheda Reti: per un dispositivo Wi-Fi, il nome del Wi-Fi e la sua password; per un dispositivo Thread, una rete Thread esistente con un Border Router, e il suo Active Operational Dataset completo. Ganter Lab fa entrare i dispositivi nella propria rete; non ne può inventare le credenziali.
- Il codice di configurazione del dispositivo, stampato sul dispositivo o sulla sua confezione, e il dispositivo in modalità di associazione.
Reti
Il pannello del driver Matter porta una scheda intitolata Reti: le reti Wi-Fi e Thread in cui entrano i dispositivi, una per riga. Una rete si registra una volta, prima del primo dispositivo, e serve a tutti i dispositivi associati in essa, quindi associare una seconda lampada sullo stesso Wi-Fi non chiede più nulla. La scheda viene disegnata solo per un ruolo che può configurare il Connector, perché custodisce i segreti delle reti e non serve ad altro che all'associazione.
La testata della scheda porta i suoi comandi, in quest'ordine:
| Comando | Che cosa fa | Che cosa non fa |
|---|---|---|
| Aggiungi rete Wi-Fi | Aggiunge una rete Wi-Fi e la seleziona. Quando questo computer è collegato a un Wi-Fi il cui nome non è ancora registrato, la nuova rete prende quel nome; altrimenti parte senza nome, e lo scrive l'operatore. Windows consegna solo il nome, e solo quando lascia che le app conoscano la posizione di questo computer (Windows 11 chiede questo permesso); la password la scrive sempre l'operatore. | Non legge la password da Windows e non controlla che la rete esista. |
| Aggiungi rete Thread | Aggiunge una rete Thread e la seleziona, con un nome provvisorio (numerato quando è già preso) finché non gliene si dà uno proprio, in attesa del suo dataset. | Non parla con il Border Router: Ganter Lab usa solo il dataset della rete che il Border Router ha creato. |
| Rimuovi rete | Rimuove la rete selezionata, dopo una conferma che la nomina e dice che i dispositivi già associati non vengono toccati. Senza una rete selezionata resta disegnato e disattivato, e il suo suggerimento lo dice. | Non tocca i dispositivi già associati in quella rete: continuano a funzionare e ne tengono il nome nel loro campo Rete. |
La tabella mostra, per ogni rete, il Nome, il Tipo di rete (Rete Wi-Fi o Rete Thread) e lo Stato: Pronta per l'associazione, oppure che cosa manca ancora alla rete. Una rete il cui nome non è ancora scritto appare come Rete senza nome.
I campi della rete selezionata si modificano sul posto, sotto la tabella, e si salvano da soli. Un valore che le regole qui sotto rifiutano non viene scritto, e il campo dice perché.
| Tipo | Campo | Che cos'è | Formato |
|---|---|---|---|
| Wi-Fi | Nome della Wi-Fi | Il nome (SSID) consegnato al dispositivo, esattamente come il router lo trasmette: le maiuscole contano. Ogni nome di Wi-Fi si registra una volta. | Da 1 a 32 byte di testo (UTF-8). |
| Wi-Fi | Password di accesso | La password del Wi-Fi consegnata al dispositivo. | Vuota per una rete aperta; altrimenti da 8 a 63 caratteri ASCII stampabili (una passphrase WPA), oppure esattamente 64 cifre esadecimali (la chiave grezza). |
| Thread | Nome | Il nome scelto per la rete, per riconoscerla durante l'associazione e su ogni dispositivo. Ogni nome di rete Thread si registra una volta. | Testo libero. |
| Thread | Dataset operativo Thread | Il dataset attivo completo della rete Thread, ottenuto dall'amministratore della rete o dal suo Border Router. Home Assistant lo mostra; Alexa e Apple no. | Testo esadecimale (gli spazi e un prefisso hex: sono tollerati), al massimo 254 byte una volta decodificato. Deve essere il dataset completo: Active Timestamp, Channel, Channel Mask, Extended PAN ID, Mesh-Local Prefix, Network Key, Network Name, PAN ID, PSKc e Security Policy devono esserci tutti, e un dataset parziale o malformato viene rifiutato nominando l'elemento mancante. |
Due cose decidono se un dispositivo Wi-Fi si può associare, e la scheda le dice entrambe accanto ai campi:
- La maggior parte dei dispositivi entra solo in reti a 2,4 GHz. Un router che trasmette lo stesso nome a 2,4 GHz e a 5 GHz li serve; una rete che esiste solo a 5 GHz no.
- Questo computer e i dispositivi devono stare sulla stessa rete locale. Una rete ospiti, o l'isolamento dei client attivo sul router, impedisce al computer di trovare i dispositivi una volta che sono entrati.
Una rete serve all'associazione solo finché il suo segreto rispetta queste regole: una rete Wi-Fi con nome e password validi (vuota compresa), una rete Thread con un dataset valido.
Modificare una rete cambia quello che consegna la prossima associazione, mai quello che un dispositivo ha già ricevuto. Un dispositivo che deve passare a un'altra rete, o il cui router ha una password nuova, viene ripristinato e associato di nuovo.
Il flusso Associa dispositivo
Sul driver Matter la barra degli strumenti offre Associa dispositivo dove gli altri driver offrono Aggiungi dispositivo, e così la voce Matter del menu Nuovo… della colonna. Finché nessuna rete serve all'associazione, resta disegnato e disattivato, con il suggerimento "Aggiungere prima la rete in cui il dispositivo deve entrare." Altrimenti apre un modulo:
| Campo | Che cos'è | Formato | Predefinito |
|---|---|---|---|
| Nome del dispositivo | Il nome modificabile che il dispositivo porterà nel Connector. | Testo libero | Dispositivo Matter |
| Codice di configurazione Matter | Il codice manuale ufficiale di associazione, oppure il payload QR completo. Si inserisce mascherato, con un comando che lo rivela. | Un codice manuale di 11 o 21 cifre (trattini e spazi vengono ignorati; la cifra di controllo viene verificata), oppure il payload QR completo che inizia con MT:. Un payload QR che non annuncia la messa in servizio via Bluetooth viene rifiutato, come pure i passcode riservati o fuori intervallo. |
vuoto |
| Rete | La rete registrata in cui il dispositivo entrerà. Con una sola rete che serve, il modulo dice in una riga quale rete è e di che tipo, senza nulla da scegliere; con più reti, è un elenco di scelta. | Una delle reti che servono nella scheda Reti | l'unica, quando ce n'è una sola |
| Cartella di destinazione | Solo quando il Nuovo dispositivo di una cartella ha aperto il modulo: la cartella in cui viene archiviato il dispositivo associato. Aperto da Associa dispositivo, questa riga non c'è e il dispositivo resta al livello proprio del driver. | Sola lettura | la cartella che ha aperto il modulo |
Una cartella del driver Matter offre Nuovo dispositivo (sulla sua tabella Dispositivi, nel suo menu del clic destro e in Nuovo… > Matter > <Cartella>). Apre questo stesso modulo, disattivato allo stesso modo finché nessuna rete serve, e il dispositivo associato viene archiviato in quella cartella.
Associa dispositivo nel modulo resta disattivato finché il nome e il codice di configurazione non sono compilati o nessuna rete serve. Mentre l'associazione gira, il modulo riferisce la sua fase: Verifica (controllo del codice e del segreto della rete), Trova (ricerca del dispositivo via Bluetooth), Associa (autenticazione con il codice di configurazione e lettura del tipo di rete in cui il dispositivo entra), Entra nella rete (invio della rete al dispositivo, poi ricerca del dispositivo sulla rete locale finché non risponde; la riga di stato dice se quella rete è Wi-Fi o Thread), Salva (apertura della sessione sicura con il dispositivo sulla rete locale, conclusione della sua messa in servizio e registrazione del nodo nella Fabric locale).
Annulla è disponibile finché il dispositivo fisico non è ancora stato modificato; una volta che la messa in servizio ha alterato il dispositivo, il pulsante dice che Ganter Lab sta chiudendo in sicurezza e il flusso completa la registrazione invece di abbandonare un nodo messo in servizio a metà. Si esegue un'associazione per volta; un secondo tentativo mentre una è in corso viene rifiutato.
Il nuovo dispositivo registra il nome della rete in cui è entrato, mostrato nel suo campo Rete. Associare il dispositivo successivo sulla stessa rete chiede solo il suo nome e il suo codice di configurazione.
Quando l'associazione fallisce
Se l'associazione fallisce, il messaggio dichiara la causa e che cosa fare:
| Causa | Che cosa significa | L'apparecchiatura | Che cosa fare |
|---|---|---|---|
| Codice di configurazione non valido | Il codice non è un codice manuale ufficiale di 11 o 21 cifre, né un payload QR MT: completo. |
Intatta | Rileggi il codice stampato. |
| Dataset Thread non valido | Il dataset della rete Thread scelta non è completo e ben formato. | Intatta | Copia di nuovo il dataset attivo completo in quella rete, nella scheda Reti. |
| Nome o password del Wi-Fi non validi | Il nome o la password della rete Wi-Fi scelta non rispettano le regole della scheda Reti. | Intatta | Correggili nella scheda. |
| Bluetooth assente, spento o negato | Questo computer non ha un adattatore Bluetooth Low Energy utilizzabile, il Bluetooth è spento, oppure Windows ne ha negato l'accesso a Ganter Lab. | Intatta | Accendi il Bluetooth, o permetti a Ganter Lab di usarlo in Windows, poi riprova. |
| Nessun dispositivo corrispondente trovato | Nessun dispositivo in modalità di associazione ha risposto per questo codice di configurazione. | Intatta | Metti il dispositivo in modalità di associazione, tienilo vicino a questo computer e riprova. |
| Codice di configurazione rifiutato | Il dispositivo ha rifiutato il codice. | Intatta | Rileggi il codice stampato e rimetti il dispositivo in modalità di associazione. |
| Il dispositivo entra via Wi-Fi | La rete scelta è Thread. | Intatta: è stata letta, e non ci è stato scritto nulla | Registra la rete Wi-Fi in cui il dispositivo entrerà e associa di nuovo, scegliendola. |
| Il dispositivo entra via Thread | La rete scelta è Wi-Fi. | Intatta: è stata letta, e non ci è stato scritto nulla | Registra la rete Thread e associa di nuovo, scegliendola. |
| Il dispositivo è cablato (Ethernet) | L'associazione via Bluetooth non serve a un dispositivo cablato. | Intatta: è stata letta, e non ci è stato scritto nulla | Ganter Lab non può associare questo dispositivo. |
| Il dispositivo non dice la sua rete | Il dispositivo non dichiara né Wi-Fi, né Thread, né Ethernet. | Intatta: è stata letta, e non ci è stato scritto nulla | Ganter Lab non può associare questo dispositivo. |
| Rete Wi-Fi non trovata | Il dispositivo ha risposto di non aver trovato nessun Wi-Fi con quel nome: un errore di battitura o di maiuscole, una rete solo a 5 GHz, o un dispositivo fuori portata. | Non conserva nulla: scarta quello che ha ricevuto e torna in modalità di associazione. Nessun ID nodo. | Correggi il nome nella scheda Reti, controlla che il router lo trasmetta a 2,4 GHz e associa di nuovo. |
| Password del Wi-Fi rifiutata | Il dispositivo ha risposto che il Wi-Fi ha rifiutato la password. | Non conserva nulla: scarta quello che ha ricevuto e torna in modalità di associazione. Nessun ID nodo. | Correggi la password nella scheda Reti e associa di nuovo. |
| Il dispositivo non è riuscito a entrare nella rete | Il dispositivo ha risposto di non essere riuscito a entrare nella rete, per un motivo diverso dai due qui sopra (sul Thread, ogni rifiuto, compresa una rete che non ha trovato). | Non conserva nulla: scarta quello che ha ricevuto e torna in modalità di associazione. Nessun ID nodo. | Controlla la rete nella scheda Reti (per il Thread, copia di nuovo il dataset attivo in vigore e controlla che il Border Router sia acceso) e associa di nuovo. |
| Il dispositivo non è comparso sulla rete | Il dispositivo non ha dato alcuna risposta sulla rete, oppure non è mai comparso sulla rete locale dopo. Alcuni dispositivi lasciano il Bluetooth per entrare nella rete e non possono rispondere affatto. | Messa in servizio: il messaggio mostra l'ID nodo | Per il Wi-Fi, controlla che questo computer e il dispositivo stiano sulla stessa rete locale, senza rete ospiti né isolamento dei client tra loro; per il Thread, che il Border Router sia acceso e raggiungibile. Poi recupera il nodo con Rileva. |
| La sessione sicura non si è aperta | Il dispositivo è entrato nella rete ed è stato trovato lì, ma la sessione sicura con esso, o il completamento dell'associazione tramite questa sessione, non è riuscito. Il diario tecnico indica il passo e cosa ha risposto il dispositivo. | Messa in servizio: il messaggio mostra l'ID nodo | Recupera il nodo con Rileva. Se Rileva lo trova senza valori mentre il dispositivo è acceso, rimetti il dispositivo in modalità di associazione e associalo di nuovo. |
| Un'altra associazione in corso | Si esegue un'associazione per volta. | Intatta | Aspetta che finisca e riprova. |
| Non è stato possibile salvare la Fabric locale | Ganter Lab non è riuscito a conservare la Fabric in sicurezza. | Intatta quando succede prima che l'associazione cominci; messa in servizio, con l'ID nodo, quando succede dopo | Risolvi il problema di archiviazione prima di ripristinare qualsiasi cosa. |
Ogni volta che un fallimento arriva dopo che l'apparecchiatura era già stata messa in servizio, il messaggio lo dice e mostra l'ID nodo: il nodo resta nella Fabric e si può aggiungere più tardi con Rileva, appena raggiunge la rete. In quel caso non ripristinare il dispositivo; solo un messaggio che dice che non è stato salvato nulla significa che l'apparecchiatura è rimasta intatta.
Un dispositivo che risponde di non essere riuscito a entrare nella rete è l'eccezione: non conserva nulla che valga la pena tenere. Ganter Lab chiude l'associazione sul dispositivo, che scarta quello che ha ricevuto e torna subito in modalità di associazione, e toglie il suo nodo dalla Fabric; il messaggio quindi non riporta un ID nodo, e Rileva non elenca mai un nodo che non può rispondere. Correggi la rete e associa di nuovo. Solo un dispositivo che non ha dato alcuna risposta mantiene il suo nodo, perché se sia entrato nella rete lo si sa solo quando compare sulla rete locale.
Che cosa viene conservato
| Che cosa | Dove sta | Come |
|---|---|---|
| Il nome e il tipo di una rete | La configurazione della stazione | Come sono stati scritti. |
| La password del Wi-Fi e il dataset operativo Thread | La configurazione della stazione | Protetti per l'utente Windows che li ha inseriti, come le password dei dispositivi: con un altro account Windows risultano vuoti e vanno inseriti di nuovo. Un backup li lascia indietro; l'esportazione per un'altra macchina li porta con sé, sigillati con la sua password. |
| Il codice di configurazione | Da nessuna parte | Esiste solo nel modulo mentre l'associazione gira, e viene cancellato quando l'associazione finisce, fallisce o viene annullata. |
| La rete in cui è entrato un dispositivo | La configurazione del dispositivo | Il suo nome, mostrato nel campo Rete del dispositivo. |
| L'identità del dispositivo | La configurazione del dispositivo e la Fabric locale | L'ID nodo. |
La password del Wi-Fi e il dataset non compaiono mai nel diario tecnico, nell'indirizzo di un dispositivo né nella sua Thing Description. Reti e associazione non vengono offerte agli agenti tramite il server MCP: l'associazione richiede qualcuno accanto al dispositivo, e le reti custodiscono segreti.
L'identità del nodo
Un dispositivo associato è legato all'ID nodo stabile a 64 bit dell'apparecchiatura, mostrato in sola lettura nella sua scheda Connessione come 16 cifre esadecimali, accanto allo stato del dispositivo. Il nome visualizzato è libero e si può cambiare; l'ID nodo no. Un dispositivo la cui identità memorizzata non si riesce più a leggere mostra al suo posto Serve una nuova associazione.
Il pannello del dispositivo mostra anche un campo Rete in sola lettura: il nome della rete in cui il dispositivo è entrato quando è stato associato. Un dispositivo associato da una versione che non lo registrava dice che non è stato registrato nulla. Il campo è una registrazione, non un'impostazione: modificare o rimuovere quella rete nella scheda Reti non cambia nulla sul dispositivo.
Poiché l'identità è l'ID nodo, i dispositivi Matter mantengono stati di connessione indipendenti: disabilitare, eliminare o perdere un nodo non rende indisponibile un altro, ed eliminare un dispositivo rilascia solo il suo uso della sessione sicura, non rimuove l'apparecchiatura dalla Fabric locale.
Rilevamento
Rileva sul driver Matter elenca i nodi già messi in servizio nella Fabric locale di questa applicazione e legge, da ciascuno, i valori che pubblica. Per leggerli apre una sessione sicura con ogni nodo, così un nodo che non è in rete resta in elenco, senza valori, una volta che la sua sessione non è riuscita ad aprirsi. I candidati del rilevamento portano l'identità del nodo e nessun segreto di configurazione. Il flusso generale del rilevamento è descritto in Rilevamento.
| Il nodo | La sua scheda | I suoi comandi |
|---|---|---|
| Non ha un dispositivo qui: il suo dispositivo è stato eliminato, oppure la sua associazione si è conclusa senza crearne uno | I valori che pubblica, ciascuno spuntato | Aggiungi dispositivo crea il dispositivo con i valori spuntati come suoi tag, senza una nuova cerimonia. |
| È un dispositivo configurato, con valori che non hanno ancora un tag | Segnato come già configurato, con quanti valori pubblica che non sono ancora tag, e quei valori spuntati | Aggiungi i tag aggiunge i valori spuntati a quel dispositivo; Apri lo apre. |
| È un dispositivo configurato con un tag per ogni valore | « Già configurato, con un tag per ogni valore che il dispositivo pubblica. » | Apri lo apre. |
| È un dispositivo configurato che non ha segnalato alcun valore | « Già configurato. Il dispositivo non ha segnalato alcun valore: eseguire di nuovo Rileva quando è in linea. » | Apri lo apre. |
I valori di un dispositivo configurato si confrontano con i suoi tag per uscita, cluster e attributo, mai per nome: un tag rinominato conta ancora, e un valore non viene mai aggiunto due volte.
La pagina del dispositivo stesso offre lo stesso senza lasciarla: Rileva tag, nell'intestazione della sua scheda Tag, legge solo quel nodo ed elenca, spuntati, i valori per cui non ha ancora un tag, con Aggiungi i tag (vedere Rilevare i tag di un dispositivo).
Tag
I tag di un dispositivo Matter vengono dal dispositivo stesso: nessuno digita un cluster o un numero di attributo per loro. Un'associazione che riesce porta dritto a loro. Il registro delle azioni legge « Dispositivo Matter 'Luce della cucina' associato. », la pagina si apre sul driver Matter, con il dispositivo nuovo evidenziato nella sua tabella Dispositivi, e parte subito una scansione di quel solo dispositivo. Il dispositivo che l'associazione ha creato compare in Dispositivi rilevati con i valori che pubblica, tutti spuntati, e la scansione si chiude con « Spuntare i valori di 'Luce della cucina' da creare come tag, poi Aggiungi i tag. » Si toglie la spunta a ciò che non serve e si preme Aggiungi i tag; il registro delle azioni legge allora « 5 tag aggiunti a 'Luce della cucina'. » Un dispositivo che non ha ancora risposto non segnala nulla: « 'Luce della cucina' non ha ancora segnalato alcun valore. Eseguire di nuovo Rileva quando è in linea. » La stessa scheda torna a ogni Rileva successivo, con i valori per cui il dispositivo non ha ancora un tag.
Aggiungi i tag viene disegnato solo per un ruolo con Configurare Connector. Resta in grigio, con il motivo come suggerimento, mentre è in corso una scansione o un'associazione, mentre la stazione rifiuta le modifiche e finché nulla è spuntato (« Spuntare almeno un valore da aggiungere. »). Un valore di cui il dispositivo legge già l'uscita, il cluster e l'attributo non viene mai aggiunto di nuovo; quando ogni valore spuntato c'è già, non si salva nulla: « 'Luce della cucina' ha già un tag per ogni valore spuntato, quindi non è stato aggiunto nulla. » Un nome che un altro tag del dispositivo porta già riceve un numero dopo, come in Luminosità (2).
La scansione legge ciò che il dispositivo pubblica, così come lo organizza la specifica Matter:
| Che cosa | Dove lo dice il dispositivo |
|---|---|
| Le sue uscite (endpoint) | Il cluster Descriptor (0x001D) sull'endpoint 0, attributo PartsList |
| I cluster di ogni uscita | Il Descriptor di quell'uscita, attributo ServerList |
| I valori di ogni cluster | Il suo attributo AttributeList (0xFFFB) |
| I comandi che ogni cluster accetta | Il suo attributo AcceptedCommandList (0xFFF9) |
| Le funzioni opzionali che ogni cluster implementa | Il suo attributo FeatureMap (0xFFFC) |
| La lettura attuale di ogni valore | Il valore stesso, letto una volta |
Che cosa offre la scansione, e con quale nome:
| Un valore | Offerto come |
|---|---|
| Uno che il driver conosce (la sezione seguente) | Il suo nome chiaro nella lingua della stazione e il tipo che gli dà la specifica; scrivibile solo quando il dispositivo accetta il modo in cui la specifica lo cambia, altrimenti in sola lettura |
| Uno che il driver conosce, di una funzione che il cluster non implementa: tonalità e saturazione senza la funzione Hue and Saturation, temperatura di colore senza la funzione Color Temperature | Non offerto |
| Uno che il driver non conosce | In sola lettura, con il suo nome nella specifica Matter (Level Control OnLevel), oppure con il cluster e il numero dell'attributo quando il driver non conosce l'attributo (On/Off attribute 0x131B0001); il suo tipo è quello della lettura che il dispositivo ha restituito |
| Lo stesso valore su più di un'uscita | Il suo nome dice quale uscita, come in Luminosità (uscita 2) |
| Un attributo globale (da 0xFFF8 a 0xFFFD), o un valore del nodo stesso (endpoint 0) | Non offerto |
| Un elenco o una struttura, un valore di un tipo che il driver non gestisce, un valore per cui il dispositivo non ha restituito una lettura | Lasciato fuori, e contato nella riga che chiude la scansione |
Un tag offerto come scrivibile arriva con l'accesso Lettura e scrittura; tutti gli altri arrivano in Sola lettura.
I valori che il driver conosce
Il driver porta una tabella, presa dalla specifica Matter, dei valori che conosce per nome e di come cambia ciascuno. Un valore cambia in uno di tre modi: con un comando che il driver invia e che il dispositivo deve elencare tra i comandi che accetta; con una scrittura dell'attributo stesso, dove la specifica lo rende scrivibile e il dispositivo lo elenca; oppure in nessun modo, per un valore che il dispositivo si limita a segnalare.
| Valore | Cluster e attributo | Tipo | Che cosa fa sul dispositivo scriverlo | Intervallo che la specifica definisce |
|---|---|---|---|---|
| Acceso | On/Off (0x0006), OnOff (0x0000) |
Boolean | true invia il comando On (0x01), false invia Off (0x00); scrivibile solo quando il dispositivo accetta entrambi |
true o false |
| Luminosità | Level Control (0x0008), CurrentLevel (0x0000) |
UInt32 | Invia MoveToLevelWithOnOff (0x04) con il livello, un tempo di transizione di 0 e nessuna opzione forzata: l'uscita si accende con il livello e si spegne al minimo |
da 0 a 254 |
| Tonalità | Color Control (0x0300), CurrentHue (0x0000) |
UInt32 | Invia MoveToHue (0x00) per la via più breve, con un tempo di transizione di 0; solo con la funzione Hue and Saturation |
da 0 a 254 |
| Saturazione | Color Control (0x0300), CurrentSaturation (0x0001) |
UInt32 | Invia MoveToSaturation (0x03) con un tempo di transizione di 0; solo con la funzione Hue and Saturation |
da 0 a 254 |
| Temperatura di colore | Color Control (0x0300), ColorTemperatureMireds (0x0007) |
UInt32 | Invia MoveToColorTemperature (0x0A) con un tempo di transizione di 0; solo con la funzione Color Temperature. Il dispositivo tiene il valore entro i propri limiti |
da 0 a 65279, in mired |
| Posizione della tapparella | Window Covering (0x0102), CurrentPositionLiftPercent100ths (0x000E) |
UInt32 | Invia GoToLiftPercentage (0x05) |
da 0 (aperta) a 10000 (chiusa), in centesimi di punto percentuale |
| Temperatura ambiente | Thermostat (0x0201), LocalTemperature (0x0000) |
Float, in °C | Nulla: sola lettura | da -27315 a 32767, in centesimi di grado Celsius; si legge da -273,15 a 327,67 °C |
| Setpoint di raffrescamento | Thermostat (0x0201), OccupiedCoolingSetpoint (0x0011) |
Float, in °C | Scrive l'attributo. Il dispositivo rifiuta un setpoint fuori dai propri limiti | da -27315 a 32767, in centesimi di grado Celsius; si legge da -273,15 a 327,67 °C |
| Setpoint di riscaldamento | Thermostat (0x0201), OccupiedHeatingSetpoint (0x0012) |
Float, in °C | Scrive l'attributo. Il dispositivo rifiuta un setpoint fuori dai propri limiti | da -27315 a 32767, in centesimi di grado Celsius; si legge da -273,15 a 327,67 °C |
| Modalità del ventilatore | Fan Control (0x0202), FanMode (0x0000) |
UInt32 | Scrive l'attributo | 0 spento, 1 bassa, 2 media, 3 alta, 4 acceso, 5 automatica, 6 intelligente |
| Impostazione della velocità del ventilatore | Fan Control (0x0202), PercentSetting (0x0002) |
UInt32 | Scrive l'attributo | da 0 a 100 percento |
| Velocità del ventilatore | Fan Control (0x0202), PercentCurrent (0x0003) |
UInt32 | Nulla: sola lettura | da 0 a 100 percento |
| Temperatura | Temperature Measurement (0x0402), MeasuredValue (0x0000) |
Float, in °C | Nulla: sola lettura | da -27315 a 32767, in centesimi di grado Celsius; si legge da -273,15 a 327,67 °C |
| Umidità | Relative Humidity Measurement (0x0405), MeasuredValue (0x0000) |
Float, in % | Nulla: sola lettura | da 0 a 10000, in centesimi di punto percentuale; si legge da 0 a 100 % |
| Illuminamento | Illuminance Measurement (0x0400), MeasuredValue (0x0000) |
UInt32 | Nulla: sola lettura | da 0 a 65534, cioè 10000 × log10(lux) + 1 |
| Pressione | Pressure Measurement (0x0403), MeasuredValue (0x0000) |
Float, in kPa | Nulla: sola lettura | da -32767 a 32767, in decimi di kilopascal; si legge da -3276,7 a 3276,7 kPa |
| Presenza | Occupancy Sensing (0x0406), Occupancy (0x0000) |
Boolean | Nulla: sola lettura | true quando c'è qualcuno |
| Stato | Boolean State (0x0045), StateValue (0x0000) |
Boolean | Nulla: sola lettura | true o false |
La specifica invia temperature, umidità e pressione in unità fisse: centesimi di grado Celsius, centesimi di percento e decimi di kilopascal. Il rilevamento offre questi valori già in °C, % e kPa: il tag arriva con il fattore nel suo stadio Scala (0,01 per una temperatura e un'umidità, 0,1 per una pressione) e con l'unità, così un dispositivo che invia 2150 si legge 21,5 °C. Una scrittura disfa quello stadio prima che il valore parta, così un setpoint scritto come 21,5 arriva al dispositivo come 2150. L'illuminamento è logaritmico (10000 × log10(lux) + 1), quindi nessun fattore lo converte: si legge il numero che il dispositivo invia. Anche ogni altro valore si legge come lo invia il dispositivo.
Le serrature, il colore per coordinate X e Y, le scene, i gruppi e il comando Toggle non sono
nella tabella. Un dispositivo Matter non ha nemmeno comandi propri: ogni modifica è la scrittura di
uno dei suoi tag.
Scrivere un valore
Un tag Matter con accesso Lettura e scrittura cambia il dispositivo quando viene scritto: dalla sua scheda Valore in tempo reale, da un controllo della dashboard, dalla Logic o da un agente. La scrittura entra nella coda del dispositivo come quella di ogni driver, a turno con le letture del dispositivo, e la sua risposta è quella del dispositivo stesso. Il driver sceglie il comando Matter o la scrittura dell'attributo dalla tabella; nessuno sceglie un comando. Solo il SUCCESS del dispositivo conta come scritto. Tutto il resto viene rifiutato, con un motivo:
| Che cosa succede | Dove si decide | Il motivo dato |
|---|---|---|
| Il punto non è un valore della tabella del driver | Prima di inviare qualsiasi cosa | Il driver non sa come il dispositivo cambia quel valore, quindi il tag lo legge soltanto. |
| Il punto è un valore che la tabella segna in sola lettura | Prima di inviare qualsiasi cosa | Il dispositivo segnala quel valore e nulla dall'esterno lo imposta. |
| Il valore scritto non è né true né false (per un valore Boolean), oppure non è un numero intero | Prima di inviare qualsiasi cosa | Che cosa accetta il valore, e che cosa è stato scritto. |
| Il valore è fuori dall'intervallo che la specifica definisce | Prima di inviare qualsiasi cosa | L'intervallo, come lo dà la tabella qui sopra. |
| Il tag non nomina alcun cluster | Prima di inviare qualsiasi cosa | Che un valore Matter si trova tramite la sua uscita, il suo cluster e il suo attributo. |
| Il dispositivo risponde con uno stato diverso da SUCCESS | Dal dispositivo | Lo stato come lo ha dato il dispositivo: il suo nome nella specifica e il suo numero, per esempio CONSTRAINT_ERROR, 0x87 (il valore è fuori da ciò che il dispositivo accetta) oppure UNSUPPORTED_COMMAND, 0x81 (il dispositivo non accetta il comando che cambia questo valore). Uno stato che il cluster aggiunge segue (FAILURE, 0x01, cluster 0x02), e uno stato che la specifica non nomina si legge con il solo numero. |
| Il dispositivo non risponde in tempo | Dal dispositivo | Nessuna risposta. |
Una scrittura rifiutata non viene mai segnalata come scritta, né come un'apparecchiatura
irraggiungibile. Nella pagina del tag la riga di stato legge « Scrittura rifiutata
dall'apparecchiatura: CONSTRAINT_ERROR, 0x87. » quando il dispositivo l'ha rifiutata, con il motivo
al posto dello stato per un rifiuto deciso prima di inviare qualsiasi cosa, e « Scrittura non
confermata: l'apparecchiatura non ha risposto in tempo. » quando non è arrivata risposta;
« Scrittura non riuscita: non è stato possibile raggiungere l'apparecchiatura. » resta per un
dispositivo non connesso. Il motivo viaggia anche con la scrittura: la riga del registro di quella
scrittura lo nomina, con ciò che lo stato significa, e il tag_write di un agente lo restituisce.
Un tag creato a mano
Per il raro valore che il dispositivo non pubblica in una forma che la scansione offra, Aggiungi
tag su un dispositivo Matter crea un tag da compilare a mano. La sua scheda Sorgente mostra tre
campi su una riga, e l'anteprima dell'indirizzo sotto di essi li compone come
<endpoint>/<cluster>/<attribute>, in decimale (1/8/0 è la luminosità della prima uscita).
Finché non si sceglie un cluster il tag non viene salvato, e il pannello dice: « Scegliere il
cluster che questo tag legge. Senza, al dispositivo non viene mai chiesto nulla. »
| Campo | Che cosa fa | Valori | Predefinito |
|---|---|---|---|
| Uscita (endpoint) | Quale uscita del dispositivo il tag legge. | da 0 a 65535; 1 è la prima uscita comandabile, 0 il nodo stesso | 1 |
| Cluster Matter | Quale cluster di quell'uscita il tag legge. | I cluster del catalogo Matter con il loro nome nella specifica e il loro numero, come in Level Control (0x0008); un cluster che il catalogo non nomina, trovato da una scansione, compare per primo con il suo numero |
nessuno |
| Attributo | Quale attributo del cluster il tag legge. | 0 e oltre; 0 è il valore proprio del cluster | 0 |
Il nome del tag è libero: nomina il tag e non seleziona nulla sul dispositivo. Il tipo di dato si sceglie tra Boolean, Int32, UInt32, Float, Double e String; una lettura che il tipo dichiarato non può rappresentare si legge come errore invece che come numero sostitutivo. Il valore arriva come lo invia il dispositivo: una temperatura, un'umidità o una pressione creata a mano si legge in centesimi o decimi finché non le dai, nel suo stadio Scala, il fattore e l'unità della tabella sopra.
Il campo di accesso offre la scrittura solo dove la tabella del driver cambia il valore; altrimenti offre Sola lettura e dice sotto il perché:
| Il punto | Il campo di accesso offre | Che cosa dice |
|---|---|---|
| Un valore della tabella che un comando o una scrittura dell'attributo cambia | Sola lettura, Sola scrittura e Lettura e scrittura | Niente |
| Nessun cluster ancora scelto | Sola lettura | « Sola lettura finché il tag non indica un valore del dispositivo: sceglierne il cluster. » |
| Un valore che la tabella non conosce | Sola lettura | « Sola lettura: il driver non sa come il dispositivo cambia questo valore. » |
| Un valore che la tabella segna di sola lettura | Sola lettura | « Sola lettura: il dispositivo riporta questo valore e nulla dall'esterno lo imposta. » |
Quando una modifica dell'uscita, del cluster o dell'attributo punta il tag su un valore che il driver non può scrivere, il suo accesso torna a Sola lettura. Un tag offerto dal rilevamento mantiene l'accesso che il rilevamento gli ha dato, perché solo il rilevamento chiede al dispositivo quali comandi accetta: un valore che il dispositivo non ha elencato resta in Sola lettura, e il campo offre comunque la scrittura.
Tag salvati da versioni precedenti
Una versione precedente nominava il cluster di un tag Matter solo con il nome del tag, con un
indirizzo <endpoint>/<attribute>. Quando questa versione si avvia per la prima volta, ogni tag di
un dispositivo Matter il cui nome è un cluster del catalogo Matter (la parte dopo gli ultimi due
punti, senza gli spazi intorno, senza distinguere maiuscole e minuscole) riceve quel cluster, così
continua a leggere esattamente il valore che leggeva. Il suo nome resta com'era, e l'anteprima del
suo indirizzo mostra allora <endpoint>/<cluster>/<attribute>. Un tag il cui nome non
corrispondeva ad alcun cluster non ha mai letto nulla: resta senza cluster, le sue letture vengono
rifiutate con un motivo che lo dice, e la sua pagina chiede il cluster. Un tag convertito mantiene
l'accesso che aveva, Sola lettura, l'unico che quelle versioni offrivano; per scriverlo, scegli
Lettura e scrittura, che funziona per i valori della tabella qui sopra.