iOS 上的資料模型

iOS 適用的 Home API 會以統一的資料模型,呈現 Google Home 生態系統中的所有裝置。這個資料模型涵蓋所有類型的裝置 (來自 Google Nest 或第三方製造商),無論基礎智慧型住宅技術為何 (例如 Matter 或 Cloud-to-cloud),並提供通用的 API 介面,為 smart home 和行動應用程式開發人員打造使用者體驗。

裝置類型

Home API 提供的裝置類型是 Matter 和 Cloud-to-cloud 資料模型的整合。有些直接衍生自 Matter,有些是 Matter 裝置類型的擴充功能,有些則衍生自 Cloud-to-cloud。

裝置類型包含用於控制及管理裝置的特徵。與裝置類型一樣,特徵衍生自 Matter 叢集和 Cloud-to-cloud 特徵,並以類似 Matter 叢集的通用格式呈現。在 Home API 中,Matter 衍生的特徵稱為「特徵」,而非「叢集」。

因此,Home API 中的裝置類型和特徵應以 Matter 為主。Matter 裝置類型或特性的優先順序高於 Cloud-to-cloud 模擬。

如需裝置類型及其特性的清單,請參閱「iOS 支援的裝置類型」。

特徵

系統會產生 Swift 版本的特徵,用於 Home API,並包含 Home API 專屬的其他功能 (Matter 或 Cloud-to-cloud 中沒有)。例如,每個特徵都有方法可檢查特徵是否支援特定屬性或指令。這項功能可用於判斷是否能在使用者裝置上讀取狀態或執行特定動作,因為並非所有裝置類型中的裝置都具有相同功能。

如要匯入特徵和裝置類型,請將 GoogleHomeTypes 模組匯入應用程式:

import GoogleHomeTypes

此外,您也可以使用 typealias 做為特徵和裝置類型名稱,縮短程式碼並避免命名空間重複:

import GoogleHomeTypes

typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType

大多數特徵都支援自動化動作,部分特徵僅適用於自動化動作。詳情請參閱「Android 上的 Automation API 特性支援」。

裝置類型組成

Home API 支援大多數 Matter 應用程式叢集,做為資料模型中的特徵。低階設定叢集 (例如 Binding) 不會直接為使用者提供公用程式,因此不會直接透過 Home API 公開。如要進一步瞭解裝置群組,請參閱結構 API。

衍生自 Cloud-to-cloud 智慧住宅特性的特性,在 Cloud-to-cloud 和 Home API 之間通常具有相同名稱,例如 OpenCloseTrait。其他則以 Matter 特性的擴充功能表示,使用 Matter 製造商專屬擴充功能建立。這些特性能彌補 smart home 特性的不足,因為功能會分散在 Matter SDK 和 Google Home 生態系統之間。具體例子是來自 Cloud-to-cloud 的 Google* 裝置類型,但尚未有 Matter 類似裝置。

裝置類型由 Matter 或 Cloud-to-cloud 這兩個來源的特徵組成。

舉例來說,FanDeviceType 由兩者組成,並具有三個特徵:

  • IdentifyTrait Matter 特性提供 Matter IdentifyTrait 的所有功能。
  • FanControlTrait Matter 特性提供 Matter FanControlTrait 的所有功能。
  • ExtendedFanControlTrait Google 特性提供 Google smart home FanSpeedTrait 中未涵蓋在 FanControlTrait Matter 特性中的所有功能。

這類特質組合提供彈性模型,可實現完整的裝置類型功能,並抽象化基礎 smart home 資料模型。

裝置群組

裝置群組代表使用者在單一結構中定義的裝置集合。Google 服務會保留群組成員資格,住家結構體的其他成員和有權存取住家結構體的其他應用程式,都能看到這項資訊。

裝置群組由 DeviceGroup 實體表示,與 HomeDevice 不同。每個 HomeDevice 都會透過其 GroupMembershipTrait 列出所屬群組,因此應用程式可以直接檢查群組成員資格,並疊代群組的成員裝置。此外,DeviceGroup 符合 HasParts 通訊協定,可在指定整個群組時,公開其成員裝置支援的裝置類型。

如要進一步瞭解裝置群組,請參閱「結構 API」和「控制裝置群組」。