讀取交易

讀取交易

Matter 中的節點互動時,其中一個用途是讀取其他節點的屬性,例如感應器的溫度值。在這類互動中,第一個必須執行的「讀取要求動作」動作。

讀取交易的作業序列
圖 1:讀取交易

讀取要求動作

方向:發起人 -> 目標

在這個動作中,發起人查詢目標提供以下內容:

  • 屬性要求:含零或多個目標屬性的清單。這份清單是由零或多個目標路徑組成,且該路徑會指向目標的要求屬性。
  • 事件要求:針對目標所要求事件的零個或多個路徑清單。

目標收到讀取要求動作後,就會根據要求的資訊組合報表資料動作。

報表資料動作

方向:目標 -> 發起人

目標在這個動作中回應:

  • 屬性報表:包含「讀取動作要求」要求的零個或多個回報屬性清單。
  • 事件報表:列出零或多個回報事件的清單。
  • 隱藏回應:判定是否應封鎖這個動作的狀態回應標記。
  • 訂閱 ID:如果這份報表是訂閱交易的一部分,則必須包含用於識別訂閱交易的整數。

狀態回應動作

方向:「目標」->「發起人」或「發起者」->「目標」

發起人收到要求的資料後,根據預設必須產生狀態回應動作。此動作是由發起者傳送,用於確認已收到報表資料。如果設定了旗標「限制狀態回應」,發起人不得傳送狀態回應動作。

一旦發起人傳送狀態回應動作,或啟用者收到報表資料動作,啟用 Suppress Response 標記後,系統就會完成讀取/報告查詢。

狀態回應動作僅包含 status 欄位,可確認作業成功或顯示失敗代碼。

讀取限制

「讀取要求動作」和「報表資料動作」僅適用於 Unicast。此外,這些要求的路徑可能無法以節點群組為目標。

狀態回應動作僅限 Unicast,無法做為群組廣播的回應產生。

訂閱交易

訂閱交易的作業順序
圖 2:訂閱交易

訂閱要求動作

方向:發起人 -> 目標

除了單一的讀取要求動作外,發起人也可訂閱屬性或事件的定期更新。因此,如果定期更新資料 (遵循訂閱交易),可能會產生相同的報表資料動作。

訂閱互動會在兩個節點之間建立關係,其中目標會定期產生報告資料動作給啟動者。發起人為訂閱者,目標則為發布商

訂閱要求動作包含:

  • Min Interval Floor:報表之間的最短間隔。
  • Max Interval Ceiling:報告之間的最長間隔。
  • 屬性報表:列出「讀取動作要求」中要求的 0 或多個回報屬性。
  • 事件報表:列出 0 或多個回報事件。

訂閱要求之後,目標會以包含第一批報表資料的報表資料動作回應發起人:Primed 已發布資料

啟動者接著將狀態回應動作傳送至目標,確認報告資料動作。當目標收到狀態回應動作回報未發生錯誤時,就會傳送訂閱回應動作。

目標隨後會在協議的時間間隔定期傳送報表資料動作,發起人將回應這些動作,直到訂閱遺失或取消。

訂閱回應動作

方向:目標 -> 發起人

這是訂閱交易的最後一個動作,現已結束處理程序。本指南涵蓋的內容:

  • 訂閱 ID:用來識別訂閱項目的整數。
  • 最小間隔最終確定報表之間的最小間隔。
  • 間隔上限最終確定報表之間的最長間隔。

訂閱限制

  • 「訂閱要求動作」和「訂閱回應動作」是僅限 Unicast 的動作,
  • 訂閱互動中的所有報表資料動作都必須具有相同的訂閱 ID。
  • 如果訂閱者未在「動作」協議的最長時間間隔內收到報表資料動作,系統就會終止訂閱項目。
  • 根據上述規則,發布商可以停止定期傳送報告資料動作,以終止訂閱互動。
  • 訂閱者可以透過 INACTIVE_SUBSCRIPTION 狀態碼回應報表資料動作,藉此終止訂閱互動。