Android 適用的 Google Home API 提供統一的 API 介面,可讓開發人員與使用者住家中的實體狀態互動。這些實體可以描述與使用者住家和房間相關聯的裝置和非裝置資訊。
Home API 定義使用者可互動的下列實體:
- 結構代表包含房間和裝置的住家。
- 房間是結構的一部分,內含裝置。
- 裝置會實作包含屬性的特徵、符合類型、發出事件,以及回應指令。
- 自動化動作是結構體的一部分,會使用住家相關中繼資料和裝置,自動執行住家中的工作。
圖 1 說明這個架構:
Home API 裝置類型可能由Matter (智慧住宅開放標準) 支援,也可能是 Google Home 生態系統中的 Cloud-to-cloud 裝置。部分裝置類型可能會同時採用這兩項技術的功能。詳情請參閱「Android 支援的裝置類型」。
在 Matter 中,裝置功能會依叢集分組,並以 Matter 標準特徵的形式呈現於 Home API 中。Home API 支援目前 Matter 規格中定義的標準 Matter 叢集。
在 Google Home 生態系統中,裝置功能會依智慧住宅特徵分組,這些特徵在 Home API 中會以 Google 智慧住宅特徵表示。Home API 支援 Cloud-to-cloud 計畫中定義的一組智慧住宅特徵。
此外,您也可以使用其他特徵,例如製造商專屬叢集和平台特徵。詳情請參閱「Android 上的資料模型」。
生態系統
Google Home 生態系統提供簡化的基礎,可供建構、管理、保護及整合智慧住宅體驗。圖 2 顯示所有元件如何協同運作。
這個生態系統包含 Google 自動化引擎,可儲存及執行自動化動作,方便你自動執行住家中的工作和裝置設定。
Home API 會使用 OAuth 2.0 授權存取結構中的裝置。OAuth 可讓使用者授權應用程式或服務,不必提供登入憑證。
Google Home Developer Console 可用於管理 Google Home API 專案的所有階段,包括品牌驗證、開發、測試、認證,以及最終發布。這項服務可簡化開發程序,同時透過 Google Home 生態系統提供強大的工具和發布管道。
語言
Android 適用的 Home API 是以 Kotlin 編寫而成,並提供慣用的 Kotlin 介面,可使用 Flow 管理狀態和訂閱項目。相較於標準的訂閱 API,這項功能有許多優點。
如果您還不熟悉協同程式、流程和 Jetpack Compose,建議先參閱 Kotlin 說明文件:
- 使用 Kotlin 開發 Android 應用程式
- 學習「Kotlin for Android」
- Android 上的 Kotlin 協同程式。以下程式碼研究室可能對您有幫助:
- Android 上的 Kotlin 資料流,更具體來說是 StateFlow。
- 狀態和 Jetpack Compose,特別是
collectAsStateWithLifecycle()
函式。這個函式會根據顯示該狀態的 UI 是否實際位於前景,自動管理流程的訂閱和取消訂閱作業。 - 如果您使用 Automation API,建議閱讀 Kotlin 型別安全建構工具,瞭解 Automation DSL 的運作方式。
實體 ID
每個 Home API 實體都有 ID,代表其主要 ID。這個 ID 是專屬的穩定 ID,實體存在期間不會變更。這個 ID 可用於快取物件或檢查是否相等,因為實體的中繼資料可能會變更。
如要瞭解哪些實體有 ID,請參閱 HasId
介面。
術語對應
Home API 中的實體會對應至 Matter 和 Cloud-to-cloud 概念,如下所示:
Home API | Matter | Cloud-to-cloud |
---|---|---|
特徵 | 叢集 | 特徵 |
屬性 | 屬性 | 屬性、狀態 |
指令 | 指令 | 指令 |
活動 | 活動 | 後續回覆、通知 |