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 als erste Aktion die Leseanfrageaktion ausgeführt werden.

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 stellt Folgendes bereit:

  • 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 angeforderten Ereignissen des Ziels.

Nachdem die Aktion „Read Request“ vom Ziel empfangen wurde, wird eine Aktion „Report Data“ mit den angeforderten Informationen zusammengestellt.

Berichtsdatenaktion

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.
  • Suppress Response: Ein Flag, das bestimmt, ob die Statusantwort auf diese Aktion unterdrückt werden soll.
  • Abo-ID: Wenn dieser Bericht Teil einer Abo-Transaktion ist, muss er eine Ganzzahl enthalten, die zur Identifizierung der Abo-Transaktion verwendet wird.

Status Response Action

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 Empfang der gemeldeten Daten zu bestätigen. Wenn das Flag „Suppress Status Response“ festgelegt ist, darf der Initiator die Status Response Action nicht senden.

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

Die Statusantwortaktion enthält einfach ein status-Feld, das entweder den Erfolg des Vorgangs bestätigt oder einen Fehlercode enthält.

Einschränkungen lesen

Die Aktionen „Leseanfrage“ und „Berichtsdaten“ sind nur für Unicast verfügbar. Außerdem dürfen die Pfade dieser Anfragen nicht auf eine Gruppe von Knoten abzielen.

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

Abotransaktion

Abfolge der Vorgänge einer Abotransaktion
Abbildung 2: Abotransaktion

Aboanfrage-Aktion

Richtung: Initiator -> Ziel

Zusätzlich zu 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 Abo-Transaktion folgen.

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

Eine Aboanfrage enthält Folgendes:

  • Min Interval Floor: das Mindestintervall zwischen Berichten.
  • 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 Subscribe Request antwortet das Ziel dem Initiator mit einer Report Data Action, die den ersten Satz Berichtsdaten enthält: die Primed Published Data.

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

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

Aktionsantwort „Abonnieren“

Richtung: Ziel -> Initiator

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

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

Einschränkungen für Abos

  • Die Subscribe Request Action und die Subscribe Response Action sind reine Unicast-Aktionen.
  • Alle Berichtsdatenaktionen in einer Abo-Interaktion müssen dieselbe Abo-ID haben.
  • Wenn der Abonnent innerhalb des maximalen ausgehandelten Intervalls zwischen Aktionen keine Berichtsdatenaktion erhält, wird das Abo gekündigt.
  • Als Folge 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 Action mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.