Android 上的数据模型

Home APIs for Android 以统一的数据模型呈现 Google Home 生态系统中的所有设备。此数据模型涵盖所有类型的设备(来自 Google Nest 或第三方制造商),无论底层智能家居技术(例如 Matter 或 Cloud-to-cloud)如何,并提供一个通用的 API 接口,以便为 smart home 和移动应用开发者打造用户体验。

设备类型

Home API 中显示的设备类型是 Matter 和 Cloud-to-cloud 数据模型的统一。有些直接派生自 Matter,有些是 Matter 设备类型的扩展,有些则派生自 Cloud-to-cloud。

设备类型包含用于控制和管理设备的特征。与设备类型一样,特性也派生自 Matter 集群和 Cloud-to-cloud 特性,并以类似于 Matter 集群的通用格式呈现。在 Home API 中,派生自 Matter 的 trait 称为 trait,而不是集群。

因此,Home API 中的设备类型和特征旨在以 Matter 为先。Matter 设备类型或特征优先于 Cloud-to-cloud 类似物。

如需查看设备类型及其特征的列表,请参阅 Android 上支持的设备类型。

特征

系统会生成 Kotlin 版本的 trait,以便在 Home API 中使用,这些 trait 包含 Home API 独有的其他功能(在 Matter 或 Cloud-to-cloud 中找不到)。例如,每个 trait 都有方法来检查 trait 是否支持特定属性或命令。这在确定是否可以在用户设备上执行状态读取或某些操作时非常有用,因为并非同一设备类型的所有设备都具有完全相同的功能。

每个 trait 都包含在各自的命名空间中,必须单独导入才能使用。

例如,如需使用 Matter 开关特性和开关插接单元设备类型,请将以下软件包导入到您的应用中:

import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice

对于车库设备类型(来自 Google 智能家居),请添加 Matter 和 Google 特性的组合:

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 应用集群作为数据模型中的 trait。不直接为最终用户提供实用功能的低级配置集群(例如 Binding)不会通过 Home API 公开。

派生自 Cloud-to-cloud 智能家居特性的特性在 Cloud-to-cloud 和 Home API 中通常具有相同的名称,例如 OpenClose。其他功能则表示为 Matter 特性的扩展,使用 Matter 制造商专用扩展创建。这些 trait 弥补了 smart home trait 的不足,其功能在 Matter SDK 和 Google Home 生态系统之间进行了拆分。一个具体的例子是 Google* 设备类型,它们来自 Cloud-to-cloud,但还没有 Matter 类似物。

设备类型由一个或两个来源(Matter 或 Cloud-to-cloud)的特征组成。

例如,风扇设备类型由两者组成,并具有三个特征:

  • Identify Matter 特性提供 Matter Identify 的所有功能。
  • FanControl Matter 特征提供 Matter FanControl 特征的所有功能
  • ExtendedFanControl Google 特性提供了 Google smart home FanSpeed 特性中未涵盖的所有功能,FanControl Matter 特性

这种特征组合为完整的设备类型功能提供了一个灵活的模型,从而抽象化了底层 smart home 数据模型。

设备组

设备组表示单个结构中由用户定义的一组设备。设备组由 DeviceGroup 实体表示,该实体不同于 HomeDevice。

如需详细了解设备组,请参阅结构 API。