Home API for Android 概览

适用于 Android 的 Google Home API 提供了一个统一的 API 界面,使开发者能够与用户住宅中实体的状态进行交互。这些实体可以描述与用户结构和房间关联的设备和非设备信息。

Home API 定义了用户可以与之互动的以下实体:

  • 结构表示包含房间和住宅的住宅。
  • 房间是结构的一部分,包含设备。
  • 设备实现包含属性的特征、符合类型、发出事件并响应命令。
  • 自动化操作是结构的一部分,使用住宅元数据和设备来自动执行住宅中的任务。

图 1 说明了此架构:

图示:Android 应用的 Home API 架构
图 1:Android 应用的 Home API 架构

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 显示了各个组件如何协同工作。

图表:Android 应用的 Home API 生态系统
图 2:Android 应用的 Home API 生态系统

该生态系统包括 Google Automation Engine,用于存储和运行自动化操作,从而提供一种在住宅中自动执行任务和设置设备的方式。

Home API 使用 OAuth 2.0 授予对结构中设备的访问权限。OAuth 允许用户向应用或服务授予权限,而无需公开其登录凭据。

Google Home Developer Console 用于管理 Home API 项目的所有阶段,从品牌验证、开发、测试和认证到最终发布。它可简化开发流程,同时通过 Google Home 生态系统提供强大的工具和分发功能。

语言

Android 的 Home API 采用 Kotlin 编写,并提供使用 Flow 管理状态和订阅的惯用 Kotlin 接口。与标准订阅 API 相比,这具有多项优势。

如果您还不熟悉协程、Flow 和 Jetpack Compose,建议您先熟悉相关 Kotlin 文档:

实体标识符

Home API 中的每个实体都有一个 ID,用于表示其主要标识符。此 ID 是唯一且稳定的标识符,在实体的整个生命周期内都不会发生变化。此 ID 可用于缓存对象或检查相等性,因为实体的元数据可能会发生变化。

请参阅 HasId 接口,了解哪些实体具有 ID。

术语映射

Home API 中的实体与 MatterCloud-to-cloud 概念的对应关系如下:

Home API Matter Cloud-to-cloud
特征 集群 特征
属性 属性 属性、状态
命令 命令 命令
事件 事件 后续跟进回答、通知