Transaktionen lesen

Lesetransaktion

Einer der ersten Anwendungsfälle bei der Interaktion mit Knoten in Matter ist das Lesen eines Attributs von einem anderen Knoten, z. B. eines Temperaturwerts von einem Sensor. Bei solchen Interaktionen muss zuerst die Aktion „Leseanfrage“ ausgeführt werden.

Abfolge der Vorgänge einer Lesetransaktion
Abbildung 1: Lesetransaktion

Aktion „Leseanfrage“

Richtung: Initiator -> Ziel

Bei dieser Aktion fragt der Initiator ein Ziel ab und gibt Folgendes an:

  • Attributanfragen: Eine Liste mit null oder mehr Attributen des Ziels. Diese Liste besteht aus null oder mehr Pfaden zu den angeforderten Zielattributen.
  • Ereignisanfragen: Liste mit null oder mehr Pfaden zu den angeforderten Ereignissen des Ziels.

Nachdem die Aktion „Anfrage lesen“ vom Ziel empfangen wurde, wird eine Aktion „Daten melden“ mit den angeforderten Informationen zusammengestellt.

Berichtsdatenaktion

Richtung: Ziel -> Initiator

Bei dieser Aktion antwortet das Ziel mit:

  • Attributberichte: Eine Liste mit null oder mehr der in der Leseaktionsanfrage angeforderten gemeldeten Attribute.
  • Ereignisberichte: Liste mit null oder mehr gemeldeten Ereignissen.
  • Antwort unterdrücken: Mit diesem Flag wird festgelegt, ob die Statusantwort auf diese Aktion unterdrückt werden soll.
  • Abo-ID: Wenn dieser Bericht Teil einer Abotransaktion ist, muss er eine Ganzzahl enthalten, die zur Identifizierung der Abotransaktion verwendet wird.

Statusantwortaktion

Richtung: entweder Ziel -> Initiator oder Initiator -> Ziel

Sobald der Initiator die angeforderten Daten erhält, muss er standardmäßig eine Statusantwortaktion generieren. Diese Aktion wird vom Initiator gesendet, um den Erhalt der gemeldeten Daten zu bestätigen. Wenn das Flag „Suppress Status Response“ (Statusantwort unterdrücken) gesetzt ist, darf der Initiator die Statusantwortaktion nicht senden.

Sobald die Statusantwortaktion vom Initiator gesendet wurde oder eine Berichtsdatenaktion vom Initiator empfangen wurde, bei der das Flag „Antwort unterdrücken“ aktiviert ist, ist die Lese-/Berichtsanfrage abgeschlossen.

Die Status-Antwortaktion enthält lediglich ein Feld status, das entweder den Erfolg des Vorgangs bestätigt oder einen Fehlercode anzeigt.

Leseeinschränkungen

Die Aktion „Anfrage lesen“ und die Aktion „Daten melden“ sind nur für Unicast verfügbar. Außerdem sind die Pfade dieser Anfragen möglicherweise nicht auf eine Gruppe von Knoten ausgerichtet.

Die Statusantwortaktion ist nur für Unicast verfügbar und kann nicht als Antwort auf einen Gruppen-Broadcast generiert werden.

Abotransaktion

Abfolge der Vorgänge bei einer Abotransaktion
Abbildung 2: Abotransaktion

Aktion „Abo anfordern“

Richtung: Initiator -> Ziel

Zusätzlich zu einer einzelnen Leseanfrage kann ein Initiator auch regelmäßige Aktualisierungen eines Attributs oder Ereignisses abonnieren. So kann dieselbe Berichtsdatenaktion durch regelmäßige Datenaktualisierungen nach einer Abotransaktion generiert werden.

Durch eine Abointeraktion wird eine Beziehung zwischen zwei Knoten hergestellt, bei der das Ziel regelmäßig Berichtsdatenaktionen für den Initiator generiert. Der Initiator ist der Abonnent und das Ziel ist der Publisher.

Eine Aktion vom Typ „Subscribe Request“ enthält Folgendes:

  • Min Interval Floor (Mindestintervall): das Mindestintervall zwischen Berichten.
  • Max. Intervallobergrenze: das maximale Intervall zwischen Berichten.
  • Attributberichte: Liste mit null oder mehr der in der Leseaktionsanfrage angeforderten gemeldeten Attribute.
  • Ereignisberichte: Liste mit null oder mehr gemeldeten Ereignissen.

Nach der Aktivierungsanfrage antwortet das Ziel dem Initiator mit einer Datenberichtsaktion, die die erste Gruppe der gemeldeten Daten enthält: die vorbereiteten veröffentlichten Daten.

Der Initiator bestätigt dann die Berichtsdatenaktion mit einer Statusantwortaktion, die an das Ziel gesendet wird. Sobald das Ziel eine Status-Antwortaktion ohne Fehler erhält, sendet es eine Antwortaktion vom Typ „Abonnieren“.

Das Ziel sendet anschließend regelmäßig im vereinbarten Intervall die Berichtsdatenaktion und der Initiator antwortet auf diese Aktionen, bis das Abo verloren geht oder gekündigt wird.

Antwortaktion „Abonnieren“

Richtung: Ziel -> Initiator

Dies ist die letzte Aktion bei der Abotransaktion und schließt den Vorgang ab. Dazu gehören:

  • Abo-ID: Eine Ganzzahl, die das Abo identifiziert.
  • Min Interval: das finale, festgelegte Mindestintervall zwischen Berichten.
  • Maximales Intervall: das finale, bestimmte maximale Intervall zwischen Berichten.

Einschränkungen beim Abonnieren

  • Die Aktionen „Subscribe Request“ und „Subscribe Response“ sind nur für Unicast verfügbar.
  • Alle Berichtsdatenaktionen in einer Abointeraktion müssen dieselbe Abo-ID haben.
  • Wenn der Abonnent innerhalb des maximal ausgehandelten Intervalls zwischen den Aktionen keine Berichtsdatenaktion erhält, wird das Abo gekündigt.
  • Gemäß der vorherigen Regel kann der Publisher eine Aboverknüpfung beenden, indem er einfach das Senden regelmäßiger Berichtsdatenaktionen beendet.
  • Der Abonnent kann die Abointeraktion beenden, indem er auf eine Datenberichtsaktion mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.