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 自动化引擎 ,用于存储和 运行 自动化操作,从而提供一种自动执行住宅中的任务和设备设置的方法。

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 文档:

实体标识符

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

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

术语映射

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

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