设计自动化操作

在开始使用 Automation API 之前,您应先设计自动化操作。

确定每个自动化操作的以下参数:

  • 应向用户建议自动化操作的情形。 例如,如果用户刚刚在住宅中添加了 3 个新灯,他们可能会对专门用于控制灯的特定自动化操作感兴趣。
  • 自动化操作需要哪些类型的设备。例如,如果用户刚刚在住宅中添加了 3 个新灯具,他们可能会对专门用于控制灯具的特定自动化操作感兴趣。示例灯具设备类型包括 OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice
  • 自动化操作需要哪些 trait 属性和命令,以及这些属性和命令是否受 Automation API 支持
  • 应作为启动器来激活自动化的 trait。自动化操作组件中介绍了启动器。
  • 用于确定自动化操作是否应实际运行以及要执行哪些操作的其他条件。
  • 自动化操作的执行流程。它应按顺序还是并行执行?您是否需要多个逻辑路径?

在设计时,不妨按节点绘制自动化流程图,并在每个步骤中添加所需的逻辑。

设计好自动化操作后,使用自动化 DSL 构建该操作。您构建的自动化操作本质上是一种“模板”:其中的所有结构和设备都是占位符,当用户“采用”自动化操作以供自己使用时,系统会填充每个用户的具体结构和设备。

以下是应用可以使用 Home API 创建的不同类型的自动化操作。如需查看与这些示例相关的代码段,请参阅构建自动化操作页面。

简单的自动化操作

假设您需要编写一个应用,用于创建一个自动化操作,以便在早上 8:00 拉起百叶窗。为此,应用需要支持自动化的结构中存在的百叶窗(设备类型为 WindowCoveringDevice)的列表,Discovery API 可以提供此列表。

对于需要在特定时间运行的自动化操作,您还需要确保用户已在 Google Home app (GHA) 中为其所选结构分配了街道地址,否则自动化操作将不知道其运行的时区。Discovery API 可帮助您确定是否已向结构分配地址。

因此,执行流程如下所示:

  1. 使用 Discovery API 收集 WindowCoveringDevice 设备列表。
  2. 如果未填充街道地址,请通知用户需要提供街道地址,并停止执行。
  3. 否则,请定义自动化操作:
    1. 在早上 8:00 启动自动化操作。
    2. 对于每个百叶窗,调用 WindowCovering trait 的 upOrOpen 命令。

复杂的自动化操作

假设有一个应用构建了一个自动化操作,用于在检测到移动时触发闪烁灯。

实现此应用的首要任务之一是使用 Discovery API 查找用户住宅中可用的灯具。有了这些信息,您的应用现在可以显示可用的灯具,并且可以允许用户选择要闪烁的灯具。

执行流程:

  1. 使用 Discovery API 收集结构中存在的灯具设备列表,即设备类型为 OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice 的任何设备。
  2. 提供一种选择闪烁灯具的方法,例如通过自定义“设置”面板。
  3. 定义自动化操作:
    1. 通过监控 AreaPresenceState,在有人离开或到达住宅时启动自动化操作。
    2. 如果 presenceState 指示结构已被占用,则闪烁所选的灯。

通用自动化

如需查看更复杂的自动化操作示例,不妨考虑创建一个可引导用户根据家中的任一或所有设备创建开放式自动化操作的自动化操作。

自动化操作可能首先提示用户选择结构。

然后,自动化操作便可在可展开的轮廓视图中显示结构中的所有房间,展开某个房间即可显示其中的设备。进一步展开设备会列出该设备支持的启动器和命令。

用户可以选择要使用的设备、启动器和命令,自动化操作会引导用户完成自动化操作的组装。

当用户的所有选择和决定都已确定后,自动化操作便会生成自动化操作并将其保存到用户选择的结构中。

概括地说,此类自动化操作需要使用 Structure APIDevice API 和 Discovery API 收集有关用户住宅的多组数据。

表 1:Home API 及其可提供的信息
API信息
Structure API
  • 可用的结构
  • 相应结构中包含哪些房间
Device API
  • 所选结构中包含哪些设备
  • 这些设备的位置(位于哪个房间)
Discovery API
  • 设备支持哪些 trait
  • 这些 trait 支持哪些启动器和命令
  • 这些命令的参数存在哪些限制