在开始使用 Automation API 之前,您应先设计自动化流程。
确定每项自动化的以下参数:
- 应向用户建议自动化的情形。 例如,如果用户刚刚在家中添加了三盏新灯,他们可能对专门用于控制灯光的自动化操作感兴趣。
 - 自动化所需的设备类型。例如,如果用户刚刚在家中添加了三盏新灯,那么他们可能对专门用于控制灯的特定自动化操作感兴趣。示例灯光设备类型包括 
OnOffLightDevice、ColorTemperatureLightDevice、DimmableLightDevice或ExtendedColorLightDevice。 - 自动化所需的特征属性和命令,以及它们是否受 Android 上的 Automation API 支持。
 - 应作为启动方式来触发自动化操作的特征。有关启动器的讨论请参阅 Android 上的自动化组件。
 - 用于确定自动化是否应实际运行以及要执行哪些操作的其他条件。
 - 自动化操作的执行流程。是应按顺序执行还是并行执行?您是否需要多个逻辑路径?
 
在设计时,最好绘制自动化流程的图表,逐个节点地显示每个步骤所需的逻辑。
设计好自动化流程后,使用自动化 DSL 构建该流程。您构建的自动化功能本质上是一个“模板” - 其中包含的所有结构和设备都是占位符,当用户“采用”该自动化功能供自己使用时,系统会填充每个用户特定的结构和设备。
以下是应用可以使用 Home API 创建的不同类型的自动化操作。如需查看与这些示例相关的代码摘录,请参阅构建自动化操作页面。
简单自动化
假设您需要编写一个应用,该应用可创建一项自动化操作,在上午 8:00 自动升起百叶窗。为此,应用需要一份结构中支持自动化的窗帘(设备类型为 WindowCoveringDevice 的设备)列表,该列表可通过 Discovery API 提供。
对于需要在特定时间运行的自动化操作,您还需要确保用户已在 Google Home app (GHA) 中为其所选结构分配了街道地址,否则自动化操作将不知道其运行的时区。Discovery API 可帮助您确定结构是否已分配地址。
因此,执行流程如下所示:
- 使用 Discovery API 收集 
WindowCoveringDevice设备的列表。 - 如果未填充街道地址,请通知用户需要提供街道地址,并停止执行。
 - 否则,请定义自动化操作:
- 在上午 8:00 启动自动化操作。
 - 对于每个窗帘,调用 
WindowCovering特征的upOrOpen命令。 
 
复杂自动化
假设有一款应用可以构建自动化操作,在检测到运动时触发闪烁的灯光。
实现此应用的首要任务之一是使用 Discovery API 了解用户家中可用的灯具。有了这些信息,您的应用现在可以显示可用的灯,或许还可以让用户选择要闪烁哪些灯。
执行流程:
- 使用 Discovery API 收集结构中存在的灯具设备列表,这些设备应为设备类型为 
OnOffLightDevice、ColorTemperatureLightDevice、DimmableLightDevice或ExtendedColorLightDevice的设备。 - 提供一种选择闪烁灯光的方式,例如通过自定义“设置”面板。
 - 定义自动化操作:
- 通过监控 
AreaPresenceState,在有人离开或抵达住宅时启动自动化操作。 - 如果 
presenceState表示结构已被占用,则闪烁所选灯。 
 - 通过监控 
 
通用自动化
举例来说,更复杂的自动化操作可以引导用户根据家中拥有的任意或所有设备创建开放式自动化操作。
自动化流程可能会先提示用户选择结构。
然后,自动化功能可以在可展开的轮廓视图中显示结构中的所有房间,展开某个房间即可显示其中的设备。进一步展开设备会列出该设备支持的启动器和命令。
用户可以选择要使用的设备、启动器和命令,然后自动化功能会引导用户完成自动化操作的组装。
当用户的所有选择和决定都最终确定后,自动化功能会生成自动化并将其保存到用户选择的结构中。
从宏观层面来看,此类自动化操作需要使用 Structure API for Android、Device API for Android 和 Discovery API 收集有关用户住宅的多组数据。
| API | 信息 | 
|---|---|
| Structure API | 
  | 
| Device API | 
  | 
| Discovery API | 
  |