iOS 上的数据模型

Home API for iOS 以统一的数据模型呈现 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 类似物。

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

特征

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

如需导入特征和设备类型,请将 GoogleHomeTypes 模块导入到您的应用中:

import GoogleHomeTypes

此外,您还可以使用 typealias 作为特征和设备类型名称,以缩短代码并避免命名空间重复:

import GoogleHomeTypes

typealias OpenCloseTrait = Google.OpenCloseTrait
typealias OnOffTrait = Matter.OnOffTrait
typealias FanDevice = Matter.FanDeviceType

大多数特征都支持与自动化操作搭配使用,而某些特征仅适用于自动化操作。如需了解详情,请参阅 Android 上的 Automation API 特性支持。

设备类型构成

Home API 支持将大多数 Matter 应用集群作为数据模型中的 trait。不直接为最终用户提供实用功能的低级配置集群(例如 Binding)不会直接通过 Home API 公开。如需详细了解设备组,请参阅结构 API。

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

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

例如,FanDeviceType 由以下三个特征组成:

  • IdentifyTrait Matter 特性提供 Matter IdentifyTrait 的所有功能。
  • FanControlTrait Matter 特性提供 Matter FanControlTrait 的所有功能。
  • ExtendedFanControlTrait Google 特性提供了 Google smart home FanSpeedTrait 中未涵盖在 FanControlTrait Matter 特性中的所有功能。

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

设备组

设备组表示单个结构中由用户定义的一组设备。群组成员资格会保留在 Google 服务中,并且对住宅的其他成员以及有权访问住宅的其他应用可见。

设备组由 DeviceGroup 实体表示,该实体不同于 HomeDevice。每个 HomeDevice 都会通过其 GroupMembershipTrait 列出其所属的群组,因此您的应用可以直接检查群组成员资格并遍历群组的成员设备。此外,DeviceGroup 符合 HasParts 协议,可在将群组作为一个整体进行定位时,公开其成员设备支持的设备类型。

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