Lo schema descrive il modello dei dati sottostante che determina la rappresentazione e l'interpretazione dei dati emessi da dispositivi fisici o logici in un sistema Weave.
Lo schema è:
- Standardizzato: contiene definizioni di funzionalità formalmente approvate che forniscono un'interfaccia coerente, indipendentemente dall'implementazione. Ad esempio, una lampadina rappresentata nello schema avrà sempre la funzionalità di base come stati di accensione/spegnimento e azioni o livelli di dimmerazione.
- Scrivibile: un utente può creare risorse complesse composte da bit più piccoli di funzionalità ben definite. Ad esempio, un sistema Nest Detect contiene due tipi di sensori: movimento e apertura/chiusura. Le funzionalità per questi tipi di sensori sono standardizzate nello schema e riutilizzabili su più dispositivi.
- Estendibile: un utente può creare estensioni personalizzate della funzionalità standard. Ad esempio, potresti voler estendere la funzionalità standard dei sensori di movimento dello schema con funzionalità aggiuntive per un'applicazione di sicurezza specifica.
- Controllo delle versioni: tutte le modifiche allo schema sono sottoposte a controllo delle versioni per la compatibilità con le versioni precedenti e precedenti.
Lo schema definisce tre elementi: caratteristiche, interfacce e risorse. Quasi tutte le funzionalità dell'ecosistema Nest per le operazioni quotidiane sono definite nello schema. Esaminiamo ciascun elemento più nel dettaglio.
Tratti
Un tratto
è un'unità della funzionalità di base. Potrebbe trattarsi di stati o funzionalità del dispositivo generici o descrivere la configurazione che ne definisce il comportamento. Una singola caratteristica può essere comune a molti dispositivi o specifica per un tipo di dispositivo.Ad esempio, nello schema puoi definire le seguenti caratteristiche da utilizzare nei dispositivi Nest:
Interfacce
Possiamo estendere la componibilità dei tratti raggruppandoli, in particolare se più caratteristiche rappresentano una nuova funzione specifica. Questo gruppo di caratteristiche è chiamato interfaccia
.Ad esempio, un'interfaccia Interfono potrebbe includere le caratteristiche degli altoparlanti e del microfono:
Risorse
Una risorsa
rappresenta un elemento fisico o logico nello schema. Ad esempio, un dispositivo Nest Protect è una risorsa. Così è Nest Guard. Un utente o una struttura come la casa dell'utente.Le risorse comprendono un insieme di caratteristiche che ne incapsulano la configurazione, lo stato e le capacità.
La relazione tra risorse, interfacce e caratteristiche ha il seguente aspetto:
Come puoi vedere, alcuni tratti, come la caratteristica Movimento, sono comuni a risorse diverse. Inoltre, alcune interfacce, come l'interfaccia Intercom, sono comuni anche a risorse diverse. Tratti, interfacce e risorse vengono definiti una sola volta nello schema e riutilizzati in risorse e dispositivi diversi nel sistema Weave.
Elementi del tratto
Le caratteristiche sono ulteriormente suddivise in tre elementi principali: proprietà, comandi ed eventi. Diamo un'occhiata ad alcuni esempi di ogni caratteristica.
Proprietà
Le proprietà
rappresentano lo stato di una caratteristica. Le proprietà sono di sola lettura o scrittura di sola lettura.Ad esempio:
- La versione software è una proprietà del attributo Device Identity. È un tratto generale della maggior parte dei dispositivi. Nest Thermostat, Videocamere e Protect: tutti hanno una propria versione software.
- Bolt State è una proprietà della serratura Bolt Lock, ma è specifico per un dispositivo come Yale x Nest Lock. Ad esempio, non troveresti una serratura a scatto su un termostato Nest.
Comandi
I comandi
sono richieste di azioni personalizzate specifiche del tratto, con una risposta prevista. Vengono comunemente chiamati comandi personalizzati e possono essere estesi a modifiche di stato specifiche per le proprietà. Ad esempio:- Modifica blocco serratura è un comando personalizzato che modifica la proprietà Stato Bullone della caratteristica Blocco serratura.
- Imposta PIN utente è un comando personalizzato che crea una nuova proprietà o aggiorna una proprietà PIN utente esistente del tratto Impostazioni PIN utente.
Eventi
Gli eventi
sono record di eventi per una caratteristica. Informano un abbonato delle modifiche nelle proprietà del tratto o di altri tipi di eventi, ad esempio la reimpostazione del sistema.Ad esempio, l'evento Bot Actuator State Change (Variazione dello stato dell'attuatore Bolt) della caratteristica Bolt Lock informa il sottoscritto dello stato attuale di più proprietà Bolt Lock, nonché dell'attore che ha causato l'ultima modifica della proprietà Stato dell'attuatore. Tutte queste informazioni vengono fornite come un singolo evento.
Linguaggio di descrizione schema di Weave
Le caratteristiche, le interfacce e le risorse dello schema in Weave vengono definite e descritte utilizzando un linguaggio DSL che sfrutta la sintassi di Google Protocol Buffer v3. Questa lingua è denominata Weave Schema Description Linguaggio (WDL)
.Il WDL viene eseguito tramite un compilatore che genera diverse realizzazioni e codifiche specifiche della piattaforma. Il tipo di codice generato dipende dalla risorsa:
- Objective-C, Swift, Java, Scala: app mobile e servizi cloud
- C++ con codifiche TLV Weave: dispositivi incorporati e app mobile
Più avanti analizzeremo gli esempi di WDL.
Riepilogo
Che cosa hai imparato:
- Lo schema descrive il modello dei dati sottostante per un sistema Weave.
- Lo schema definisce tre elementi:
- Tratti Un'unità di funzionalità di base
- Interfaccia Un gruppo di caratteristiche che rappresentano una nuova funzione specifica
- Risorsa Una cosa logica o fisica
- I tratti comprendono proprietà, comandi ed eventi:
- Proprietà Lo stato di un attributo delle risorse
- Comandi Richiesta personalizzata per l'azione di una caratteristica
- Registrazione dell'evento delle caratteristiche di una caratteristica
- Lo schema viene definito con WDL (Weave Schema Description Language) e si basa su Google buffer di protocollo v3
Per informazioni più dettagliate, consulta: