Transaktionen lesen

Transaktion lesen

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 die erste Aktion die Leseanfrage sein.

Abfolge der Vorgänge einer Lesetransaktion
Abbildung 1: Lesetransaktion

Aktion für 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 Attributen des Ziels.
  • Event Requests (Ereignisanfragen): Liste mit null oder mehr Pfaden zu den angeforderten Ereignissen des Ziels.

Nachdem das Ziel die Leseanfrage-Aktion empfangen hat, wird eine Berichtsdaten-Aktion mit den angeforderten Informationen zusammengestellt.

Datenaktion für Bericht

Richtung: Ziel -> Initiator

In dieser Aktion antwortet das Ziel mit:

  • Attribute Reports (Attributberichte): eine Liste mit null oder mehr der gemeldeten Attribute, die in der Leseaktionsanfrage angefordert wurden.
  • Ereignisberichte: Eine Liste mit null oder mehr gemeldeten Ereignissen.
  • Suppress Response: Ein Flag, das angibt, ob die status-Antwort auf diese Aktion unterdrückt werden soll.
  • Abo-ID: Wenn dieser Bericht Teil einer Abo-Transaktion ist, muss er eine Ganzzahl enthalten, mit der die Abo-Transaktion identifiziert wird.

Aktion für Statusantwort

Richtung: entweder „Ziel –> Initiator“ oder „Initiator –> Ziel“

Sobald der Initiator die angeforderten Daten erhalten hat, muss er standardmäßig eine Status Response Action generieren. Diese Aktion wird vom Initiator gesendet, um den Empfang der gemeldeten Daten zu bestätigen. Wenn das Flag „Suppress Status Response“ gesetzt ist, darf der Initiator die Status Response Action nicht senden.

Sobald die Status Response Action vom Initiator gesendet wird oder der Initiator eine Report Data Action mit aktiviertem Suppress Response-Flag empfängt, ist die Lese-/Berichtsanfrage abgeschlossen.

Die Status Response Action enthält lediglich das Feld status, in dem entweder der Erfolg des Vorgangs bestätigt oder ein Fehlercode angegeben wird.

Leseeinschränkungen

Die Aktionen „Lesevorgang anfordern“ und „Berichtsdaten“ sind nur für Unicast verfügbar. Außerdem dürfen die Pfade dieser Anfragen nicht auf eine Knotengruppe ausgerichtet sein.

Die Status Response Action ist nur für Unicast verfügbar und kann nicht als Antwort auf einen Groupcast generiert werden.

Abo-Transaktion

Ablauf einer Abotransaktion
Abbildung 2: Abo-Transaktion

Aktion für Aboanfrage

Richtung: Initiator -> Ziel

Zusätzlich zu einer einzelnen Leseanfrageaktion kann ein Initiator auch periodische Aktualisierungen eines Attributs oder Ereignisses abonnieren. Daher kann dieselbe Aktion für Berichtsdaten als Ergebnis regelmäßiger Datenaktualisierungen generiert werden, die auf eine Abo-Transaktion folgen.

Durch eine Abo-Interaktion wird eine Beziehung zwischen zwei Knoten erstellt, in der das Ziel regelmäßig Berichtsdatenaktionen für den Initiator generiert. Der Initiator ist der Abonnent und das Ziel ist der Verlag.

Eine Aboanfrage-Aktion enthält Folgendes:

  • Min Interval Floor (Mindestintervall): Das Mindestintervall zwischen Berichten.
  • Max Interval Ceiling (Obergrenze für maximales Intervall): Das maximale Intervall zwischen Berichten.
  • Attributberichte: Eine Liste mit null oder mehr der gemeldeten Attribute, die in der Leseaktionsanfrage angefordert wurden.
  • Ereignisberichte: Eine Liste mit null oder mehr gemeldeten Ereignissen.

Nach der Aboanfrage antwortet das Ziel mit einer „Report Data Action“ (Aktion zum Melden von Daten), die den ersten Batch der gemeldeten Daten enthält: die Primed Published Data (vorbereiteten veröffentlichten Daten).

Der Initiator bestätigt dann die Aktion „Berichtsdaten“ mit einer Statusantwortaktion, die an das Ziel gesendet wird. Sobald das Ziel eine Status Response Action ohne Fehler empfängt, sendet es eine Subscribe Response Action.

Das Ziel sendet dann in regelmäßigen Abständen im vereinbarten Intervall die Aktion „Berichtsdaten“ und der Initiator antwortet auf diese Aktionen, bis das Abo verloren geht oder gekündigt wird.

Aktion „Abonnieren“

Richtung: Ziel -> Initiator

Dies ist die letzte Aktion für die Abo-Transaktion und schließt den Vorgang ab. Dazu gehören:

  • Abo-ID: Eine Ganzzahl, die das Abo identifiziert.
  • Mindestintervall: Das endgültige, festgelegte Mindestintervall zwischen Berichten.
  • Maximales Intervall: Das endgültige, festgelegte maximale Intervall zwischen Berichten.

Einschränkungen beim Abonnieren

  • Die Aktion „Abonnementanfrage“ und die Aktion „Abonnementantwort“ sind nur Unicast-Aktionen.
  • Alle Aktionen für Berichtsdaten in einer Abo-Interaktion müssen dieselbe Abo-ID haben.
  • Wenn der Abonnent innerhalb des maximalen vereinbarten Intervalls zwischen Aktionen keine Report Data Action erhält, wird das Abo gekündigt.
  • Infolge der vorherigen Regel kann der Publisher eine Abo-Interaktion beenden, indem er einfach keine regelmäßigen Berichtsdatenaktionen mehr sendet.
  • Der Abonnent kann die Abo-Interaktion beenden, indem er auf eine „Report Data“-Aktion mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.