讀取交易

讀取交易

Matter 中的節點互動時,最先遇到的用途之一是從另一個節點讀取屬性,例如感應器的溫度值。在這種互動中,必須執行的第一個動作是讀取要求動作。

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

讀取要求動作

方向:啟動器 -> 目標

在此動作中,發起者會查詢目標,並提供下列資訊:

  • 屬性要求:零或多個目標屬性的清單。這份清單由零或多個路徑組成,指向目標要求的屬性。
  • 事件要求:零或多個路徑清單,指向目標要求的事件。

目標收到讀取要求動作後,會組裝包含所要求資訊的報表資料動作。

回報資料動作

方向:目標 -> 啟動器

在此動作中,目標會回應:

  • 屬性報表:零或多個回報屬性的清單,這些屬性是在讀取動作要求中要求。
  • 事件報表:零或多個回報事件的清單。
  • 抑制回應:這個旗標會決定是否要抑制對這項動作的狀態回應
  • 訂閱 ID:如果這份報表屬於訂閱交易,則必須包含用於識別訂閱交易的整數。

狀態回應動作

方向:目標 -> 啟動器或啟動器 -> 目標

發起者收到要求的資料後,預設必須產生「狀態回應動作」。這項動作是由發起者傳送,用來確認已收到回報的資料。如果設定了「Suppress Status Response」旗標,發起者就不得傳送「Status Response Action」。

發起者傳送「狀態回應動作」,或發起者收到「報表資料動作」且已啟用「禁止回應」旗標後,讀取/報表查詢就會完成。

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

讀取限制

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

狀態回覆動作為 Unicast,無法做為群播的回覆。

訂閱交易

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

訂閱要求動作

方向:啟動器 -> 目標

除了單一讀取要求動作外,發起者也可以訂閱屬性或事件的定期更新。因此,定期資料更新後,可能會產生與訂閱交易相同的報表資料動作。

訂閱互動會在兩個節點之間建立關係,其中目標會定期產生報表資料動作,傳送給啟動器。發起者是「訂閱者」,目標是「發布者」

訂閱要求動作包含:

  • 間隔下限:報表間隔下限。
  • 間隔上限:報表間隔時間上限。
  • 屬性報表:零或多個在讀取動作要求中要求的已回報屬性清單。
  • 事件報表:零或多個回報事件的清單。

在「訂閱要求」之後,目標會以「報表資料動作」回應發起者,其中包含第一批回報資料:已準備發布的資料

發起者接著會傳送「狀態回應動作」給目標,確認「報表資料動作」。目標收到「狀態回應動作」後,如果回報沒有錯誤,就會傳送「訂閱回應動作」。

目標隨後會以協商間隔定期傳送「報表資料動作」,而發起者會回應這些動作,直到訂閱項目遺失或取消為止。

訂閱回覆動作

方向:目標 -> 啟動器

這是訂閱交易的最後一個動作,程序到此結束。It includes:

  • 訂閱 ID:用於識別訂閱項目的整數。
  • 間隔下限:報告間隔的最終決定下限。
  • 時間間隔上限:報表間隔時間的最終決定上限。

訂閱限制

  • 「訂閱要求動作」和「訂閱回應動作」是Unicast專用動作。
  • 訂閱互動中的所有報表資料動作都必須有相同的訂閱 ID。
  • 如果訂閱者在動作之間的最大協商間隔內未收到報表資料動作,訂閱就會終止。
  • 根據先前的規則,發布商只要停止傳送週期性報表資料動作,即可終止訂閱互動。
  • 訂閱者可以透過 INACTIVE_SUBSCRIPTION 狀態碼回應「報告資料動作」,終止訂閱互動。