Geräte in Matter haben ein klar definiertes Datenmodell (DM), das eine hierarchische Modellierung der Funktionen eines Geräts darstellt. Auf der obersten Ebene dieser Hierarchie befindet sich ein Gerät.
Geräte und Endpunkte
Alle Geräte, einschließlich Smartphones und Home-Assistenten, bestehen aus 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 Funktionsset. Ein Endpunkt kann sich beispielsweise auf eine Beleuchtungsfunktion beziehen, ein anderer auf die Bewegungserkennung und ein weiterer auf Dienstprogramme wie die Over-the-air-Aktualisierung von Geräten.
Knotenrollen
Eine Knotenrolle besteht aus einer Reihe von zugehörigen Verhaltensweisen. Jeder Knoten kann eine oder mehrere Rollen haben. Zu den Knotenrollen gehören:
- Auftraggeber: Ein Knoten, der die Inbetriebnahme durchführt.
- Controller: Ein Knoten, der einen oder mehrere Knoten steuern kann. Beispiele sind Google Home app (GHA), Google Assistant und Google Nest Hub (2nd gen). Einige Gerätetypen, z. B. der Lichtschalter, haben die Rolle „Controller“.
- Steuerobjekt: Ein Knoten, der von einem oder mehreren Knoten gesteuert werden kann. Die meisten Gerätetypen können gesteuert werden, mit Ausnahme einiger Gerätetypen, die die Rolle „Controller“ haben, z. B. der Lichtschalter. Der Ein-/Aus-Schalter für die Lampe kann nur ein Controller sein. Es darf kein verwaltetes Element sein.
- OTA-Anbieter: Ein Knoten, der OTA-Softwareupdates bereitstellen kann.
- OTA-Anfrage: Ein Knoten, der OTA-Softwareupdates anfordern kann.
Cluster
Innerhalb eines Endpunkts hat ein Knoten einen oder mehrere Cluster. Dies ist ein weiterer Schritt in der Gerätehierarchie, da bestimmte Funktionen gruppiert werden, z. B. ein An/Aus-Cluster auf einem intelligenten Stecker oder ein Cluster für die Helligkeitsregelung auf einem dimmbaren Endpunkt für Lampen.
Ein Knoten kann auch mehrere Endpunkte haben, die jeweils eine Instanz derselben Funktion erstellen. So kann eine Leuchte beispielsweise eine unabhängige Steuerung einzelner Lampen bieten oder eine Steckdosenleiste die Steuerung einzelner Steckdosen.
Attribute
Auf der letzten Ebene finden wir Attribute, also Status, die vom Knoten gehalten werden, z. B. das Attribut current level (aktuelle Ebene) eines Ebenenkontroll-Clusters. Attribute können als verschiedene Datentypen wie uint8, Strings oder Arrays definiert werden.
Befehle
Neben Attributen haben Cluster auch Befehle, also Ausführungen, die ausgeführt werden können. Sie entsprechen in der DM von Matter einem Remote-Prozeduraufruf. Befehle sind Verben, z. B. Tür schließen für einen Cluster vom Typ Türschloss. Befehle können Antworten und Ergebnisse generieren. In Matter werden solche Antworten auch als Befehle definiert, die in umgekehrter Richtung gehen.
Ereignisse
Cluster können auch Ereignisse haben, die als Aufzeichnung vergangener Statusübergänge betrachtet werden können. Während Attribute den aktuellen Status darstellen, sind Ereignisse ein Protokoll der Vergangenheit. Sie enthalten einen monoton ansteigenden Zähler, einen Zeitstempel und eine Priorität. Sie ermöglichen das Erfassen von Statusübergängen sowie die Datenmodellierung, die mit Attributen nicht so einfach möglich ist.
Der Endpunkt 0 ist für Dienstcluster reserviert. Dienstcluster sind spezielle Cluster, die Wartungsfunktionen für einen Endpunkt umfassen, z. B. Erkennung, Adressierung, Diagnose und Softwareaktualisierung. 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?
Gemäß der Matter-Spezifikation muss das Gerät einen oder mehrere Gerätetypen implementieren oder erweitern. Ein Gerätetyp ist eine Sammlung von obligatorischen und optionalen Clustern, die die Attribute der obersten Ebene 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 Device Library. Ebenso werden alle Anwendungscluster in der Anwendungsclusterbibliothek definiert. Diese drei Dokumente findest du 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 können am Endpunkt weitere Cluster implementiert werden, einschließlich eines oder mehrerer der optionalen Cluster des Gerätetyps oder sogar Cluster, die nicht zum Gerätetyp gehören.
Clients und Server
Cluster können entweder Clientcluster oder Servercluster sein. Ein Server ist zustandsabhängig und enthält Attribute, Ereignisse und Befehle. Ein Client ist zustandslos und seine Aufgabe besteht darin, Interaktionen mit einem Remote-Servercluster zu initiieren. Dabei führt er folgende Aktionen aus:
- liest aus und schreibt in die Remote-Attribute.
- liest die Remote-Ereignisse.
- Ausführung der Remote-Befehle.
Die DM ist innerhalb eines Knotens hierarchisch, die Beziehung zwischen den Knoten ist es jedoch nicht. Knoten in Matter haben keine vertikalen Beziehungen vom Typ „Controller/Peripheriegerät“ oder „Leiter/Gefolgsmann“. Im Gegenteil: Die Beziehung ist horizontal: Jeder Cluster kann entweder Server oder Client sein. Ein Knoten kann also sowohl Server als auch Client in Bezug auf verschiedene Cluster und Funktionen sein.
Angenommen, wir haben zwei Tischlampen: Knoten A und Knoten B. Beide Knoten implementieren den Gerätetyp Lampe ein/aus. Dieser Gerätetyp umfasst einen An/Aus-Server-Cluster, der die jeweiligen physischen Lichtausgänge steuert.
Wie bei herkömmlichen Tischlampen haben auch unsere physischen Geräte einen Gerätetyp Lichtschalter für die lokalen Ein-/Aus-Schalter. Für diesen Gerätetyp muss ein An/Aus-Client-Cluster implementiert werden, damit er die Servercluster steuern kann.
In diesem Beispiel ändert der On/Off-Clientcluster auf Knoten A die Attribute des On/Off-Serverclusters auf Knoten A und Knoten B, während der Clientcluster von Knoten B nur den Servercluster auf Knoten B selbst ändert.
Im nächsten Abschnitt erfahren Sie, wie Client- und Servercluster interagieren: das Interaktionsmodell.
Deskriptorcluster
Wie der Name schon sagt, stellt der Descriptor Cluster Server Informationen zur Inspektion bereit. Sie beschreibt den Endpunkt und listet Folgendes auf:
- Servercluster
- Clientcluster
- Gerätetypen
- Zusätzliche Endpunkte, sogenannte Parts.
Für jeden Gerätetyp müssen Descriptor-Cluster implementiert werden. Der Typ des Stammgeräts wird an Endpunkt 0 definiert. Wenn der Client den Descriptor-Cluster liest, kann er den gesamten Baum der verfügbaren Endpunkte durchlaufen und die entsprechenden Vorgänge ausführen.
Das Steuergerät oder das steuernde Gerät wie ein Smartphone oder ein Hub kann die Informationen im Descriptor-Cluster verwenden, um das Gerät (Lampe, Schalter, Pumpe, Thermostat) und bestimmte Funktionen zu modellieren, die von dieser bestimmten Instanz des Geräts implementiert werden, und dem Nutzer die richtige Benutzeroberfläche anzuzeigen.
Servercluster
Im ServerList
-Attribut sind die Clusterserver im Endpunkt aufgeführt.
Clientcluster
Im Attribut ClientList
sind die Cluster-Clients im Endpunkt aufgeführt.
Liste der Gerätetypen
Das DeviceTypeList
-Attribut ist eine Liste der vom Endpunkt unterstützten Gerätetypen mit den entsprechenden Versionen. Es muss mindestens einen Gerätetyp enthalten.
Stückliste
PartsList
enthält die Liste der Endpunkte, die für die Implementierung dieses Gerätetyps verwendet werden.
Die PartsList
von Endpunkt 0 (Stammknoten) enthält alle Endpunkte des Geräts mit Ausnahme von sich selbst (Endpunkt 0).
Die PartsList
anderer Endpunkte ist in der Regel leer. Für einen Temperatursensor ist beispielsweise nur ein Temperaturmessservercluster erforderlich.
Andere Gerätetypen können in einer Baumstruktur aus mehreren Gerätetyp-Instanzen bestehen. Ein Gerätetyp für Videoplayer kann beispielsweise aus einem Fernseher, einem Videoplayer, einem Lautsprecher und verschiedenen Gerätetypen für Inhalts-Apps 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 einen anderen Knoten darstellt. Für diesen Artikel enthalten alle Geräte einen einzelnen Knoten. Es wird davon ausgegangen, dass die meisten physischen Geräte diesem Muster folgen. ↩