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 Interactions ist die erste Aktion, die ausgeführt werden muss, die Leseanforderungsaktion.

Abfolge von Vorgängen einer Lesetransaktion
Abbildung 1: Lesetransaktion

Leseanfrageaktion

Richtung: Initiator -> Ziel

Bei dieser Aktion fragt der Initiator ein Target ab, das Folgendes bereitstellt:

  • 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: Liste mit null oder mehr Pfaden zu den vom Ziel angeforderten Ereignissen.

Nachdem die Leseanfrageaktion beim Ziel empfangen wurde, wird eine Berichtsdatenaktion mit den angeforderten Informationen zusammengestellt.

Aktion für Berichtsdaten

Richtung: Ziel -> Initiator

In dieser Aktion antwortet das Ziel mit:

  • 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.
  • Antwort unterdrücken: Ein Flag, das bestimmt, ob die Statusantwort auf diese Aktion unterdrückt werden soll.
  • Abo-ID: Wenn dieser Bericht Teil einer Abotransaktion ist, muss er eine Ganzzahl enthalten, mit der die Abotransaktion identifiziert wird.

Aktion für Statusantwort

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 und bestätigt den Eingang der gemeldeten Daten. Wenn das Flag „Statusantwort unterdrücken“ festgelegt ist, darf der Initiator die Statusantwortaktion nicht senden.

Sobald die Statusantwortaktion vom Initiator gesendet oder eine Berichtsdatenaktion vom Initiator mit aktiviertem Flag „Antwort unterdrücken“ empfangen wurde, ist die Lese-/Berichtsabfrage abgeschlossen.

Die Statusantwortaktion enthält einfach ein status-Feld, in dem entweder der Erfolg des Vorgangs bestätigt oder ein Fehlercode angezeigt wird.

Lesebeschränkungen

Die Leseanfrageaktion und die Berichtsdatenaktion sind nur auf Unicast beschränkt. Außerdem dürfen die Pfade dieser Anfragen nicht auf eine Gruppe von Knoten ausgerichtet sein.

Die Statusantwortaktion ist nur Unicast und kann nicht als Antwort auf einen Groupcast generiert werden.

Abotransaktion

Abfolge von Vorgängen einer Abotransaktion
Abbildung 2: Abotransaktion

Aktion für Aboanfrage

Richtung: Initiator -> Ziel

Neben einer einzelnen Leseanfrageaktion kann ein Initiator auch regelmäßige Updates eines Attributs oder Ereignisses abonnieren. Daher kann dieselbe Berichtsdatenaktion als Ergebnis regelmäßiger Datenaktualisierungen generiert werden, die auf eine Abotransaktion folgen.

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

Eine Aktion für eine Aboanfrage enthält Folgendes:

  • Min Interval Floor: Das Mindestintervall zwischen Berichten.
  • Max Interval Ceiling: 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 dem Initiator mit einer Berichtsdatenaktion, die den ersten Batch gemeldeter Daten enthält: die aufgezeichneten veröffentlichten Daten.

Der Initiator bestätigt dann die Berichtsdatenaktion mit einer Statusantwortaktion, die an das Ziel gesendet wird. Sobald das Ziel eine Statusantwortaktion erhält, die keine Fehler meldet, wird eine Aboantwortaktion gesendet.

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

Antwortaktion für Abonnieren

Richtung: Ziel -> Initiator

Dies ist die letzte Aktion der Abotransaktion und der Vorgang wird beendet. Er enthält:

  • Abo-ID: Eine Ganzzahl, die das Abo identifiziert.
  • Min Interval (Mindestintervall): das abschließende, festgelegte Mindestintervall zwischen Berichten.
  • Max Interval (Max. Intervall): das abschließende, festgelegte maximale Intervall zwischen Berichten.

Abo-Einschränkungen

  • Die Aktionen für die „Abonnieren“-Anfrage und die „Abonnieren-Antwort“ sind ausschließlich Unicast.
  • Alle Berichtsdatenaktionen in einer Abointeraktion müssen dieselbe Abo-ID haben.
  • Wenn der Abonnent innerhalb des maximal ausgehandelten Intervalls zwischen Aktionen keine Berichtsdatenaktion erhält, wird das Abo beendet.
  • Infolge der vorherigen Regel kann der Verlag oder Webpublisher eine Abointeraktion beenden, indem er einfach das Senden regelmäßiger Berichtsdatenaktionen beendet.
  • Der Abonnent kann die Abointeraktion beenden, indem er auf eine Berichtsdatenaktion mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.