在 Android 上设计自动化操作

在使用自动化 API 之前,您应该先设计好自动化流程。

确定每个自动化流程的以下参数:

  • 应向用户建议自动化的情形。 例如,如果用户刚刚在家中添加了三盏新灯,他们可能对专门用于控制灯光的自动化操作感兴趣。
  • 自动化所需的设备类型。例如,如果用户刚刚在家中添加了三盏新灯,他们可能对专门用于控制灯的特定自动化操作感兴趣。示例灯光设备类型包括 OnOffLightDeviceColorTemperatureLightDeviceDimmableLightDeviceExtendedColorLightDevice
  • 自动化需要哪些特性属性和命令,以及它们是否是受 Android 自动化 API 支持
  • 首先,应激活自动化功能的特征。有关启动器的讨论,请参阅 Android 上的自动化组件
  • 用于确定自动化是否应实际运行以及要执行哪些操作的其他条件。
  • 自动化执行流程。是应按顺序执行还是并行执行?您是否需要多个逻辑路径?

在设计时,最好绘制自动化流程的节点图,其中包含每个步骤所需的逻辑。

设计好自动化流程后,使用自动化 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 特征的 upOrOpen 命令。

复杂自动化

假设有一款应用可以构建自动化操作,在检测到动作时触发闪烁的灯光。

实现此应用的首要任务之一是使用 Discovery API 找出用户家中可用的灯具。有了这些信息,您的应用现在可以显示可用的灯,或许还可以让用户选择要闪烁哪些灯。

执行流程:

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

通用自动化

举例来说,更复杂的自动化操作可以引导用户根据其家中的任意设备或所有设备创建开放式自动化操作。

自动化功能可能会先提示用户选择结构。

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

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

当用户的所有选择和决定都最终确定后,自动化功能会生成自动化并将其保存到用户选择的结构中。

从宏观层面来看,此类自动化操作需要使用 Android Structure APIAndroid Device API 和 Discovery API 收集有关用户住宅的多组数据。

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