创建脚本自动化

1. 简介

学习内容

  • 如何规划和编写脚本自动化操作。
  • 如何测试脚本化自动化操作。

所需条件

  • 搭载 Google Home 应用的 Android 或 iOS 手机。
  • 经“与 Google Home 兼容”认证且可开启或关闭的智能灯或其他设备。

2. 设置设备

如果设备尚未设置,请在家中进行设置。

确认该设备显示在 Google Home 应用中,并且您可以使用 Home 应用开启和关闭该设备。

3. 规划使用脚本的自动化操作

首先,我们需要考虑要让脚本自动化操作执行哪些操作。这包括以下注意事项:

  • 您想要自动控制哪些设备。
  • 应触发脚本自动化操作的启动器(或事件)。
  • 触发脚本自动化操作后,是否运行该操作的其他条件(如果有)。
  • 要执行哪些操作。

在本 Codelab 中,我们计划让脚本自动化操作执行以下两项操作:

  1. 在特定时间开启灯具(或其他智能设备)。
  2. 在特定时间关闭设备。

现在,我们已经明确了要让脚本自动化操作执行的具体操作,接下来将打开脚本编辑器并编写脚本自动化操作。

4. 编写脚本化自动化操作

脚本自动化操作是使用 YAML 数据序列化语言以声明方式编写的。

脚本化自动化操作由两个主要部分组成:

  1. 元数据 - 脚本自动化操作的名称以及其用途说明。
  2. 自动化操作规则 - 定义自动化操作的启动逻辑和行为。

元数据

自动化操作的元数据会告知用户自动化操作的名称和用途。元数据在 metadata 块中指定,如下所示:

metadata:
  name: Scheduled light
  description: Turn the light on and off at specific times

自动化操作规则

自动化规则是执行实际工作的部分。它由三个部分组成:启动器条件操作,系统会按顺序对这些部分进行评估:

1 新手

2 项条件

3 项操作

启动器用于启动自动化操作。至少有一个启动器的求值结果必须为 true,系统才会评估后续条件。

这些条件是可选的,由一个或多个额外的约束条件组成,这些约束条件会在启动器启用后进行评估。如果条件解析为 true,系统就会运行操作。如果它们解析为 false,则系统不会运行操作。

添加多个约束条件时,请使用 andor 关键字将其分隔开来,以形成单个逻辑表达式。此表达式必须解析为 true,自动化操作才能继续执行。

条件不同于状态更改通知:

  • 条件表示在启动器“触发”时必须为 true 的事实,以便运行操作。
  • 状态更改通知是一种事件,例如其他设备开启。

操作是指在满足启动器和任何约束条件后执行的操作。

自动化操作的 automations 代码块包含以下两个规则:

automations:
  - starters:
      - type: time.schedule
        at: 1:00 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: true
  - starters:
      - type: time.schedule
        at: 1:05 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: false

请注意以下几点:

  1. 有两个 automations 规则。第一个按钮用于开灯,第二个按钮用于关灯。
  2. 每条规则只有一个操作。
  3. on: true 表示开灯。同样,on: false 表示关灯
  4. 每个规则都有一个 time.schedule 启动器,用于告知自动化操作在什么时间启动。
  5. 此自动化操作没有任何条件。

5. 完整的脚本化自动化操作

将所有这些部分整合在一起,完整的脚本自动化操作如下所示:

metadata:
  name: Scheduled light
  description: Turn the light on and off at specific times
automations:
  - starters:
      - type: time.schedule
        at: 1:00 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: true
  - starters:
      - type: time.schedule
        at: 1:05 PM
    actions:
      - type: device.command.OnOff
        devices: Desk light - Office
        on: false
  1. 复制自动化操作(见上文)。
  2. 前往 Google Home 网页版
  3. 选择“自动化”标签页,该标签页由三个星形图标表示:
    “自动化操作”标签页
  4. 点击 + 添加新对比项
  5. 在脚本编辑器中,删除自动化模板。
  6. 粘贴您的自动化操作。
  7. Desk light - Office 替换为设备的名称和位置。
  8. 点击验证。脚本编辑器会为脚本自动化操作中包含错误的部分添加下划线。解决出现的所有错误,并不断进行验证和修正,直到没有任何错误为止。例如,您的设备名称可能有所不同。如果是这种情况,您可以使用自动补全功能选择有效的设备名称。
  9. 点击保存
  10. 确保脚本文本下方的启用开关处于开启位置:脚本编辑器,其中包含已完全验证且已启用的脚本自动化

6. 测试自动化操作

  1. 确保您的设备已接通电源,并且在 Google Home 应用中显示。
  2. 如果设备目前处于开机状态,请将其关机。
  3. 网页版 Google Home自动化页面上,点击自动化操作旁边的“运行”按钮。
    脚本运行按钮
  4. 设备应会开机。

现在,我们来测试自动化操作。

  1. 关闭设备。
  2. 修改自动化操作,将第 7 行中的“设备开启”时间更改为 5 分钟后的时间。
  3. 将第 14 行中的“设备关闭”时间更改为“开启时间”之后不久的时间。
  4. 点击验证。解决可能出现的所有错误。
  5. 点击保存
  6. 确保启用开关处于开启位置。
  7. 等待两个启动时间过去。设备应在您指定的时间开机和关机。

7. 恭喜!

您已成功创建脚本自动化操作,太棒了!

在此 Codelab 中,您学习了如何执行以下操作:

  • 如何设计和编写自动化操作。
  • 如何测试自动化操作。

后续步骤

在此 Codelab 中,我们创建了一个非常简单的自动化操作。自动化操作不仅可以安排开关电源的切换,还可以执行更多操作。现在,您已经了解了创建自动化操作的基础知识,接下来可以探索 Google Home 生态系统中提供的各种类型的启动器、条件和操作。

请尝试以下练习:

  • 向自动化操作添加更多 time.schedule 启动器。
  • 修改自动化操作,以便按照相同的时间表开启和关闭其他设备。
  • 在不移除 time.schedule 启动器的情况下,修改自动化操作,使其仅在另一部设备开机时开启设备。请参阅使用 condition 子句的示例脚本
  • 修改自动化操作,使其仅在有人在家时开启设备。

深入阅读

如需详细了解 Google Home 自动化功能,请参阅“自动化”参考文档: