Transazioni di lettura

Read Transaction

Uno dei primi casi d'uso quando si interagisce con i nodi in Matter è la lettura di un attributo da un altro nodo, ad esempio un valore di temperatura da un sensore. In queste interazioni, la prima azione da eseguire è l'azione di richiesta di lettura.

Sequenza di operazioni di una transazione di lettura
Figura 1: Read Transaction

Azione richiesta di lettura

Direzione: iniziatore -> target

In questa azione, l'iniziatore esegue una query su una destinazione fornendo:

  • Attribute Requests (Richieste di attributi): un elenco di zero o più attributi della destinazione. Questo elenco è composto da zero o più percorsi agli attributi richiesti della destinazione.
  • Event Requests (Richieste di eventi): elenco di zero o più percorsi agli eventi richiesti dalla destinazione.

Una volta ricevuta l'azione Read Request, la destinazione assemblerà un'azione Report Data con le informazioni richieste.

Azione sui dati del report

Direzione: Target -> Initiator

In questa azione, la destinazione risponde con:

  • Attribute Reports: un elenco di zero o più attributi segnalati richiesti nella richiesta di azione di lettura.
  • Report sugli eventi: un elenco di zero o più eventi segnalati.
  • Suppress Response: un flag che determina se la risposta di stato a questa azione deve essere eliminata.
  • ID abbonamento: se questo report fa parte di una transazione di abbonamento, deve includere un numero intero utilizzato per identificare la transazione di abbonamento.

Azione di risposta allo stato

Direzione: Target -> Initiator o Initiator -> Target

Una volta ricevuti i dati richiesti, per impostazione predefinita l'iniziatore deve generare un'azione di risposta di stato. Questa azione viene inviata dall'iniziatore, che conferma la ricezione dei dati segnalati. Se il flag Suppress Status Response è impostato, l'iniziatore non deve inviare l'azione di risposta allo stato.

Una volta inviata l'azione di risposta allo stato dall'iniziatore o ricevuta un'azione di dati del report dall'iniziatore con il flag di eliminazione della risposta attivato, la query di lettura/report è terminata.

L'azione di risposta allo stato contiene semplicemente un campo status che conferma l'esito positivo dell'operazione o presenta un codice di errore.

Limitazioni di lettura

Le azioni Richiesta di lettura e Report sui dati sono solo Unicast. Inoltre, i percorsi di queste richieste potrebbero non avere come target un gruppo di nodi.

L'azione di risposta allo stato è solo Unicast e non può essere generata come risposta a una trasmissione di gruppo.

Transazione di abbonamento

Sequenza di operazioni di una transazione di abbonamento
Figura 2: transazione di abbonamento

Azione di richiesta di iscrizione

Direzione: iniziatore -> target

Oltre a una singola azione di richiesta di lettura, un iniziatore può anche abbonarsi a aggiornamenti periodici di un attributo o un evento. Pertanto, la stessa azione sui dati dei report può essere generata in seguito ad aggiornamenti periodici dei dati che seguono una transazione di abbonamento.

Un'interazione di abbonamento crea una relazione tra due nodi, in cui la destinazione genera periodicamente azioni di dati del report per l'iniziatore. L'iniziatore è l'abbonato e il target è l'editore.

Un'azione di richiesta di iscrizione contiene:

  • Min Interval Floor: l'intervallo minimo tra i report.
  • Limite massimo intervallo: l'intervallo massimo tra i report.
  • Attribute Reports: un elenco di zero o più attributi segnalati richiesti nella richiesta di azione di lettura.
  • Report sugli eventi: un elenco di zero o più eventi segnalati.

Dopo la richiesta di iscrizione, il target risponde all'iniziatore con un'azione Report Data contenente il primo batch di dati segnalati: i dati pubblicati preparati.

L'iniziatore conferma quindi l'azione sui dati del report con una risposta di stato Azione inviata alla destinazione. Una volta che la destinazione riceve un'azione di risposta allo stato che non segnala errori, invia un'azione di risposta all'iscrizione.

Successivamente, la destinazione invierà periodicamente l'azione di dati del report all'intervallo negoziato e l'iniziatore risponderà a queste azioni finché l'abbonamento non viene perso o annullato.

Azione di risposta Iscriviti

Direzione: Target -> Initiator

Questa è l'ultima azione sulla transazione di abbonamento e conclude la procedura. Comprende:

  • ID abbonamento: un numero intero che identifica l'abbonamento.
  • Intervallo minimo: l'intervallo minimo finale, determinato tra i report.
  • Intervallo massimo: l'intervallo massimo finale, determinato tra i report.

Limitazioni relative agli abbonamenti

  • L'azione di richiesta di iscrizione e l'azione di risposta all'iscrizione sono azioni di sola lettura.Unicast
  • Tutte le azioni sui dati dei report in un'interazione con l'abbonamento devono avere lo stesso ID abbonamento.
  • Se l'abbonato non riceve un'azione sui dati del report entro l'intervallo massimo negoziato tra le azioni, l'abbonamento verrà interrotto.
  • In conseguenza della regola precedente, l'editore può terminare un'interazione di abbonamento semplicemente interrompendo l'invio di azioni periodiche sui dati dei report.
  • L'abbonato può terminare l'interazione con l'abbonamento rispondendo a un'azione di segnalazione dei dati con un codice di stato INACTIVE_SUBSCRIPTION.