Android 適用的 Home API 會以統一資料模型呈現 Google Home 生態系統中的所有裝置。這個資料模型涵蓋所有類型的裝置 (包括 Google Nest 或第三方製造商的裝置),無論底層智慧住宅技術為何 (例如 Matter 或 Cloud-to-cloud),都能提供通用的 API 介面,供 smart home 和行動應用程式開發人員建構使用者體驗。
裝置類型
Google Home API 中顯示的裝置類型是 Matter 和 Cloud-to-cloud 資料模型的整合結果。部分裝置類型直接衍生自 Matter,部分是 Matter 裝置類型的擴充功能,部分則衍生自 Cloud-to-cloud。
裝置類型包含用於控制及管理裝置的特徵。與裝置類型類似,特徵衍生自 Matter 叢集和 Cloud-to-cloud 特徵,並以與 Matter 叢集類似的常見格式呈現。在 Home API 中,衍生自 Matter 的特徵稱為「特徵」,而非「叢集」。
因此,Home API 中的裝置類型和特徵會優先於Matter。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 智慧住宅),請加入 Google 特徵的組合:Matter
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應用程式叢集做為特徵。不對應裝置控制或狀態,且不為使用者提供任何實用功能的特徵 (例如繫結和群組),不會透過 Home API 公開。
衍生自Cloud-to-cloud智慧住宅特徵的特徵,通常在Cloud-to-cloud和 Home API 之間具有相同名稱,例如 OpenClose 範例。其他特徵則以 Matter 特徵的擴充功能表示,並使用Matter製造商專屬擴充功能建立。這些特徵可彌補smart home特徵的不足,因為功能會分散在 Matter SDK 和 Google Home 生態系統之間。Google* 裝置類型就是一個具體例子,這類裝置類型來自 Cloud-to-cloud,但目前還沒有 Matter 類似裝置。
裝置類型是由一或兩個來源的特徵組成,Matter 或 Cloud-to-cloud。
IdentifyMatter 特徵提供 MatterIdentify的所有功能。FanControlMatter 特徵提供 MatterFanControl特徵的所有功能ExtendedFanControlGoogle 特徵提供 Google smart homeFanSpeed特徵的所有功能,但FanControlMatter 特徵未涵蓋這些功能
這類特徵組合提供彈性模型,可完整呈現裝置類型功能,並抽象化基礎 smart home 資料模型。