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.
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
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_SUBSCRIPTIONantwortet.