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 pierwsze działanie, które musi zostać wykonane, to działanie związane z odczytaniem żądania.

Sekwencja operacji w ramach transakcji odczytu
Rysunek 1. Transakcja odczytu

Działanie na żądanie odczytu

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 dotyczące 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 Ignorowanie odpowiedzi na stan jest ustawiona, inicjator nie może wysyłać działania odpowiedzi na stan.

Gdy inicjator wyśle odpowiedź na zapytanie o stan lub otrzyma od niego działanie dotyczące raportowania danych z włączonym parametrem pominięcia 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ści „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

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 raportu może być generowana 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 „Subscribe Request” zawiera:

  • Min Interval Floor (Minimalny dolny limit interwału): minimalny odstęp między raportami.
  • Maksymalny przedział czasowy: maksymalny przedział czasowy między raportami.
  • Raporty o atrybutach: lista co najmniej 1 zgłoszonego atrybutu, o który proszą w żądaniu działania „Read”.
  • 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 pierwszą partię zgłoszonych danych: wstępnie przetworzonymi opublikowanymi danymi.

Inicjator potwierdza działanie dotyczące danych raportu za pomocą odpowiedzi dotyczącej stanu działania wysłanej do celu. Gdy docelowe 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 raportowania danych w uzgodnionym interwale, a inicjator będzie odpowiadać na te działania do czasu utraty lub anulowania subskrypcji.

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ą działaniami 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.