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, np. wartości temperatury z czujnika. Pierwszą czynnością, jaką należy wykonać w takich interakcjach, jest działanie żądania odczytu.

Sekwencja operacji odczytu
Rysunek 1. Odczytywanie transakcji

Odczytywanie działania żądania

Kierunek: Inicjator -> Cel

W tej akcji inicjator wysyła zapytanie do celu, dostarczając:

  • Żądania atrybutów: lista atrybutów elementu docelowego zawierająca zero lub więcej atrybutów. Ta lista składa się z 0 lub większej liczby ścieżek do żądanych atrybutów celu.
  • Żądania zdarzenia: lista zerowej lub większej liczby ścieżek do zdarzeń żądanych w elemencie docelowym.

Po otrzymaniu działania żądania odczytu przez Cel, usługa tworzy działanie dotyczące danych raportu z wymaganymi informacjami.

Działanie na danych raportu

Kierunek: Kierowanie -> Inicjator

W tej akcji cel przesyła odpowiedź:

  • Raporty o atrybutach: lista zawierająca zero lub więcej raportowanych atrybutów żądanych w żądaniu działania odczytu.
  • Raporty o zdarzeniach: lista zerowych lub większej liczby zgłoszonych zdarzeń.
  • Suppress Response: flaga określająca, czy odpowiedź dotycząca stanu na to działanie powinna zostać pominięta.
  • Identyfikator subskrypcji: jeśli ten raport jest częścią transakcji subskrypcji, musi zawierać liczbę całkowitą używaną do identyfikacji tej transakcji.

Działanie w odpowiedzi na stan

Kierunek: Cel -> Inicjator lub Inicjator -> Cel

Gdy inicjator otrzyma żądane dane, domyślnie musi wygenerować działanie odpowiedzi na stan. To działanie jest wysyłane przez inicjatora jako potwierdzenie otrzymania raportowanych danych. Jeśli flaga Suppress Status Response jest ustawiona, inicjator nie może wysyłać odpowiedzi dotyczącej stanu.

Gdy inicjator wyśle działanie odpowiedzi na stan lub otrzyma działanie w postaci danych raportu z włączoną flagą odpowiedzi pomijania, zapytanie odczytu/raportu zostanie zakończone.

Pole „Stan odpowiedzi” zawiera po prostu pole status, które potwierdza pomyślne wykonanie operacji lub wyświetla kod błędu.

Ograniczenia odczytu

Działania związane z żądaniem odczytu i działania dotyczące danych raportu są tylko Unicast. Co więcej, ścieżki tych żądań nie mogą być kierowane na grupę węzłów.

Działanie w odpowiedzi na stan jest dostępne tylko dla Unicast i nie można jej wygenerować w odpowiedzi na prezentację grupową.

Transakcja subskrypcji

Sekwencja operacji subskrypcji
Rysunek 2. Transakcja subskrypcji

Działanie żądania subskrypcji

Kierunek: Inicjator -> Cel

Oprócz pojedynczej czynności żądania odczytu inicjator może też subskrybować okresowe aktualizacje atrybutu lub zdarzenia. To samo działanie dotyczące danych raportu można więc wygenerować w wyniku okresowych aktualizacji danych, które następują po transakcji subskrypcji.

Interakcja z subskrypcją tworzy relację między 2 węzłami, w której obiekt docelowy okresowo generuje dla inicjatora działania związane z danymi w raporcie. Inicjator to subskrybent, a celem jest wydawca.

Działanie żądania subskrypcji zawiera:

  • Minimalny odstęp czasu: minimalny odstęp czasu między raportami.
  • Maksymalny odstęp czasu: maksymalny odstęp czasu między raportami.
  • Raporty o atrybutach: lista zawierająca zero lub więcej raportowanych atrybutów żądanych w żądaniu działania odczytu.
  • Raporty o zdarzeniach: lista zerowych lub więcej zgłoszonych zdarzeń.

Po wysłaniu prośby o subskrypcję obiekt docelowy odpowiada inicjatorowi działań związanych z danymi raportu zawierającymi pierwszą porcję danych, czyli Primed opublikowane dane.

Inicjator potwierdza czynność dotyczącą danych raportu, wysyłając do elementu docelowego działanie w odpowiedzi na temat stanu. Gdy środowisko docelowe otrzyma informację o braku błędów, wysyła działanie subskrypcji odpowiedzi.

Następnie będzie okresowo wysyłać działanie dotyczące danych raportu w wynegocjowanych odstępach czasu, a inicjator będzie odpowiadać na te akcje do czasu utraty lub anulowania subskrypcji.

Działanie subskrypcji odpowiedzi

Kierunek: Kierowanie -> Inicjator

To ostatnie działanie w transakcji subskrypcji, które kończy cały proces. Znajdziesz w nich m.in. te informacje:

  • Subscription ID (Identyfikator subskrypcji): liczba całkowita identyfikująca subskrypcję.
  • Interwał minimalny: końcowy, określony minimalny odstęp czasu między raportami.
  • Interwał maksymalny: końcowy, określony maksymalny odstęp między raportami.

Ograniczenia dotyczące subskrypcji

  • Działania żądania subskrypcji i odpowiedzi subskrypcji to działania dotyczące tylko Unicast.
  • Wszystkie działania na danych w raporcie w ramach interakcji polegającej na 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 akcjami, subskrypcja zostanie zakończona.
  • W konsekwencji poprzedniej reguły wydawca może zakończyć interakcję z subskrypcją, rezygnując po prostu z okresowych działań związanych z danymi raportu.
  • Subskrybent może zakończyć interakcję z subskrypcją, odpowiadając na akcję dotyczącą danych raportu kodem stanu INACTIVE_SUBSCRIPTION.