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 als Erstes die Aktion „Leseanfrage“ ausgeführt werden.

Abfolge der Vorgänge einer Lesetransaktion
Abbildung 1: Transaktion lesen

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 Attributen des Ziels.
  • Ereignisanfragen: eine Liste mit null oder mehr Pfaden zu den angeforderten Ereignissen des Ziels.

Nachdem das Ziel die Aktion „Leseanfrage“ erhalten hat, wird eine Aktion „Berichtsdaten“ mit den angeforderten Informationen zusammengestellt.

Aktion „Berichtsdaten“

Richtung: Ziel -> Initiator

Bei dieser Aktion antwortet das Ziel mit Folgendem:

  • Attributberichte: eine Liste mit null oder mehr der gemeldeten Attribute , die in der Aktion „Leseanfrage“ angefordert wurden.
  • Ereignisberichte: eine Liste mit null oder mehr gemeldeten Ereignissen.
  • Antwort unterdrücken: ein Flag, das bestimmt, 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 „Statusantwort“

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

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

Sobald die Aktion „Statusantwort“ vom Initiator gesendet wird oder der Initiator eine Aktion „Berichtsdaten“ mit aktiviertem Flag „Antwort unterdrücken“ erhält, ist die Lese-/Berichtsanfrage abgeschlossen.

Die Aktion „Statusantwort“ enthält lediglich ein Feld Status , in dem entweder der Erfolg des Vorgangs bestätigt oder ein Fehlercode angegeben wird.

Leseeinschränkungen

Die Aktion „Leseanfrage“ und die Aktion „Berichtsdaten“ sind Unicast-only. Außerdem dürfen die Pfade dieser Anfragen nicht auf eine Gruppe von Knoten ausgerichtet sein.

Die Aktion „Statusantwort“ ist Unicast-only und kann nicht als Antwort auf einen Groupcast generiert werden.

Abo-Transaktion

Ablauf einer Abotransaktion
Abbildung 2: Abo-Transaktion

Aktion „Aboanfrage“

Richtung: Initiator -> Ziel

Neben einer einzelnen Aktion „Leseanfrage“ kann ein Initiator auch periodische Aktualisierungen eines Attributs oder Ereignisses abonnieren. So kann dieselbe Aktion „Berichtsdaten“ als Ergebnis periodischer Datenaktualisierungen generiert werden, die auf eine Abo-Transaktion folgen.

Bei einer Abo-Interaktion wird eine Beziehung zwischen zwei Knoten erstellt, bei der das Ziel regelmäßig Aktionen „Berichtsdaten“ für den Initiator generiert. Der Initiator ist der Abonnent und das Ziel ist der Publisher.

Eine Aktion „Aboanfrage“ enthält Folgendes:

  • Mindestintervall: das Mindestintervall zwischen Berichten.
  • Maximales Intervall: das maximale Intervall zwischen Berichten.
  • Attributberichte: eine Liste mit null oder mehr der gemeldeten Attribute, die in der Aktion „Leseanfrage“ angefordert wurden.
  • Ereignisberichte: eine Liste mit null oder mehr gemeldeten Ereignissen.

Nach der Aboanfrage antwortet das Ziel dem Initiator mit einer Aktion „Berichtsdaten“, die den ersten Batch gemeldeter Daten enthält: die vorbereiteten veröffentlichten Daten.

Der Initiator bestätigt dann die Aktion „Berichtsdaten“ mit einer Aktion „Statusantwort“, die an das Ziel gesendet wird. Sobald das Ziel eine Aktion „Statusantwort“ ohne Fehler erhält, sendet es eine Aktion „Aboantwort“.

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

Aktion „Aboantwort“

Richtung: Ziel -> Initiator

Dies ist die letzte Aktion in der 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 für Abos

  • Die Aktion „Aboanfrage“ und die Aktion „Aboantwort“ sind Unicast-only actions.
  • Alle Aktionen „Berichtsdaten“ in einer Abo-Interaktion müssen dieselbe Abo-ID haben.
  • Wenn der Abonnent innerhalb des maximalen vereinbarten Intervalls zwischen Aktionen keine Aktion „Berichtsdaten“ erhält, wird das Abo beendet.
  • Infolge der vorherigen Regel kann der Publisher eine Abo-Interaktion beenden, indem er einfach keine periodischen Aktionen „Berichtsdaten“ mehr sendet.
  • Der Abonnent kann die Abo-Interaktion beenden, indem er auf eine Aktion „Berichtsdaten“ mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.