Schema di Weave

Schema Weave

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:

Tratto

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:

Caratteristiche e interfacce

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:

Risorse, interfacce e caratteristiche

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: