Das Gerätedatenmodell

Geräte in Matter haben ein klar definiertes Datenmodell (DM), bei dem es sich um eine hierarchische Modellierung der Gerätefunktionen handelt. Auf der obersten Ebene dieser Hierarchie befindet sich ein Device (Gerät).

Geräte und Endpunkte

Alle Geräte, einschließlich Smartphones und Home-Assistenten, bestehen aus Knoten1. Ein Knoten ist eine eindeutige identifizierbare und adressierbare Ressource in einem Netzwerk, die ein Nutzer als Ganzes wahrnehmen kann. Die Netzwerkkommunikation in Matter beginnt und endet an einem Knoten.

Knoten sind eine Sammlung von Endpunkten. Jeder Endpunkt umschließt einen Feature-Satz. Ein Endpunkt kann sich beispielsweise auf eine Beleuchtungsfunktion beziehen, ein anderer bezieht sich auf die Bewegungserkennung und ein anderer bezieht sich auf Dienstprogramme wie das Geräte-OTA.

Hierarchie von Geräten, Knoten und Endpunkten
Abbildung 1: Geräte, Knoten und Endpunkte

Knotenrollen

Eine Knotenrolle umfasst eine Reihe verwandter Verhaltensweisen. Jeder Knoten kann eine oder mehrere Rollen haben. Zu den Knotenrollen gehören:

  • Commissioner: Ein Knoten, der die Inbetriebnahme ausfü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 wie der Ein-/Aus-Lichtschalter haben die Rolle „Controller“.
  • Controlee: Ein Knoten, der von einem oder mehreren Knoten gesteuert werden kann. Die meisten Gerätetypen können ein Controlee sein, mit Ausnahme einiger Gerätetypen, die die Rolle „Controller“ haben, z. B. der Ein-/Aus-Lichtschalter. Der Ein/Aus-Lichtschalter kann nur ein Controller sein. Es darf 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. Dies ist ein weiterer Schritt in der Gerätehierarchie, da sie bestimmte Funktionen gruppieren, z. B. einen Ein/Aus-Cluster bei einer intelligenten Steckdose oder ein Level-Steuerungscluster bei einem Endpunkt für eine dimmbare Leuchte.

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 ermöglichen oder eine Mehrfachsteckdose kann die Steuerung einzelner Steckdosen offen lassen.

Attribute

Auf der letzten Ebene finden Sie Attribute. Das sind Status, die der Knoten zugewiesen ist, z. B. das Attribut aktuelles Level eines Clusters für Ebenensteuerung. Attribute können als verschiedene Datentypen definiert werden, z. B. als uint8, Strings oder Arrays.

Hierarchie von Knoten, Endpunkten, Attributen und Befehlen
Abbildung 2: Knoten, Endpunkte, Attribute und Befehle

Befehle

Neben Attributen haben Cluster auch Befehle. Dies sind Aktionen, die ausgeführt werden können. Sie entsprechen in der DM eines Remoteprozeduraufrufs von Matter. Befehle sind verb, z. B. Tür abschließen in einem Cluster vom Typ Türverriegelung. Befehle können Antworten und Ergebnisse generieren. In Matter werden solche Antworten auch als Befehle definiert, die in umgekehrter Richtung gehen.

Veranstaltungen

Schließlich können Cluster auch Ereignisse haben, was als Aufzeichnung vergangener Statusübergänge betrachtet werden kann. Während Attribute die aktuellen Zustände darstellen, sind Ereignisse ein Journal der Vergangenheit und umfassen einen monoton ansteigenden Zähler, einen Zeitstempel und eine Priorität. Sie ermöglichen die Erfassung von Zustandsübergängen und eine Datenmodellierung, die nicht ohne Weiteres mit Attributen realisierbar ist.

Vollständiges Beispielgerät
Abbildung 3: Beispiel für die Hierarchie des Matter-Interaktionsmodells für Geräte

Der Endpunkt 0 ist für Dienstprogramme reserviert. Dienstprogrammcluster sind spezifische Cluster, die Dienstfunktionen auf einem Endpunkt umschließen, z. B. Erkennung, Adressierung, Diagnose und Softwareaktualisierung. Anwendungscluster hingegen unterstützen primäre Aktionen wie die Ein/Aus- oder Temperaturmessung.

Gerätetypen

Welche Clusterkombinationen sollten also insgesamt enthalten sein, wenn ein Gerätehersteller ein neues Gerät plant?

Die Spezifikation Matter erfordert, dass auf dem Gerät ein oder mehrere Gerätetypen implementiert oder erweitert werden. Ein Gerätetyp ist eine Sammlung von obligatorischen und optionalen Clustern, mit denen die Attribute der obersten Ebene eines physischen Geräts definiert werden, z. B. Dimmbares Licht, Türschloss oder Videoplayer.

