讀取交易

讀取交易

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

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

讀取要求動作

方向:發起者 -> 目標

在此動作中,啟動者查詢的目標如下:

  • 屬性要求:零或多個目標屬性的清單。此清單包含目標要求屬性的 0 個或多個路徑。
  • 事件要求:目標要求事件的零或多個路徑清單。

目標接收到「讀取要求動作」後,系統會組合一份包含必要資訊的報表資料動作。

報表資料動作

方向:目標 -> 發起者

在這個動作中,目標會回應:

  • 屬性報表:列出「讀取動作」要求中要求的報告屬性 (0 或多個)。
  • 事件報表:列出零或多個回報的事件。
  • Suppress Response:這個標記可決定系統是否應抑制這項動作的狀態回應
  • 訂閱 ID:如果這份報表屬於訂閱交易的一部分,則必須包含用來識別訂閱交易的整數。

狀態回應動作

方向:指定目標 -> 發起人或發起人 -> 目標

啟動器收到要求的資料後,根據預設必須產生「狀態回應動作」。這個動作從發起人傳送,已確認已收到回報的資料。如果設定了旗標「抑制狀態回應」功能,發起人不得傳送狀態回應動作。

一旦啟動者傳送狀態回應動作,或啟動者在啟用略過回應標記的情況下收到報表資料動作,就表示讀取/報表查詢已完成。

「狀態回應動作」只包含一個 status 欄位,指出作業成功或顯示失敗代碼。

讀取限制

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

「狀態回應動作」僅限 Unicast,無法產生為群組側錄的回應。

訂閱交易

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

訂閱要求動作

方向:發起者 -> 目標

除了單一的讀取要求動作之外,發起者也可以訂閱屬性或事件的定期更新。因此,系統可透過訂閱交易定期更新資料的結果,產生相同的「報表資料動作」。

訂閱互動會在兩個節點之間建立關係,而目標會定期向啟動器產生報表資料動作。發起者為「訂閱者」,目標為「發布商」

「訂閱要求動作」包含以下內容:

  • 最短間隔:報表的間隔下限。
  • 最大間隔:報表的間隔時間上限。
  • 屬性報表:列出「讀取動作」要求中要求的報告屬性 (0 或多個)。
  • 事件報表:會列出 0 或多個回報的事件。

訂閱要求後,目標會透過回報資料動作回應啟動者,其中包含第一批回報的資料:修剪版資料

接著,啟動器會使用傳送至目標的狀態回應動作來確認報表資料動作。目標收到狀態回應動作回報沒有任何錯誤後,就會傳送「訂閱回應動作」。

「目標」隨後會按照協商的時間間隔定期傳送「報告資料動作」,而啟用者會回應這些動作,直到訂閱項目遺失或取消。

訂閱回應動作

方向:目標 -> 發起者

這是訂閱交易的最後一項動作,整個流程到此結束。本指南涵蓋的內容:

  • 訂閱項目 ID:用來識別訂閱項目的整數。
  • 最短間隔:最終最終決定的報告間的最小間隔時間。
  • 最大間隔最終決定的 報告的間隔時間上限。

訂閱限制

  • 「訂閱要求動作」和「訂閱回應動作」只能執行 Unicast 動作。
  • 訂閱互動中的所有報表資料動作都必須具有相同的訂閱 ID。
  • 如果訂閱者未在動作之間的約定間隔時間內收到報表資料動作,系統就會終止訂閱。
  • 根據上述規則,發布商只要停止定期傳送報表資料動作,即可終止訂閱互動。
  • 「訂閱者」可以使用 INACTIVE_SUBSCRIPTION 狀態碼回應「報告資料動作」,藉此終止訂閱互動。