Odczytywanie transakcji

Odczytywanie transakcji

Jednym z pierwszych przypadków użycia podczas interakcji z węzłami w Matter jest odczytywanie atrybutu z innego węzła, np. wartości temperatury z czujnika. W takich interakcjach pierwszym działaniem, które należy wykonać, jest działanie żądania odczytu.

Kolejność operacji w transakcji odczytu
Rysunek 1. Transakcja odczytu

Działanie żądania odczytu

Kierunek: inicjator –> cel

W tym działaniu inicjator wysyła do obiektu docelowego zapytanie, w którym podaje:

  • Żądania atrybutów: lista atrybutów miejsca docelowego (może być pusta). Lista ta zawiera 0 lub więcej ścieżek do atrybutów żądanych przez usługę docelową.
  • Event Requests: lista zawierająca 0 lub więcej ścieżek do żądanych zdarzeń w miejscu docelowym.

Po otrzymaniu działania Read Request Action urządzenie docelowe utworzy działanie Report Data Action z żądanymi informacjami.

Działanie na danych raportu

Kierunek: Cel –> Inicjator

W tym działaniu usługa docelowa odpowiada:

  • Attribute Reports: lista z co najmniej 1 zgłoszonym atrybutem, o który poproszono w żądaniu działania odczytu.
  • Raporty o zdarzeniach: lista zgłoszonych zdarzeń (może być pusta).
  • Suppress Response: flaga określająca, czy odpowiedź statusu na to działanie powinna być pomijana.
  • Identyfikator subskrypcji: jeśli ten raport jest częścią transakcji subskrypcji, musi zawierać liczbę całkowitą służącą do identyfikacji transakcji subskrypcji.

Działanie w odpowiedzi na stan

Kierunek: Target -> Initiator lub Initiator -> Target

Gdy inicjator otrzyma żądane dane, domyślnie musi wygenerować działanie odpowiedzi o stanie. To działanie jest wysyłane przez inicjatora w celu potwierdzenia otrzymania zgłoszonych danych. Jeśli flaga Suppress Status Response jest ustawiona, inicjator nie może wysyłać działania Status Response.

Gdy inicjator wyśle działanie Status Response Action lub gdy inicjator otrzyma działanie Report Data z włączoną flagą Suppress Response, zapytanie odczytu/raportu zostanie zakończone.

Działanie odpowiedzi o stanie zawiera tylko pole status, które potwierdza powodzenie operacji lub przedstawia kod błędu.

Ograniczenia dotyczące odczytu

Działania Read Request Action i Report Data Action są dostępne tylko w przypadku Unicast. Ponadto ścieżki tych żądań nie mogą być kierowane na grupę węzłów.

Działanie odpowiedzi na stan jest dostępne tylko w przypadku Unicast i nie może być generowane jako odpowiedź na transmisję grupową.

Transakcja zakupu subskrypcji

Kolejność operacji w transakcji subskrypcji
Rysunek 2. Transakcja subskrypcji

Działanie związane z prośbą o subskrypcję

Kierunek: inicjator –> cel

Oprócz pojedynczego działania Read Request Action inicjator może też subskrybować okresowe aktualizacje atrybutu lub zdarzenia. W ten sposób to samo działanie dotyczące danych raportu może być generowane w wyniku okresowych aktualizacji danych, które następują po transakcji subskrypcji.

Interakcja subskrypcji tworzy relację między 2 węzłami, w której węzeł docelowy okresowo generuje działania związane z danymi raportu dla węzła inicjującego. Inicjatorem jest subskrybent, a odbiorcą wydawca.

Działanie związane z prośbą o subskrypcję zawiera:

  • Min Interval Floor (Minimalny odstęp): minimalny odstęp między raportami.
  • Maksymalny odstęp czasu: maksymalny odstęp czasu między raportami.
  • Raporty o atrybutach: lista 0 lub większej liczby zgłoszonych atrybutów wymaganych w żądaniu działania odczytu.
  • Raporty o zdarzeniach: lista zgłoszonych zdarzeń (może być pusta).

Po wysłaniu żądania subskrypcji usługa docelowa odpowiada usłudze inicjującej, wysyłając działanie Report Data Action zawierające pierwszą partię zgłoszonych danych: przygotowane dane opublikowane.

Następnie inicjator potwierdza działanie Report Data Action za pomocą odpowiedzi Status Response Action sent to the Target. Gdy urządzenie docelowe otrzyma działanie Status Response Action informujące o braku błędów, wysyła działanie Subscribe Response Action.

Urządzenie docelowe będzie następnie okresowo wysyłać działanie Report Data Action w uzgodnionym odstępie czasu, a urządzenie inicjujące będzie odpowiadać na te działania do momentu utraty lub anulowania subskrypcji.

Działanie odpowiedzi na subskrypcję

Kierunek: Cel –> Inicjator

To ostatnie działanie w transakcji subskrypcji, które kończy proces. Usługa ta obejmuje:

  • Identyfikator subskrypcji: liczba całkowita identyfikująca subskrypcję.
  • Min Interval (Minimalny odstęp): ostateczny, określony minimalny odstęp między raportami.
  • Maksymalny odstęp: ostateczny, określony maksymalny odstęp między raportami.

Ograniczenia dotyczące subskrypcji

  • Akcja żądania subskrypcji i akcja odpowiedzi na żądanie subskrypcji to akcje Unicast.
  • Wszystkie działania dotyczące danych raportu w interakcji subskrypcji muszą mieć ten sam identyfikator subskrypcji.
  • Jeśli Subskrybent nie otrzyma działania związanego z danymi raportu w maksymalnym wynegocjowanym odstępie między działaniami, subskrypcja zostanie zakończona.
  • W konsekwencji poprzedniej reguły Wydawca może zakończyć interakcję z subskrypcją, po prostu przestając wysyłać okresowe działania związane z danymi raportu.
  • Subskrybent może zakończyć interakcję subskrypcji, odpowiadając na działanie raportowania danych kodem stanu INACTIVE_SUBSCRIPTION.