![Weave-Schema](https://openweave.io/guides/images/ow-icon-schema.png?hl=de)
Das Schema beschreibt das zugrunde liegende Datenmodell, das die Darstellung und Interpretation der Daten steuert, die von logischen oder physischen Geräten in einem Weave-System ausgegeben werden.
Das Schema lautet:
- Standardisiert – Sie enthält formal genehmigte Funktionsdefinitionen, die unabhängig von der Implementierung eine konsistente Schnittstelle bieten. Eine im Schema dargestellte Lampe hat beispielsweise immer Kernfunktionen wie Ein/Aus-Status und Aktionen oder Abdunkelung.
- Zusammensetzbar – Ein Nutzer kann komplexe Ressourcen erstellen, die aus kleineren, klar definierten Funktionen bestehen. Ein Nest Detect-Gerät enthält beispielsweise zwei Arten von Sensoren: Bewegung und Öffnen/Schließen. Die Funktionalität dieser Sensortypen ist im Schema standardisiert und kann geräteübergreifend wiederverwendet werden.
- Erweiterbar – Ein Nutzer kann benutzerdefinierte Erweiterungen für Standardfunktionen erstellen. Sie können beispielsweise die Standardfunktion des Bewegungssensors um zusätzliche Funktionen für eine bestimmte Sicherheitsanwendung erweitern.
- Versioniert – Alle Änderungen im Schema sind für die Vorwärts- und Abwärtskompatibilität versioniert.
Das Schema definiert drei Elemente: Merkmale, Schnittstellen und Ressourcen. Fast alle Funktionen der Nest-Umgebung für den täglichen Betrieb sind im Schema definiert. Sehen wir uns die einzelnen Elemente einmal genauer an.
Merkmale
Ein Merkmal
ist eine Einheit der grundlegenden Funktionalität. Dies können allgemeine Gerätestatus oder -funktionen sein oder die Konfiguration beschreiben, die ihr Verhalten beeinflusst. Ein einzelnes Merkmal kann für viele Geräte oder nur für einen Gerätetyp gelten.Im Schema können Sie beispielsweise die folgenden Merkmale für die Verwendung in Nest-Geräten definieren:
![Straßenbahn](https://openweave.io/guides/images/ow-primer-schema-traits.png?hl=de)
Interfaces
Wir können die Zusammensetzbarkeit von Merkmalen erweitern, indem wir sie miteinander gruppieren, insbesondere wenn mehrere Merkmale eine neue, spezifische Funktion darstellen. Eine solche Gruppe von Merkmalen wird als Schnittstelle
bezeichnet.Eine Intercom-Schnittstelle kann beispielsweise folgende Eigenschaften von Lautsprecher und Mikrofon haben:
![Merkmale und Benutzeroberflächen](https://openweave.io/guides/images/ow-primer-schema-if-traits.png?hl=de)
Ressourcen
Eine Ressource
stellt ein logisches oder physisches Element im Schema dar. Ein Nest Protect ist beispielsweise eine Ressource. Das ist ein Nest Guard. Oder ein Nutzer oder eine Struktur wie das Zuhause des Nutzers.Ressourcen bestehen aus einer Reihe von Merkmalen, die ihre Konfiguration, ihren Zustand und ihre Fähigkeit kapseln.
Die Beziehung zwischen Ressourcen, Schnittstellen und Merkmalen sieht so aus:
![Ressourcen, Schnittstellen und Merkmale](https://openweave.io/guides/images/ow-primer-schema-if.png?hl=de)
Wie Sie sehen, gibt es einige Merkmale, z. B. die Bewegungsmerkmale, die für verschiedene Ressourcen gelten. Einige Schnittstellen, wie die Intercom-Schnittstelle, sind auch für verschiedene Ressourcen gemeinsam. Attribute, Schnittstellen und Ressourcen werden einmal im Schema definiert und für verschiedene Ressourcen und Geräte im Weave-System wiederverwendet.
Element im Merkmal
Merkmale sind in drei primäre Elemente unterteilt: Attribute, Befehle und Ereignisse. Sehen wir uns Beispiele für die einzelnen Merkmale an.
Attribute
Attribute
stellen den Status eines Attributs dar. Attribute sind entweder schreibgeschützt oder schreibgeschützt.Beispiel:
- Die Softwareversion ist eine Eigenschaft des Attributs „Geräteidentität“. Es ist ein allgemeines Merkmal, das die meisten Geräte haben. Alle Thermostate, Kameras und Protect-Geräte haben eine eigene Softwareversion.
- Bolt State ist ein Attribut des Bolt-Schlosses, ist jedoch spezifisch für Geräte wie das Yale-x-Nest-Schloss. Auf einem Nest Thermostat könnte zum Beispiel kein Schlosssymbol angezeigt werden.
Befehle
Die Befehle
sind händlerspezifische benutzerdefinierte Anfragen für eine Aktion mit einer erwarteten Antwort. Sie werden häufig als benutzerdefinierte Befehle bezeichnet und können auf bestimmte Statusänderungen für Attribute erweitert werden. Beispiel:- Bolt Lock Change ist ein benutzerdefinierter Befehl, mit dem die Eigenschaft „Bolt State“ des Bolt-Schlosses geändert wird.
- Set User Pincode (Nutzer-PIN festlegen) ist ein benutzerdefinierter Befehl, mit dem ein neuer Nutzer erstellt oder eine vorhandene Eigenschaft für Nutzer-PIN-Codeeinstellungen aktualisiert wird.
Events
Ereignisse
sind Einträge von Ereignissen für ein Merkmal. Sie informieren Abonnenten über Änderungen an Eigenschaften oder an anderen Stellen, z. B. beim Zurücksetzen des Systems.Mit dem Ereignis Bolt Actuator State Change des Bolt Lock-Merkmals wird beispielsweise ein Abonnent des aktuellen Status mehrerer Bolt Lock-Eigenschaften darüber informiert, welcher Akteur zuletzt die Property „Bolt Actuator State“ geändert hat. Alle diese Informationen werden als ein Ereignis übermittelt.
Beschreibungssprache für Weave-Schema
Die Schemamerkmale, Schnittstellen und Ressourcen in Weave werden mithilfe einer domainspezifischen Sprache (DSL) definiert und beschrieben, die die Syntax von Google Protocol Buffers Version 3 verwendet. Diese Sprache wird als Weave Schema Description Language (WDL)
bezeichnet.WDL wird über einen Compiler ausgeführt, der verschiedene plattformspezifische Implementierungen und Codierungen generiert. Die Art des generierten Codes hängt von der Ressource ab:
- Objective-C, Swift, Java, Scala – mobile Apps und Cloud-Dienste
- C++ mit Weave-TLV-Codierungen – eingebettete Geräte und mobile Apps
Wir werden später ausführlicher auf WDL-Beispiele eingehen.
Zusammenfassung
Das haben Sie gelernt:
- Das Schema beschreibt das zugrunde liegende Datenmodell für ein Weave-System.
- Das Schema definiert drei Elemente:
- Attribut Eine Grundfunktionseinheit
- Schnittstelle Eine Gruppe von Merkmalen, die eine neue, spezifische Funktion darstellen
- Ressource : Eine logische oder physische Sache
- Die Merkmale umfassen Attribute, Befehle und Ereignisse:
- Attribut Der Status eines Ressourcenattributs
- Befehle Benutzerdefinierte Anfrage für eine Aktion eines Attributs
- Ereignis : Ereignisse für ein Merkmal
- Das Schema wird mithilfe der Weave Schema Description Language (WDL) definiert, die auf Google Protocol Buffers Version 3 basiert
Ausführlichere Informationen finden Sie unter: