讀取交易
與 Matter 中的節點互動時,其中一個用途是讀取其他節點的屬性,例如感應器的溫度值。在這類互動中,第一個必須執行的「讀取要求動作」動作。
![讀取交易的作業序列](https://developers.home.google.com/static/matter/primer/images/primer-im-reading.png?authuser=7&hl=zh-tw)
讀取要求動作
方向:發起人 -> 目標
在這個動作中,發起人查詢目標提供以下內容:
- 屬性要求:含零或多個目標屬性的清單。這份清單是由零或多個目標路徑組成,且該路徑會指向目標的要求屬性。
- 事件要求:針對目標所要求事件的零個或多個路徑清單。
目標收到讀取要求動作後,就會根據要求的資訊組合報表資料動作。
報表資料動作
方向:目標 -> 發起人
目標在這個動作中回應:
- 屬性報表:包含「讀取動作要求」要求的零個或多個回報屬性清單。
- 事件報表:列出零或多個回報事件的清單。
- 隱藏回應:判定是否應封鎖這個動作的狀態回應標記。
- 訂閱 ID:如果這份報表是訂閱交易的一部分,則必須包含用於識別訂閱交易的整數。
狀態回應動作
方向:「目標」->「發起人」或「發起者」->「目標」
發起人收到要求的資料後,根據預設必須產生狀態回應動作。此動作是由發起者傳送,用於確認已收到報表資料。如果設定了旗標「限制狀態回應」,發起人不得傳送狀態回應動作。
一旦發起人傳送狀態回應動作,或啟用者收到報表資料動作,啟用 Suppress Response 標記後,系統就會完成讀取/報告查詢。
狀態回應動作僅包含 status 欄位,可確認作業成功或顯示失敗代碼。
讀取限制
「讀取要求動作」和「報表資料動作」僅適用於 Unicast。此外,這些要求的路徑可能無法以節點群組為目標。
狀態回應動作僅限 Unicast,無法做為群組廣播的回應產生。
訂閱交易
![訂閱交易的作業順序](https://developers.home.google.com/static/matter/primer/images/primer-im-subscribing.png?authuser=7&hl=zh-tw)
訂閱要求動作
方向:發起人 -> 目標
除了單一的讀取要求動作外,發起人也可訂閱屬性或事件的定期更新。因此,如果定期更新資料 (遵循訂閱交易),可能會產生相同的報表資料動作。
訂閱互動會在兩個節點之間建立關係,其中目標會定期產生報告資料動作給啟動者。發起人為訂閱者,目標則為發布商。
訂閱要求動作包含:
- Min Interval Floor:報表之間的最短間隔。
- Max Interval Ceiling:報告之間的最長間隔。
- 屬性報表:列出「讀取動作要求」中要求的 0 或多個回報屬性。
- 事件報表:列出 0 或多個回報事件。
訂閱要求之後,目標會以包含第一批報表資料的報表資料動作回應發起人:Primed 已發布資料。
啟動者接著將狀態回應動作傳送至目標,確認報告資料動作。當目標收到狀態回應動作回報未發生錯誤時,就會傳送訂閱回應動作。
目標隨後會在協議的時間間隔定期傳送報表資料動作,發起人將回應這些動作,直到訂閱遺失或取消。
訂閱回應動作
方向:目標 -> 發起人
這是訂閱交易的最後一個動作,現已結束處理程序。本指南涵蓋的內容:
- 訂閱 ID:用來識別訂閱項目的整數。
- 最小間隔:最終,確定報表之間的最小間隔。
- 間隔上限:最終,確定報表之間的最長間隔。
訂閱限制
- 「訂閱要求動作」和「訂閱回應動作」是僅限 Unicast 的動作,
- 訂閱互動中的所有報表資料動作都必須具有相同的訂閱 ID。
- 如果訂閱者未在「動作」協議的最長時間間隔內收到報表資料動作,系統就會終止訂閱項目。
- 根據上述規則,發布商可以停止定期傳送報告資料動作,以終止訂閱互動。
- 訂閱者可以透過
INACTIVE_SUBSCRIPTION
狀態碼回應報表資料動作,藉此終止訂閱互動。