Odczytywanie transakcji

Odczytywanie transakcji

Jednym z pierwszych przypadków użycia podczas interakcji z węzłami w Matter jest odczyt atrybutu z innego węzła, na przykład wartości temperatury z czujnika. W takich interakcjach pierwszym działaniem, które musi być wykonane, jest Żądanie odczytu.

Sekwencja operacji odczytu transakcji odczytu
Rysunek 1. Odczytywanie transakcji

Odczytywanie działania żądania

Kierunek: Inicjator -> Cel

W tym działaniu inicjator wysyła zapytanie do elementu docelowego, podając:

  • Żądania atrybutu: lista zawierająca zero lub więcej atrybutów celu. Ta lista składa się z 0 lub więcej ścieżek do żądanych atrybutów elementu docelowego.
  • Żądania zdarzeń: lista z co najmniej 0 ścieżkami żądanych zdarzeń celu.

Gdy podmiot docelowy otrzyma żądanie odczytu, utworzy działanie dotyczące danych raportu z wymaganymi informacjami.

Działanie na danych w raporcie

Kierunek: Cel -> Inicjator

W ramach tej akcji cel w odpowiedzi przesyła:

  • Raporty dotyczące atrybutów: lista zero lub więcej raportowanych atrybutów żądanych w żądaniu działania związanego z odczytem.
  • Raporty o zdarzeniach: lista co najmniej 0 zgłoszonych zdarzeń.
  • Suppress Response (Pomiń odpowiedź): flaga określająca, czy odpowiedź stanu na to działanie powinna zostać pominięta.
  • Identyfikator subskrypcji: jeśli raport jest częścią transakcji subskrypcji, musi zawierać liczbę całkowitą używaną do identyfikacji transakcji subskrypcji.

Działanie w odpowiedzi na stan

Kierunek: Cel -> Inicjator lub Inicjator -> Cel

Gdy inicjator otrzyma żądane dane, domyślnie musi wygenerować działanie związane ze stanem. To działanie jest wysyłane z Inicjatora jako potwierdzenie otrzymania zgłoszonych danych. Jeśli ustawiona jest flaga Suppress Status Response, inicjator nie może wysyłać działania związanego ze stanem.

Gdy inicjator wyśle działanie stanu odpowiedzi lub otrzyma działanie dotyczące danych raportu z włączoną flagą Suppress Response, zapytanie odczytu/raportu zostanie zakończone.

Czynność reakcji na stan zawiera tylko pole status, w którym można potwierdzić powodzenie operacji lub wyświetlić kod błędu.

Odczyt ograniczeń

Działanie związane z żądaniem odczytu i działaniem danych w raporcie są dostępne tylko w polu Unicast. Co więcej, ścieżki tych żądań nie mogą być kierowane na grupę węzłów.

Akcja odpowiedzi na stan jest przeznaczona tylko dla klasy Unicast i nie może być wygenerowana jako odpowiedź na Groupcast.

Transakcja subskrypcji

Kolejność działań Transakcji subskrypcji
Rysunek 2. Transakcja subskrypcji

Działanie prośby o subskrypcję

Kierunek: Inicjator -> Cel

Oprócz pojedynczej akcji odczytu żądania osoba inicjator może subskrybować okresowe aktualizacje atrybutu lub zdarzenia. To samo działanie dotyczące danych z raportów może zostać wygenerowane w wyniku okresowych aktualizacji danych, które następuje po transakcji subskrypcji.

Interakcja subskrypcji tworzy relację między 2 węzłami, w której cel okresowo generuje dla inicjatora działania na dane raportowania. Inicjator to Subskrybent, a elementem docelowym to Wydawca.

Działanie żądania subskrypcji zawiera:

  • Minimalny interwał: minimalny odstęp czasu między raportami.
  • Maksymalny odstęp czasu: maksymalny odstęp między raportami.
  • Raporty dotyczące atrybutów: lista zero lub więcej raportowanych atrybutów żądanych w żądaniu działania związanego z odczytem.
  • Raporty o zdarzeniach: lista z co najmniej 0 zgłoszonych zdarzeń.

Po wysłaniu prośby o subskrypcję obiekt docelowy odpowiada inicjatorowi za pomocą działania dotyczącego danych raportu, które zawiera pierwszą porcję zgłoszonych danych: Pierwotne opublikowane dane.

Następnie inicjator potwierdza działanie dotyczące danych w raporcie, wysyłając do elementu docelowego odpowiedź na stan. Gdy cel otrzyma działanie związane ze stanem, który nie zgłosi żadnego błędu, wysyła działanie związane z subskrypcją.

Następnie element docelowy będzie co jakiś czas wysyłać akcje dotyczące danych w raportach w ustalonych odstępach czasu, a Inicjator będzie na nie odpowiadać, dopóki subskrypcja nie zostanie utracona lub anulowana.

Działanie w odpowiedzi na subskrypcję

Kierunek: Cel -> Inicjator

Jest to ostatnie działanie w ramach transakcji subskrypcji i zakończy ten proces. Znajdziesz w nich m.in. te informacje:

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

Ograniczenia subskrypcji

  • Działania związane z żądaniem subskrypcji i reakcją subskrypcji to działania dostępne tylko w języku: Unicast.
  • Wszystkie działania dotyczące danych z raportów w ramach interakcji z subskrypcją muszą mieć ten sam identyfikator subskrypcji.
  • Jeśli subskrybent nie otrzyma Działania na danych raportu w maksymalnym wynegocjowanym okresie między akcjami, subskrypcja zostanie zakończona.
  • W efekcie poprzedniej reguły wydawca może zakończyć interakcję z subskrypcją, zatrzymując wysyłanie okresowych działań na danych raportu.
  • Subskrybent może zakończyć interakcję z subskrypcją, odpowiadając na działanie dotyczące raportu dotyczącego danych, używając kodu stanu INACTIVE_SUBSCRIPTION.