Odczytywanie transakcji

Odczyt transakcji

Jednym z pierwszych zastosowań 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 zostać wykonane, jest działanie związane z odczytaniem żądania.

Sekwencja operacji transakcji odczytu
Rysunek 1. Transakcja odczytu

Odczyt żądania

Kierunek: inicjator -> docelowe

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

  • Prośby o atrybuty: lista co najmniej 1 atrybutu docelowego. Ta lista składa się z 0 lub więcej ścieżek do żądanych atrybutów celu.
  • Żądania zdarzeń: lista co najmniej 1 ścieżki do żądanych zdarzeń celu.

Gdy docelowa usługa otrzyma działanie Read Request Action, utworzy działanie Report Data Action z żądanymi informacjami.

Zgłoś działanie na danych

Kierunek: docelowe > inicjator

W tym działaniu docelowe zwraca:

  • Raporty atrybutów: lista co najmniej 1 zgłoszonego atrybutu, którego dotyczy żądanie wykonania operacji odczytu.
  • Raporty o zdarzeniach: lista co najmniej 1 zgłoszonego zdarzenia.
  • Tłumienie odpowiedzi: flaga określająca, czy odpowiedź dotycząca tego działania powinna zostać stłumiona.
  • Identyfikator subskrypcji: jeśli ten raport jest częścią transakcji subskrypcji, musi zawierać liczbę całkowitą służącą do identyfikacji transakcji subskrypcji.

Stan działania odpowiedzi

Kierunek: „Docelowy –> Inicjator” lub „Inicjator –> Docelowy”.

Gdy inicjator otrzyma żądane dane, musi domyślnie wygenerować odpowiedź z akcja stanu. To działanie jest wysyłane przez inicjatora i potwierdza otrzymanie zgłoszonych danych. Jeśli flaga SuppressStatusResponse jest ustawiona, inicjator nie może wysyłać działania odpowiedzi stanu.

Gdy inicjator wyśle odpowiedź na zapytanie o stan lub otrzyma od niego działanie dotyczące raportowania danych z włączonym flagą pominięcia odpowiedzi, zapytanie odczytuje/raportuje.

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

Ograniczenia dotyczące czytania

Czynność „Czytaj żądanie” i „Zgłoś dane” są dostępne tylko dla Unicast. Ścieżki tych żądań nie mogą też być kierowane do grupy węzłów.

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

Transakcja subskrypcji

Sekwencja operacji w transakcji subskrypcji
Rysunek 2. Transakcja subskrypcji

Działanie prośby o subskrypcję

Kierunek: inicjator -> docelowe

Oprócz pojedynczego działania żądania odczytu inicjator może też subskrybować okresowe aktualizacje atrybutu lub zdarzenia. Dlatego też ta sama czynność dotycząca danych w raporcie może zostać wygenerowana w wyniku okresowych aktualizacji danych po transakcji subskrypcji.

Interakcja subskrypcji tworzy relację między 2 węzłami, w której docelowe obiekty okresowo generują działania dotyczące danych raportu dla inicjatora. Inicjator to subskrybent, a cel to wydawca.

Działanie „Prośba o subskrypcję” zawiera:

  • Min Interval Floor (Minimalny minimalny odstęp): minimalny odstęp między raportami.
  • Maksymalny przedział czasowy: maksymalny przedział czasowy między raportami.
  • Raporty o atrybutach: lista co najmniej 0 zgłoszonych atrybutów, których dotyczy żądanie wykonania działania odczytu.
  • Raporty o zdarzeniach: lista co najmniej 1 zgłoszonego zdarzenia.

Po otrzymaniu żądania subskrypcji usługa docelowa odpowiada inicjatorowi działaniem raportowania danych zawierającym pierwszy zestaw zgłoszonych danych: dane opublikowane z zainicjowania.

Inicjator potwierdza działanie dotyczące danych raportu za pomocą odpowiedzi dotyczącej stanu działania wysłanej do celu. Gdy docelowe urządzenie otrzyma odpowiedź z działaniem dotyczącą stanu, która nie zawiera błędów, wysyła odpowiedź z działaniem dotyczącą subskrypcji.

Docelowy odbiorca będzie okresowo wysyłać działanie dotyczące danych raportu w uzgodnionym interwale, a inicjator będzie odpowiadać na te działania, dopóki subskrypcja nie zostanie utracona lub anulowana.

Działanie odpowiedzi dotyczące subskrypcji

Kierunek: docelowe > inicjator

To ostatnie działanie w ramach transakcji subskrypcji i kończy proces. Usługa ta obejmuje:

  • Identyfikator subskrypcji: liczba całkowita identyfikująca subskrypcję.
  • Min Interval (Minimalny interwał): ostateczny, określony minimalny interwał 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 są akcjami tylko dla Unicast.
  • Wszystkie działania dotyczące danych raportu w ramach interakcji z subskrypcją muszą mieć ten sam identyfikator subskrypcji.
  • Jeśli subskrybent nie otrzyma działania związanego z raportowaniem danych w maksymalnie negocjowanym czasie między działaniami, subskrypcja zostanie zakończona.
  • W ramach poprzedniej reguły wydawca może zakończyć interakcję z subskrypcją, po prostu przerywając wysyłanie okresowych działań związanych z danymi raportu.
  • Subskrybent może zakończyć interakcję z subskrypcją, odpowiadając na zgłoszenie działania z danymi za pomocą kodu stanu INACTIVE_SUBSCRIPTION.