裝置資料模型

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

裝置和端點

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

節點是一組「端點」。每個端點都包含一組功能集。舉例來說,端點可能與燈光功能有關,而另一個與動作偵測有關,以及與裝置 OTA 等公用程式交易。

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

節點角色

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

  • Commissioner:執行佣金的節點。
  • 控制器:可控制一或多個節點的節點。例如 Google Home app (GHA)Google AssistantGoogle Nest Hub (2nd gen)。部分裝置類型 (例如開啟/關閉燈具開關) 會具備「控制器」角色。
  • 控制層:可由一或多個節點控管的節點。除了某些具有「控制器」角色的裝置類型 (例如開啟/關閉光源切換) 以外,大多數裝置類型都可以做為控制組。「開/關」開關「只能」做為控制器。不可能成為受害人。
  • OTA 供應商:提供 OTA 軟體更新的節點。
  • OTA 要求者:可要求 OTA 軟體更新的節點。

叢集

在「端點」中,節點有一或多個叢集。這些是裝置階層中的另一個步驟,因為它們會將特定功能分組,例如將智慧型插座上的開啟/關閉叢集,或是可調暗光源端點上的水平控制叢集。

一個節點也可能有多個端點,每個端點都建立相同功能的執行個體。舉例來說,燈具可能會曝露個別燈具或電源條的獨立控制,因此可能曝露個別插座的控制。

屬性

在最後一個層級可以看到「屬性」,也就是節點保留的狀態,例如等級控制叢集的「目前層級」屬性。屬性可定義為不同的資料類型,例如 uint8、字串或陣列。

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

指令

除了屬性之外,叢集還具有「指令」,這些指令是可能會執行的「動作」。兩者在 Matter 遠端程序呼叫的即時訊息中相同。指令類似「動詞」,例如「門鎖」叢集上的「鎖門」。指令可能會產生回應和結果;在 Matter 中,這類回應也會定義為反向指令的指令。

活動

最後,叢集也可能有「事件」,這可以視為過去狀態轉換的記錄。屬性代表「目前」狀態,但事件是「過往」的日誌,並包含單調遞增的計數器、時間戳記和優先順序。可以擷取狀態轉換,以及無法透過屬性立即達成的資料模型。

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

系統會為公用程式叢集保留 Endpoint 0。公用程式叢集是特定的叢集,用來提供端點的服務功能,例如探索、位址處理、診斷和軟體更新。另一方面,應用程式叢集支援開啟/關閉或溫度測量等主要動作。

裝置類型

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

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

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

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

用戶端和伺服器

叢集可能是用戶端叢集伺服器叢集。雖然伺服器有狀態並保存屬性、事件和指令,但用戶端無狀態,負責透過遠端伺服器叢集啟動互動,因此能執行:

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

雖然 DM 在節點中是階層式,但節點之間的關係並非如此。Matter 中的節點沒有垂直控制器/週邊裝置或主要/追蹤者關係。相反地,關聯為水平:任何叢集可能是「Server」或「Client」。因此,就不同叢集和功能而言,節點可能會同時是伺服器和用戶端。

舉例來說,假設我們有兩個表格燈,分別是「Node A」和「Node B」。這兩個節點都會實作開啟/關閉裝置類型。這個裝置類型含有開啟/關閉伺服器叢集,用於控制各自的實體光源輸出內容。

不過,與一般桌燈一樣,實體裝置也將提供開啟/關燈切換裝置類型,用於開啟或關閉桌面/關閉開關。此裝置類型必須實作開啟/關閉用戶端叢集,才能控制伺服器叢集。

支援開/關燈和燈具開關的燈
圖 4:用戶端和伺服器叢集

在此範例中,節點 A 上的開啟/關閉用戶端叢集正在變更節點 A 和節點 B 上/關閉伺服器叢集的屬性,而節點 B 的用戶端叢集則只變更節點 B 上的伺服器叢集。

下一節將詳述用戶端與伺服器叢集的互動方式:互動模型

描述元叢集

顧名思義,描述元叢集伺服器會提供自我檢查資訊。其中「說明」端點列舉了其:

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

每種裝置類型都需要導入描述元叢集。根裝置類型是在 Endpoint 0 定義。讀取其描述元叢集可讓用戶端掌握整個可用端點的樹狀結構,並執行適用的作業。

調試器或控制裝置 (例如手機或中樞裝置) 可以使用描述元叢集中的資訊 (燈具、開關、泵、溫度控制器) 和由該特定裝置執行個體實作的特定功能來模擬裝置,向使用者顯示正確的 UI。

伺服器叢集

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

用戶端叢集

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

裝置類型清單

DeviceTypeList 屬性是端點支援的裝置類型清單及其各自的修訂版本。當中必須包含至少一個裝置類型。

零件清單

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

端點 0 的 PartsList (根節點) 包含裝置本身以外的所有端點 (端點 0)。

其他端點的 PartsList 通常為空白。舉例來說,溫度感應器會規定溫度測量伺服器叢集,但不會顯示其他項目。

其他裝置類型可組成多個裝置類型執行個體的樹狀結構。舉例來說,影片播放器裝置類型可由電視、影片播放器、喇叭和不同的內容應用程式裝置類型組成,並分別在不同端點上。


  1. Matter 規格判定裝置可能有多個節點。舉例來說,智慧型手機可能會有多個應用程式,每個應用程式都是不同的節點。為方便說明,所有裝置都會包含一個節點。大部分實體裝置通常都會採用此模式。