讀取交易
在 Matter 中與節點互動時,最常見的用途之一,就是讀取其他節點的屬性,例如感應器的溫度值。在這種互動中,必須執行的第一個動作是讀取要求動作。
讀取要求動作
方向:啟動者 -> 目標
在這項動作中,發起者會查詢提供以下資訊的目標:
- 屬性要求:包含零或多個目標屬性的清單。這份清單包含零或多個目標所要求屬性的路徑。
- 事件要求:目標要求事件的路徑清單 (可為零個)。
目標收到「讀取要求」動作後,就會使用要求的資訊組合「回報資料」動作。
回報資料動作
方向:目標 -> 發起者
在這個動作中,目標會回應以下內容:
- 屬性報表:列出在「Read Action Request」中要求的報表屬性 (零個或多個)。
- 事件報表:回報事件的清單,可能為零或多個事件。
- Suppress Response:此標記可決定是否要略過此動作的狀態回應。
- 訂閱 ID:如果這份報表是訂閱交易的一部分,則必須包含用於識別訂閱交易的整數。
狀態回應動作
方向:目標 -> 發起者,或發起者 -> 目標
發起者收到要求的資料後,根據預設必須產生狀態回應動作。這項動作是由發起者傳送,用於確認已收到回報資料。如果設定「抑制狀態回應」旗標,發起端不得傳送狀態回應動作。
發起者傳送狀態回應動作,或在啟用「抑制回應」標記的情況下,發起者收到報表資料動作後,讀取/回報查詢就會完成。
狀態回應動作只包含一個「狀態」欄位,會確認作業成功或顯示失敗代碼。
讀取限制
Read Request 動作和 Report Data 動作僅適用於 Unicast。此外,這些要求的路徑可能不會指定群組節點。
狀態回應動作僅限 Unicast,無法針對群組廣播產生。
訂閱交易
訂閱要求動作
方向:啟動者 -> 目標
除了單一讀取要求動作,發起端也可能訂閱屬性或事件的定期更新。因此,在訂閱交易後定期更新資料時,系統可以產生相同的報表資料動作。
訂閱互動會在兩個節點之間建立關係,其中目標會定期向發起端產生報表資料動作。發起者為訂閱者,目標則為發布者。
訂閱要求動作包含:
- 最小間隔下限:報表之間的最小間隔。
- 最大間隔上限:報表之間的最大間隔。
- 屬性報表:列出在「讀取動作要求」中要求的零個或多個已回報的屬性。
- 事件報表:回報的事件清單,可能為零或多個。
在訂閱要求之後,目標會回應給發起端的報表資料動作,其中包含第一批回報資料:預先發布的資料。
接著,發起者會向目標傳送狀態回應動作,確認報表資料動作。目標接收到沒有錯誤的狀態回應動作後,就會傳送訂閱回應動作。
接著,目標會在協商間隔的時間內定期傳送報表資料動作,而發起端會回應這些動作,直到訂閱遭到移除或取消為止。
訂閱回應動作
方向:目標 -> 發起者
這是訂閱交易的最後一個動作,也是程序的結尾。It includes:
- Subscription ID:用於識別訂閱項目的整數。
- 最小間隔:最終決定報表之間的最小間隔。
- 最大間隔:最終決定報表之間的最大間隔。
訂閱限制
- 訂閱要求動作和訂閱回應動作僅適用於 Unicast。
- 訂閱互動中的所有報表資料動作都必須使用相同的訂閱 ID。
- 如果訂閱者未在行動間協商的最大間隔內收到報表資料動作,訂閱就會終止。
- 根據上述規則,發布商只要停止傳送定期的「回報資料動作」,即可終止訂閱互動。
- 訂閱者可以回應含有
INACTIVE_SUBSCRIPTION
狀態碼的「回報資料動作」,終止訂閱互動。