Geräte in Matter haben ein klar definiertes Datenmodell (DM), das eine hierarchische Modellierung der Funktionen eines Geräts ist. Auf der obersten Ebene dieser Hierarchie befindet sich ein Gerät.
Geräte und Endpunkte
Alle Geräte, einschließlich Smartphones und Home-Assistenten, sind Knoten1. Ein Knoten ist eine eindeutig identifizierbare und erreichbare Netzwerkressource, die von einem Nutzer als vollständige Funktionseinheit wahrgenommen wird. Die Netzwerkkommunikation in Matter beginnt und endet an einem Knoten.
Knoten sind eine Sammlung von Endpunkten. Jeder Endpunkt enthält ein Feature-Set. Ein Endpunkt kann sich beispielsweise auf eine Beleuchtungsfunktion beziehen, ein anderer auf die Bewegungserkennung und ein weiterer auf Dienstprogramme wie OTA-Updates für Geräte.
Knotenrollen
Eine Knotenrolle ist eine Reihe von zusammengehörigen Verhaltensweisen. Jeder Knoten kann eine oder mehrere Rollen haben. Zu den Knoten-Rollen gehören:
- Commissioner: Ein Knoten, der die Inbetriebnahme durchführt.
- Controller: Ein Knoten, der einen oder mehrere Knoten steuern kann. Beispiele hierfür sind Google Home app (GHA), Google Assistant und Google Nest Hub (2nd gen). Einige Gerätetypen, z. B. der Ein/Aus-Lichtschalter, haben die Rolle „Controller“.
- Gesteuertes Gerät: Ein Knoten, der von einem oder mehreren Knoten gesteuert werden kann. Die meisten Gerätetypen können ein gesteuertes Gerät sein, mit Ausnahme einiger Gerätetypen, die die Rolle des Controllers haben, z. B. der Lichtschalter. Der Lichtschalter kann nur ein Controller sein. Es kann kein Controlee sein.
- OTA-Anbieter: Ein Knoten, der OTA-Softwareupdates bereitstellen kann.
- OTA-Anforderer: Ein Knoten, der OTA-Softwareupdates anfordern kann.
Cluster
Innerhalb eines Endpunkts hat ein Knoten einen oder mehrere Cluster. Sie sind ein weiterer Schritt in der Gerätehierarchie, da sie bestimmte Funktionen gruppieren, z. B. einen Ein/Aus-Cluster auf einer smarten Steckdose oder einen Pegelsteuerung-Cluster auf einem dimmbaren Licht-Endpunkt.
Ein Knoten kann auch mehrere Endpunkte haben, die jeweils eine Instanz derselben Funktionalität erstellen. Beispielsweise kann eine Leuchte die unabhängige Steuerung einzelner Lampen oder eine Steckdosenleiste die Steuerung einzelner Steckdosen ermöglichen.
Attribute
Auf der letzten Ebene befinden sich die Attribute. Das sind die Zustände des Knotens, z. B. das Attribut Aktuelle Stufe eines Clusters Stufensteuerung. Attribute können als verschiedene Datentypen wie uint8, Strings oder Arrays definiert werden.
Befehle
Neben Attributen haben Cluster auch Befehle, also Aktionen, die ausgeführt werden können. Sie sind das Äquivalent zu einem Remote-Prozeduraufruf in der DM von Matter. Befehle sind Verben, z. B. Tür verriegeln in einem Türschloss-Cluster. Befehle können Antworten und Ergebnisse generieren. In Matter werden solche Antworten ebenfalls als Befehle definiert, die in die umgekehrte Richtung gehen.
Ereignisse
Schließlich können Cluster auch Ereignisse haben, die als Aufzeichnung vergangener Zustandsübergänge betrachtet werden können. Während Attribute den aktuellen Status darstellen, sind Ereignisse ein Journal der Vergangenheit und enthalten einen monoton steigenden Zähler, einen Zeitstempel und eine Priorität. Sie ermöglichen das Erfassen von Zustandsübergängen sowie die Datenmodellierung, die mit Attributen nicht ohne Weiteres möglich ist.
Der Endpunkt 0 ist für die Utility-Cluster reserviert. Dienstprogrammcluster sind spezifische Cluster, die Wartungsfunktionen auf einem Endpunkt umfassen, z. B. Erkennung, Adressierung, Diagnose und Softwareupdate. Die Anwendungscluster unterstützen dagegen primäre Aktionen wie Ein/Aus oder Temperaturmessung.
Gerätetypen
Welche Clusterkombinationen sollten insgesamt berücksichtigt werden, wenn ein Gerätehersteller ein neues Gerät plant?
Die Matter-Spezifikation erfordert, dass das Gerät einen oder mehrere Gerätetypen implementiert oder erweitert. Ein Gerätetyp ist eine Sammlung von obligatorischen und optionalen Clustern, die die übergeordneten Attribute eines physischen Geräts definieren, z. B. Dimmbares Licht, Türschloss oder Videoplayer.
Die Gerätetypen werden nicht im Hauptdokument der Matter-Spezifikation, sondern in einem Begleitdokument angegeben: der Gerätebibliothek. Ebenso sind alle Anwendungscluster in der Anwendungscluster-Bibliothek definiert. Diese drei Dokumente finden Sie auf der Connectivity Standards Alliance (Alliance)-Mitgliederwebsite.
Jeder Endpunkt, der einen Gerätetyp implementiert, muss die obligatorischen Cluster implementieren, die diesen Gerätetyp definieren. Zusätzlich zu den obligatorischen Clustern kann der Endpunkt weitere Cluster implementieren, einschließlich eines oder mehrerer optionaler Cluster des Gerätetyps oder sogar Cluster, die nicht Teil des Gerätetyps sind.
Clients und Server
Cluster können entweder Client-Cluster oder Server-Cluster sein. Ein Server ist zustandsorientiert und enthält Attribute, Ereignisse und Befehle. Ein Client ist dagegen zustandslos und hat die Aufgabe, Interaktionen mit einem Remote-Server-Cluster zu initiieren und so Folgendes auszuführen:
- liest aus seinen Remote-Attributen und schreibt in diese.
- Lesevorgänge für seine Remote-Ereignisse.
- Aufruf der Remote-Befehle.
Während das Datenmodell innerhalb eines Knotens hierarchisch ist, ist die Beziehung zwischen Knoten nicht hierarchisch. Knoten in Matter haben keine vertikalen Controller-/Peripherie- oder Leader-/Follower-Beziehungen. Im Gegenteil, die Beziehung ist horizontal: Jeder Cluster kann entweder Server oder Client sein. Ein Knoten kann also sowohl Server als auch Client für verschiedene Cluster und Funktionen sein.
Beispiel: Wir haben zwei Tischlampen, Knoten A und Knoten B. Beide Knoten implementieren den Gerätetyp On/Off Light. Dieser Gerätetyp enthält einen Ein/Aus-Server-Cluster, der die jeweiligen physischen Lichtausgänge steuert.
Wie bei herkömmlichen Tischlampen üblich, enthalten unsere physischen Geräte aber auch den Gerätetyp Lichtschalter für ihre lokalen Ein/Aus-Schalter. Dieser Gerätetyp muss einen Ein/Aus-Client-Cluster implementieren, damit er die Servercluster steuern kann.
In diesem Beispiel ändert der On/Off-Client-Cluster auf Knoten A die Attribute des On/Off-Server-Clusters auf Knoten A und Knoten B, während der Client-Cluster von Knoten B nur den Server-Cluster auf Knoten B selbst ändert.
Im nächsten Abschnitt wird beschrieben, wie Client- und Servercluster interagieren: das Interaktionsmodell.
Deskriptor-Cluster
Wie der Name schon sagt, stellt der Descriptor Cluster Server Introspektionsinformationen bereit. Er beschreibt den Endpunkt und listet Folgendes auf:
- Servercluster.
- Client-Cluster.
- Gerätetypen
- Zusätzliche Endpunkte, die als Teile bezeichnet werden.
Für jeden Gerätetyp müssen Deskriptorcluster implementiert werden. Der Root-Gerätetyp wird auf Endpunkt 0 definiert. Durch das Lesen des Deskriptor-Clusters erhält der Client die Möglichkeit, den gesamten Baum der verfügbaren Endpunkte zu durchlaufen und entsprechende Vorgänge auszuführen.
Der Commissioner oder das Steuergerät, z. B. ein Smartphone oder Hub, kann die Informationen im Descriptor-Cluster verwenden, um das Gerät (Licht, Schalter, Pumpe, Thermostat) und die spezifischen Funktionen zu modellieren, die von dieser bestimmten Instanz des Geräts implementiert werden, und dem Nutzer die richtige Benutzeroberfläche anzuzeigen.
Servercluster
Das Attribut ServerList listet die Cluster-Server im Endpunkt auf.
Clientcluster
Das Attribut ClientList listet die Cluster-Clients im Endpunkt auf.
Liste der Gerätetypen
Das Attribut DeviceTypeList ist eine Liste der vom Endpunkt unterstützten Gerätetypen und ihrer jeweiligen Überarbeitungen. Sie muss mindestens einen Gerätetyp enthalten.
Bauteile
PartsList enthält die Liste der Endpunkte, die zur Implementierung dieses Gerätetyps verwendet werden.
Die PartsList von Endpunkt 0 (Stammknoten) enthält alle Endpunkte des Geräts außer sich selbst (Endpunkt 0).
Der PartsList anderer Endpunkte ist normalerweise leer. Für einen Temperatursensor ist beispielsweise ein Temperaturmessserver-Cluster erforderlich und sonst nichts.
Andere Gerätetypen können in einer Baumstruktur aus mehreren Gerätetypinstanzen bestehen. Beispielsweise kann ein Videoplayer-Gerätetyp aus einem Fernseher, einem Videoplayer, einem Lautsprecher und verschiedenen Content-App-Gerätetypen bestehen, die jeweils auf einem anderen Endpunkt liegen.
-
Die Matter-Spezifikation legt fest, dass ein Gerät mehrere Knoten haben kann. Smartphones können beispielsweise mehrere Apps haben, wobei jede App ein anderer Knoten ist. In dieser Einführung enthalten alle Geräte einen einzelnen Knoten. Die meisten physischen Geräte folgen diesem Muster. ↩