Android 上的資料模型

Android 適用的 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 模擬。

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

特徵

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

每個特徵都包含在自己的命名空間中,必須個別匯入才能使用。

舉例來說,如要使用 Matter 開啟/關閉特性和開啟/關閉外掛裝置類型,請將下列套件匯入應用程式:

import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice

如果是車庫裝置類型 (來自 Google 智慧住宅),請加入 Matter 和 Google 特性的組合:

import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice

Android Studio 具有自動完成功能,在專案中將 import 行新增至來源檔案時,通常會為您處理完整的套件名稱。不過,套件名稱在所有裝置類型和特徵中並不一致。請參閱參考資料,確認每個 DeviceType 或 Trait 的套件名稱是否正確。

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

裝置類型組成

Home API 支援大多數 Matter 應用程式叢集,做為資料模型中的特徵。Binding 等低階設定叢集不會直接提供給使用者,因此不會透過 Home API 公開。

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

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

舉例來說,風扇裝置類型由兩者組成,並具備三個特徵:

  • Identify Matter 特性提供 Matter Identify 的所有功能。
  • FanControl Matter 特性提供 Matter FanControl 特性的所有功能
  • ExtendedFanControl Google 特性提供 Google smart home FanSpeed 特性中所有未涵蓋在 FanControl Matter 特性中的功能

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

裝置群組

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

裝置群組由 DeviceGroup 實體表示,與 HomeDevice 不同。每個 HomeDevice 都會透過其 GroupMembership 特徵 (使用 group.devices() 進行反應式解析) 列出所屬群組,因此應用程式可以檢查群組成員資格,並直接疊代群組的成員裝置。此外,DeviceGroup 會實作 PartsProvider 介面,在指定整個群組時,公開其成員裝置支援的裝置類型。

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