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. ein Temperaturwert von einem Sensor. Bei solchen Interaktionen ist die erste auszuführende Aktion die Aktion „Leseanfrage“.

Sequenz der Vorgänge einer Lesetransaktion
Abbildung 1: Lesetransaktion

Anfrageaktion lesen

Richtung: Initiator -> Ziel

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

  • 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 Leseanfrageaktion beim Ziel empfangen wurde, wird eine Aktion für Berichtsdaten mit den angeforderten Informationen erstellt.

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 Anfrage für Leseaktionen angefordert wurden.
  • Ereignisberichte: Eine Liste mit null oder mehr gemeldeten Ereignissen.
  • Antwort unterdrücken: Dieses Flag 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.

Statusantwortaktion

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

Sobald der Initiator die angeforderten Daten erhalten hat, muss er standardmäßig eine Statusantwortaktion generieren. Diese Aktion wird vom Initiator gesendet und bestätigt den Empfang der gemeldeten Daten. Wenn das Flag „Statusantwort unterdrücken“ gesetzt ist, darf der Initiator die Statusantwortaktion nicht senden.

Sobald der Initiator die Statusantwortaktion gesendet hat oder vom Initiator eine Aktion für Berichtsdaten empfangen und das Flag „Antwort unterdrücken“ aktiviert ist, ist die Lese-/Berichtsabfrage abgeschlossen.

Die Statusantwortaktion enthält einfach ein status-Feld, das entweder den erfolgreichen Vorgang bestätigt oder einen Fehlercode anzeigt.

Einschränkungen für Lesevorgänge

Die Aktionen „Leseanfrageaktion“ und „Berichtsdaten“ können nur den Status Unicast haben. Darüber hinaus dürfen die Pfade dieser Anfragen nicht auf eine Gruppe von Knoten ausgerichtet sein.

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

Abo-Transaktion

Sequenz der Vorgänge einer Abotransaktion
Abbildung 2: Abotransaktion

Aktion für Aboanfrage

Richtung: Initiator -> Ziel

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

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

Eine Abonnieren-Anfrage-Aktion enthält Folgendes:

  • Min Interval Floor (Mindestintervall für Tiefstwert): 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 Anfrage für eine Leseaktion angefordert wurden.
  • Ereignisberichte: Eine Liste mit null oder mehr gemeldeten Ereignissen.

Nach der Abonnieren-Anfrage antwortet das Ziel dem Initiator mit einer Berichtsdatenaktion, die den ersten Batch von gemeldeten Daten enthält: die Primed-Veröffentlichungsdaten.

Der Initiator bestätigt dann die Berichtsdatenaktion mit einer Statusantwortaktion, die an das Ziel gesendet wird. Sobald das Ziel eine Statusantwortaktion empfängt, die keine Fehler meldet, sendet es eine Abo-Antwortaktion.

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

Antwortaktion „Abonnieren“

Richtung: Ziel -> Initiator

Dies ist die letzte Aktion der Abotransaktion und beendet den Prozess. Er enthält:

  • Abo-ID: Eine Ganzzahl, die das Abo identifiziert.
  • Min Interval (Mindestintervall): das endgültige, festgelegte Mindestintervall zwischen Berichten.
  • Max Interval (Maximalintervall): das endgültige, festgelegte maximale Intervall zwischen Berichten.

Abo-Einschränkungen

  • Die Abonnieren-Anfrage- und die Abonnieren-Antwort-Aktion sind Aktionen, die nur Unicast-fähig sind.
  • Alle Berichtsdatenaktionen bei 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 vorstehenden Regel kann der Publisher eine Abointeraktion beenden, indem er das Senden regelmäßiger Berichtsdatenaktionen beendet.
  • Der Abonnent kann die Abointeraktion beenden, indem er auf eine Berichtsdatenaktion mit dem Statuscode INACTIVE_SUBSCRIPTION antwortet.