讀取交易
在 Matter 中與節點互動時,其中一個最先出現的用途是從另一個節點讀取屬性,例如感應器的溫度值。在這類互動中,必須執行的第一個動作是讀取要求動作。
讀取要求動作
方向:發起者 -> 目標
在這項動作中,發起者會查詢目標,並提供:
- 屬性要求:零或多個目標屬性的清單。這份清單包含零或多個路徑,指向目標要求的屬性。
- 事件要求:目標要求事件的路徑清單 (可為零或多個)。
目標收到讀取要求動作後,會使用要求的資訊組合報表資料動作。
報表資料動作
方向:目標 -> 發起者
在這項動作中,目標會回應:
- 屬性報表:讀取動作要求中要求的零或多個回報屬性清單。
- 事件報表:零或多個回報事件的清單。
- Suppress Response:這個旗標決定是否要隱藏這項動作的狀態回應。
- 訂閱 ID:如果這份報表屬於訂閱交易,則必須包含用於識別訂閱交易的整數。
狀態回應動作
方向:Target -> Initiator 或 Initiator -> Target
發起端收到要求的資料後,預設必須產生狀態回應動作。這項動作由發起端傳送,確認已收到回報資料。如果設定了「Suppress Status Response」旗標,發起端就不得傳送「Status Response Action」。
發起端傳送狀態回應動作,或收到啟用「抑制回應」標記的報表資料動作後,讀取/報表查詢即完成。
狀態回應動作只包含「status」欄位,用於確認作業成功或顯示失敗代碼。
讀取限制
讀取要求動作和報表資料動作僅適用於Unicast。此外,這些要求的路徑不得指定節點群組。
狀態回應動作僅限 Unicast,無法做為群組廣播的回應。
訂閱交易
訂閱要求動作
方向:發起者 -> 目標
除了單一讀取要求動作外,發起端也可以訂閱屬性或事件的定期更新。因此,在訂閱交易後,定期資料更新可能會產生相同的報表資料動作。
訂閱互動會在兩個節點之間建立關係,其中目標會定期向發起端產生報表資料動作。發起者是訂閱者,目標則是發布者。
訂閱要求動作包含:
- Min Interval Floor:報表之間的最短間隔。
- Max Interval Ceiling:報表之間的最長間隔。
- 屬性報表:讀取動作要求中要求的零或多個回報屬性清單。
- 事件報表:零或多個回報事件的清單。
收到訂閱要求後,目標會以包含第一批報表資料 (預先發布資料) 的回報資料動作回應發起端。
接著,發起端會向目標端傳送狀態回應動作,確認收到報表資料動作。目標收到狀態回應動作,且回報沒有錯誤後,就會傳送訂閱回應動作。
目標隨後會定期傳送「報表資料動作」(間隔時間為協商結果),而發起端會回應這些動作,直到訂閱遺失或取消為止。
訂閱回應動作
方向:目標 -> 發起者
這是訂閱交易的最後一個動作,也是流程的結尾。It includes:
- 訂閱項目 ID:用於識別訂閱項目的整數。
- Min Interval:最終確定的報表間隔下限。
- Max Interval:最終決定的報表間隔上限。
訂閱限制
- 「訂閱要求動作」和「訂閱回應動作」是 Unicast 專屬動作。
- 訂閱互動中的所有報表資料動作,都必須有相同的訂閱 ID。
- 如果訂閱者在協商的最長動作間隔內未收到報表資料動作,訂閱就會終止。
- 根據前一項規則,發布者只要停止傳送定期報表資料動作,即可終止訂閱互動。
- 訂閱者可以回覆「報表資料動作」並附上
INACTIVE_SUBSCRIPTION狀態碼,終止訂閱互動。