裝置資料模型

Matter 中的裝置具有明確定義的資料模型 (DM),這是裝置功能的階層式模型。這個階層的頂層是「裝置」

裝置和端點

所有裝置 (包括智慧型手機和居家助理) 都是由節點1 組成。「節點」是網路中可明確識別及定址的資源,使用者可將其視為功能完整的資源。Matter 網路通訊的起點和終點都是節點。Matter

節點是一組端點。每個端點都包含一組功能。舉例來說,端點可能與照明功能相關,另一個端點則與動作偵測相關,還有一個端點處理公用程式,例如裝置 OTA。

裝置、節點和端點的階層
圖 1:裝置、節點和端點

節點角色

節點角色是一組相關行為。每個節點可有一或多個角色。節點角色包括:

  • 調試裝置:執行調試的節點。
  • 控制器:可控制一或多個節點的節點。 例如 Google Home app (GHA)Google AssistantGoogle Nest Hub (2nd gen)。部分裝置類型 (例如開/關燈開關) 具有「控制器」角色。
  • 受控節點:可由一或多個節點控制的節點。大多數裝置類型都可以是受控裝置,但部分裝置類型除外,例如開/關燈開關,這類裝置具有控制器角色。「開/關燈」切換開關只能做為控制器。不得為受控者。
  • OTA 供應商:可提供 OTA 軟體更新的節點。
  • OTA 要求者:可要求 OTA 軟體更新的節點。

叢集

Endpoint 中,Node 具有一或多個 Clusters。這是裝置階層中的另一個步驟,因為這些功能會將特定功能分組,例如智慧插座上的開啟/關閉叢集,或是可調光燈端點上的等級控制叢集。

節點也可能有多個端點,每個端點都會建立相同功能的執行個體。舉例來說,燈具可能會公開個別燈泡的獨立控制項,或電源線可能會公開個別插座的控制項。

屬性

最後一個層級是「屬性」,這是節點持有的狀態,例如「層級控制項」叢集的「目前層級」屬性。屬性可定義為不同資料類型,例如 uint8、字串或陣列。

節點、端點、屬性和指令的階層
圖 2:節點、端點、屬性和指令

指令

除了屬性,叢集也有指令,也就是可執行的動作。在 Matter 的 DM 中,這相當於遠端程序呼叫。指令類似於「動詞」,例如「門鎖」叢集上的「鎖門」。指令可能會產生回應和結果;在 Matter 中,這類回應也定義為指令,方向相反。

事件

最後,叢集也可能包含「事件」,可視為過去狀態轉換的記錄。屬性代表目前的狀態,而事件則是過去的記錄,包括單調遞增的計數器、時間戳記和優先順序。可擷取狀態轉換,以及屬性不易實現的資料模型。

完整範例裝置
圖 3:裝置互動模型Matter階層範例

端點 0 保留給公用程式叢集。公用程式叢集是特定叢集,可封裝端點上的服務功能,例如探索、定址、診斷和軟體更新。另一方面,「應用程式叢集」支援開/關或溫度測量等主要動作。

裝置類型

裝置製造商規劃新裝置時,應納入哪些叢集組合?

Matter 規格要求裝置實作或擴充一或多個裝置類型。裝置類型是必要和選用叢集的集合,用於定義實體裝置的頂層屬性,例如可調光燈門鎖影片播放器

裝置類型並非由 Matter 規格主要文件指定,而是由隨附的裝置庫指定。同樣地,所有應用程式叢集都定義在應用程式叢集程式庫中。這三份文件都可以在Connectivity Standards Alliance (Alliance)會員網站上找到。

實作裝置類型的每個端點都必須實作定義該裝置類型的必要叢集。除了必要叢集外,端點還可以實作其他叢集,包括一或多個裝置類型選用叢集,甚至是裝置類型以外的叢集。

用戶端和伺服器

叢集可以是「用戶端叢集」或「伺服器叢集」。伺服器是有狀態,會保留屬性、事件和指令,而用戶端是無狀態,負責啟動與遠端伺服器叢集的互動,因此會執行下列動作:

  • 讀取寫入遠端屬性。
  • 讀取遠端事件。
  • 叫用遠端指令。

雖然 DM 在節點內是階層式,但節點之間的關係並非如此。Matter 中的節點沒有垂直控制器/周邊裝置或領導者/追隨者關係。相反地,叢集之間的關係是水平的:任何叢集都可能是伺服器用戶端。因此,就不同叢集和功能而言,節點可能同時是伺服器用戶端。

舉例來說,我們可能有兩盞桌燈:節點 A節點 B。兩個節點都實作「開/關燈」裝置類型。這類裝置包含「開/關伺服器」叢集,可控制各自的實體燈光輸出。

但與一般檯燈一樣,實體裝置也會包含「開/關燈切換」裝置類型,用於本機開/關切換。這個裝置類型必須實作「開啟/關閉用戶端」叢集,才能控制伺服器叢集。

同時實作開/關燈和燈具開關的燈具
圖 4:用戶端和伺服器叢集

在本範例中,節點 A 上的 On/Off Client Cluster 會變更節點 A 和節點 B 上 On/Off Server Cluster 的屬性,而節點 B 的 Client Cluster 只會變更節點 B 本身的 Server Cluster。

下一節將詳細說明用戶端和伺服器叢集的互動方式:互動模型

描述元叢集

顧名思義,描述元叢集伺服器提供內省資訊。這份文件說明了端點,並列舉下列項目:

  • 伺服器叢集。
  • 用戶端叢集。
  • 裝置類型。
  • 其他端點,又稱為「零件」。

每種裝置類型都需要實作描述元叢集。根裝置類型定義於端點 0。讀取其描述元叢集可讓用戶端查看可用的完整端點樹狀結構,並執行適用的作業。

手機或中樞等控制裝置或控制裝置可以使用描述元叢集中的資訊,模擬裝置 (燈、開關、幫浦、恆溫器) 和該裝置特定例項實作的特定功能,向使用者顯示正確的 UI。

伺服器叢集

ServerList 屬性會列出端點中的叢集伺服器。

用戶端叢集

ClientList 屬性會列出端點中的叢集用戶端。

裝置類型清單

DeviceTypeList 屬性是端點支援的裝置類型清單,以及各裝置類型對應的修訂版本。至少須包含一個裝置類型。

零件清單

PartsList 包含用於實作這個裝置類型的端點清單。

端點 0 (根節點) 的 PartsList 包含裝置的所有端點,但不包括端點 0 本身。

其他端點的 PartsList 通常會是空白。舉例來說,溫度感應器必須使用溫度測量伺服器叢集,不得使用其他叢集。

其他裝置類型可能由多個 DeviceType 執行個體組成樹狀結構。舉例來說,影片播放器裝置類型可由電視、影片播放器、音箱和不同的內容應用程式裝置類型組成,每個裝置類型都位於不同的端點。


  1. Matter 規格規定裝置可有多個節點。舉例來說,智慧型手機可能有多個應用程式,每個應用程式都是不同的節點。為達到本入門指南的目的,所有裝置都會包含單一節點。預期大多數實體裝置都會遵循這個模式。