Transazioni di lettura

Lettura della transazione

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: lettura della transazione

Azione di richiesta di lettura

Direzione: iniziatore -> target

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

  • Richieste di attributi: un elenco di zero o più attributi del target. Questo elenco è composto da zero o più percorsi agli attributi richiesti del target.
  • Richieste di eventi: elenco di zero o più percorsi agli eventi richiesti del target.

Dopo che il target ha ricevuto l'azione di richiesta di lettura, assembla un'azione di dati del report con le informazioni richieste.

Azione di dati del report

Direzione: target -> iniziatore

In questa azione, il target risponde con:

  • Report sugli attributi: 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 soppressa.
  • 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 di stato

Direzione: target -> iniziatore o iniziatore -> target

Una volta che l'iniziatore riceve i dati richiesti, per impostazione predefinita 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 di stato.

Una volta che l'iniziatore invia l'azione di risposta di stato o riceve un'azione di dati del report con il flag Suppress Response attivato, la query di lettura/report è terminata.

L'azione di risposta di stato contiene semplicemente un campo stato che riconosce l'operazione riuscita o presenta un codice di errore.

Restrizioni di lettura

L'azione di richiesta di lettura e l'azione di dati del report sono Unicast-only. Inoltre, i percorsi di queste richieste non possono avere come target un gruppo di nodi.

L'azione di risposta di stato è Unicast-only e non può essere generata come risposta a un groupcast.

Transazione di abbonamento

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

Azione di richiesta di abbonamento

Direzione: iniziatore -> target

Oltre a una singola azione di richiesta di lettura, un iniziatore può anche abbonarsi agli aggiornamenti periodici di un attributo o di un evento. Pertanto, la stessa azione di dati del 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 il target genera periodicamente azioni di dati del report per l'iniziatore. L'iniziatore è l'abbonato e il target è il publisher.

Un'azione di richiesta di abbonamento contiene:

  • Min Interval Floor: l'intervallo minimo tra i report.
  • Max Interval Ceiling: l'intervallo massimo tra i report.
  • Report sugli attributi: 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 abbonamento, il target risponde all'iniziatore con un'azione di dati del report contenente il primo batch di dati segnalati: i dati pubblicati iniziali.

L'iniziatore riconosce quindi l'azione di dati del report con un'azione di risposta di stato inviata al target. Una volta che il target riceve un'azione di risposta di stato che non segnala errori, invia un'azione di risposta di abbonamento.

Successivamente, il target 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 di abbonamento

Direzione: target -> iniziatore

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

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

Restrizioni di abbonamento

  • L'azione di richiesta di abbonamento e l'azione di risposta di abbonamento sono Unicast-only actions.
  • Tutte le azioni di dati del report in un'interazione di abbonamento devono avere lo stesso ID abbonamento.
  • Se l'abbonato non riceve un'azione di dati del report entro l'intervallo massimo negoziato tra le azioni, l'abbonamento verrà terminato.
  • Di conseguenza, il publisher può terminare un'interazione di abbonamento semplicemente interrompendo l'invio periodico di azioni di dati del report.
  • L'abbonato può terminare l'interazione di abbonamento rispondendo a un'azione di dati del report con un codice di stato INACTIVE_SUBSCRIPTION.