适用于 Android 的 Google Home API 提供了一个统一的 API 界面,使开发者能够与用户住宅中实体的状态进行互动。这些实体可以描述与用户结构和房间关联的设备和非设备信息。
Home API 定义了用户可以与之互动的以下实体:
- 结构表示包含房间和住宅的住宅。
- 房间是结构的一部分,包含设备。
- 设备实现包含属性的特征、符合类型、发出事件并响应命令。
- 自动化操作是结构的一部分,使用住宅元数据和设备来自动执行住宅中的任务。
图 1 说明了此架构:
Home API 设备类型可能由智能家居开放标准 Matter 提供支持,也可能是 Google Home 生态系统中的 Cloud-to-cloud 设备。某些设备类型可能同时包含这两者的功能。如需了解详情,请参阅Android 上支持的设备类型。
在 Matter 中,设备功能按集群分组,在 Home API 中表示为 Matter 标准特征。Home API 支持当前 Matter 规范中定义的标准 Matter 集群。
在 Google Home 生态系统中,设备功能按智能家居特征分组,这些特征在 Home API 中表示为 Google 智能家居特征。Home API 支持 Cloud-to-cloud 计划中定义的一组智能家居特征。
此外,还提供其他特征,例如特定于制造商的集群和平台特征。如需了解详情,请参阅 Android 上的数据模型。
生态
Google Home 生态系统为构建、管理、保护和集成智能家居体验提供了一个简化的基础。图 2 显示了各个组件如何协同工作。
该生态系统包括 Google Automation Engine,用于存储和运行自动化操作,从而提供一种在住宅中自动执行任务和设置设备的方式。
Home API 使用 OAuth 2.0 授予对结构中设备的访问权限。OAuth 允许用户向应用或服务授予权限,而无需公开其登录凭据。
Google Home Developer Console 用于管理 Home API 项目的所有阶段,从品牌验证、开发、测试和认证到最终发布。它简化了开发流程,同时通过 Google Home 生态系统提供强大的工具和分发渠道。
语言
Android 的 Home API 是用 Kotlin 编写的,并提供了一个惯用的 Kotlin 接口,该接口使用 Flow 来管理状态和订阅。与标准订阅 API 相比,这提供了诸多优势。
如果您还不熟悉协程、Flow 和 Jetpack Compose,建议您先熟悉相关 Kotlin 文档:
- 使用 Kotlin 开发 Android 应用
- 学习 Kotlin 开发 Android 应用
- Android 上的 Kotlin 协程。以下这些特定的代码实验室可能有用:
- Kotlin Flows on Android,更具体地说,是 StateFlow。
- 状态和 Jetpack Compose,尤其是
collectAsStateWithLifecycle()函数。此功能会根据显示该状态的 UI 是否实际位于前台,自动管理流程的订阅和取消订阅。 - 如果您正在使用自动化 API,阅读有关 Kotlin 类型安全构建器 的内容有助于理解自动化 DSL 的工作原理。
实体标识符
Home API 中的每个实体都有一个 ID,代表其主要标识符。此 ID 是唯一且稳定的标识符,在实体的整个生命周期内都不会发生变化。此 ID 可用于缓存对象或检查相等性,因为实体的元数据可能会发生变化。
如需了解哪些实体具有 ID,请参阅 HasId 接口。
术语映射
Home API 中的实体与 Matter 和 Cloud-to-cloud 概念的对应关系如下:
| Home API | Matter | Cloud-to-cloud |
|---|---|---|
| 特征 | 集群 | 特征 |
| 属性 | 属性 | 属性、状态 |
| 命令 | 命令 | 命令 |
| 事件 | 事件 | 后续回复,通知 |