Odczytywanie transakcji

Odczyt transakcji

Jednym z pierwszych zastosowań interakcji z węzłami w Matter jest odczyt atrybutu z innego węzła, np. wartość temperatury z czujnika. W takich interakcjach pierwszym działaniem, które musi zostać wykonane, jest działanie związane z odczytaniem żądania.

Kolejność operacji w ramach transakcji odczytu
Rysunek 1. Odczyt transakcji

Odczyt żądania

Kierunek: inicjator > docelowe

W ramach tego działania 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.
  • Zgody na zdarzenia: lista co najmniej 1 ścieżki do żądanych zdarzeń docelowych.

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

Zgłaszanie działania 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 wysł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 parametrem tłumienia odpowiedzi, zapytanie odczytuje/raportuje.

Działanie odpowiedzi stanu zawiera pole status, które potwierdza powodzenie operacji lub wyświetla 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 przypadku Unicast i nie może być generowane jako odpowiedź na transmisję grupową.

Transakcja subskrypcji

Sekwencja operacji w transakcji subskrypcji
Rysunek 2. Transakcja subskrypcji

Request Subscribe Action

Kierunek: inicjator > docelowe

Oprócz pojedynczego działania „Read Request” inicjator może też subskrybować okresowe aktualizacje atrybutu lub zdarzenia. Dlatego to samo działanie danych raportu może zostać wygenerowane 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ącym stanu, w której nie ma błędów, wysyła odpowiedź z działaniem dotyczącym 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 związane z transakcją 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ą działaniami tylko dla Unicast.
  • Wszystkie działania dotyczące danych raportu w 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.