Die Gerätetypen werden nicht durch das Hauptdokument zur Matter-Spezifikation angegeben, sondern über ein Begleitdokument: die Gerätebibliothek. Ebenso sind alle Anwendungscluster in der Anwendungscluster-Bibliothek definiert. Diese drei Dokumente findest du auf der Website für Connectivity Standards Alliance (Alliance)-Mitglieder.

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 ein Clientcluster oder ein Servercluster sein. Während ein Server zustandsorientiert ist und Attribute, Ereignisse und Befehle enthält, ist ein Client zustandslos. Er ist dafür verantwortlich, Interaktionen mit einem Remote-Servercluster zu initiieren. Dadurch wird Folgendes ausgeführt:

  • Lesevorgänge aus den Remote-Attributen und Schreibt in ihre Remoteattribute.
  • reads seiner Remote-Events.
  • aufruf der Remotebefehle.

Während die DM innerhalb eines Knotens hierarchisch ist, ist dies die Beziehung zwischen Knoten nicht. Knoten in Matter haben keine vertikalen Controller/Peripheriegeräte oder Leader/Follower-Beziehungen. Im Gegenteil, die Beziehung ist horizontal: Jeder Cluster kann entweder Server oder Client sein. Daher kann ein Knoten im Hinblick auf verschiedene Cluster und Funktionen sowohl ein Server als auch ein Client sein.

Wir haben z. B. zwei Tischlampen: Knoten A und Knoten B. Beide Knoten implementieren einen Gerätetyp Ein/Aus-LED. Dieser Gerätetyp umfasst einen Ein/Aus-Servercluster, der die jeweilige physische Lichtausgabe steuert.

Aber wie es typische Tischlampen tun, verfügen unsere physischen Geräte auch über einen Ein/Aus-Lichtschalter für ihre lokalen Ein/Aus-Schalter. Für diesen Gerätetyp muss ein Ein/Aus-Client-Cluster implementiert werden, damit er die Servercluster steuern kann.

Lampen mit Ein-/Aus-Licht und Lichtschalter
Abbildung 4: Client- und Servercluster

In diesem Beispiel ändert der Ein/Aus-Clientcluster auf Knoten A die Attribute des Ein/Aus-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 wird beschrieben, wie Client- und Servercluster interagieren: das Interaktionsmodell.

Deskriptor-Cluster

Wie der Name schon sagt, stellt der Deskriptorclusterserver Informationen zur Selbstprüfung bereit. Sie beschreibt den Endpunkt mit der folgenden Aufzählung:

  • Servercluster.
  • Clientcluster.
  • Gerätetypen
  • Zusätzliche Endpunkte, die als Teile bezeichnet werden.

Für jeden Gerätetyp ist die Implementierung von Deskriptor-Clustern erforderlich. Der Root-Gerätetyp ist auf Endpunkt 0 definiert. Das Lesen des zugehörigen Deskriptor-Clusters bietet dem Client die Sichtbarkeit, um die gesamte Baumstruktur der verfügbaren Endpoints zu durchlaufen und anwendbare Vorgänge auszuführen.

Der Commissioner oder das Gerät zur Steuerung (z. B. ein Smartphone oder Hub) kann die Informationen im Deskriptor-Cluster verwenden, um das Gerät (Licht, Schalter, Pumpe, Thermostat) und bestimmte Funktionen zu modellieren, die von dieser bestimmten Instanz des Geräts implementiert wurden, um dem Nutzer die richtige Benutzeroberfläche anzuzeigen.

Servercluster

Das Attribut ServerList listet die Clusterserver 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 zusammen mit den entsprechenden Versionen. Es muss mindestens einen Gerätetyp enthalten.

Teileliste

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. Beispielsweise benötigt ein Temperatursensor nur einen Server-Cluster für die Temperaturmessung.

Andere Gerätetypen können in einer Baumstruktur mit mehr als einer Device Type-Instanz zusammengefasst sein. Ein Videoplayer-Gerätetyp kann beispielsweise aus Fernseher, Videoplayer, Lautsprecher und verschiedenen Inhalts-App-Gerätetypen bestehen, die sich jeweils an einem anderen Endpunkt befinden.


  1. Die Spezifikation Matter bestimmt, dass ein Gerät mehrere Knoten haben kann. Smartphones können beispielsweise mehrere Apps haben, wobei jede Anwendung einen anderen Knoten darstellt. Für diese Primer-Anwendung enthalten alle Geräte einen einzigen Knoten. Es ist zu erwarten, dass die meisten physischen Geräte diesem Muster folgen.