Home API 以统一的数据模型显示 Google Home 生态系统中的所有设备。无论底层智能家居技术(例如 Matter 或 Cloud-to-cloud)如何,此数据模型都涵盖所有类型的设备(来自 Google Nest 或第三方制造商),并提供一个通用 API 接口,以便为 smart home 和移动应用开发者打造用户体验。
设备类型
Home API 中显示的设备类型是 Matter 和 Cloud-to-cloud 数据模型的统一。其中一些直接派生自 Matter,一些是 Matter 设备类型的扩展,另一些则派生自 Cloud-to-cloud。
设备类型包含用于控制和管理设备的特征。与设备类型一样,特征派生自 Matter 集群和 Cloud-to-cloud 特征,并采用与 Matter 集群类似的通用格式进行呈现。在 Home API 中,派生自 Matter 的特征称为“特征”,而非“集群”。
因此,Home API 中的设备类型和特征应以 Matter 为先。Matter 设备类型或特征优先于 Cloud-to-cloud 模拟设备。
如需查看设备类型及其特征的列表,请参阅支持的设备类型。
trait
系统会生成 Kotlin 版本的 trait 以在 Home API 中使用,并且这些 trait 包含 Home API 专有的其他功能(在 Matter 或 Cloud-to-cloud 中找不到)。例如,每个 trait 都具有用于检查 trait 是否支持特定属性或命令的方法。在确定是否可以在用户设备上执行状态读取或执行特定操作时,这非常有用,因为设备类型中的所有设备都不会具有完全相同的功能。
每个 trait 都包含在自己的命名空间中,必须单独导入才能使用。
例如,如需使用 Matter 开/关 trait 和开/关插件设备类型,请将以下软件包导入您的应用:
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice
对于车库设备类型(来自 Google 智能家居),请混合使用 Matter 和 Google trait:
import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice
Android Studio 具有自动补全功能,在向项目中的源文件添加 import
代码行时,通常会为您处理完整的软件包名称。不过,软件包名称在所有设备类型和 trait 之间并不一致。请参阅参考文档,验证每个 DeviceType
或 Trait
的正确软件包名称。
特征还支持与自动化操作搭配使用,但可能受到限制,并且某些特征仅适用于自动化操作。如需查看相关列表,请参阅 Automation API trait 支持。
设备类型组成
Home API 支持将大多数 Matter 1.3 应用集群作为数据模型中的 trait。不对应于设备控制或状态且不为最终用户提供任何实用程序的特征(例如绑定和群组)不会通过 Home API 公开。
从 Cloud-to-cloud 智能家居 trait 派生的 trait 通常在 Cloud-to-cloud 和 Home API 之间具有相同的名称,如 OpenClose 示例中所示。其他 trait 则表示为 Matter trait 的扩展,使用 Matter 制造商专用扩展创建。这些 trait 弥补了 smart home trait 的缺口,其中功能在 Matter SDK 和 Google Home 生态系统之间分布。具体示例是来自 Cloud-to-cloud 但尚无 Matter 等效项的 Google*
设备类型。
设备类型由一个或两个来源(Matter 或 Cloud-to-cloud)中的特征组成。
例如,风扇设备类型由这两者组成,并具有两个 FanControl 特征:
- FanControl Matter trait 提供 Matter FanControl trait 中的所有功能
- ExtendedFanControl Google trait 提供 FanControl Matter trait 未涵盖的 Google smart home FanSpeed trait 中的所有功能
这种 trait 组合为完整的设备类型功能提供了灵活的模型,并对底层 smart home 数据模型进行了抽象化处理。