创建自动化模板

1. 简介

学习内容

  • 如何设计和编写自动化模板。
  • 如何使用 Google Home 开发者控制台测试自动化操作模板。

所需条件

  • 运行 Google Home 应用的 Android 或 iOS 手机。
  • 已加入您住宅的智能灯,或 Google Home Playground 中的模拟设备。

前提条件

您应该熟悉如何编写 Google Home 家居自动化操作。如果您从未编写过自动化操作,建议您先完成创建脚本化自动化操作 Codelab,然后再继续学习本 Codelab。

2. 自动化模板和实例

开发者可以使用 Google Home 开发者管理中心内的自动化模板编辑器创建自动化模板。自动化模板包含脚本逻辑的本质,引用设备类型,但不引用特定设备。

借助网页版 Google Home 的自动化脚本编辑器,最终用户可以采用自动化模板,并创建个性化的实例,以便在自己家中的特定设备上执行操作。保存后,该实例会显示在 Google Home 应用 (GHA) 的家庭日常安排下。

3. 规划自动化操作模板

创建自动化操作时,首先要考虑的是要解决的问题,以及自动化操作将如何解决该问题。这包括以下考虑因素:

  • 您想自动控制哪些设备。
  • 应使用哪个启动方式(或事件)来触发自动化操作的执行。
  • 触发自动化操作后,还有哪些其他条件(如果有)会控制自动化操作是否运行。
  • 要执行的操作。

在此 Codelab 中,自动化功能将执行以下两项操作:

  1. 在特定时间打开灯。
  2. 在特定时间关闭同一盏灯。

了解了这些信息后,您就可以打开模板编辑器并编写自动化脚本了。

4. 编写自动化操作模板

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

自动化模板包含三个主要部分:

  1. 元数据 - 自动化操作的名称、其功能说明,以及用于对自动化操作进行分类的可选标签。关键字为:
    • 照明和插座
    • 气候和能源
    • 安全和提醒
    • 娱乐
    • 家用电器及其他
  2. 输入 - 定义自动化功能旨在控制的设备类型。自动化引擎会使用此信息来了解哪些类型的操作适用于目标设备。
  3. 自动化规则 - 定义自动化操作的启动逻辑和行为。

以下是您将要使用的自动化模板:

metadata:
  name:
    en: Scheduled light
  description:
    en: Turn the light on and off at specific times
  tags:
    - LIGHTING AND PLUGS
input:
  the_light:
    metadata:
      name:
        en: The light
      description:
        en: The light to be controlled
    selector:
      type: device
      multiSelect: true
      supportedTypes:
        - LIGHT
  time_on:
    metadata:
      name:
        en: Time to turn on the light.
      description:
        en: The time of day to turn on the selected light.
    selector:
      type: time
      default: sunset+30min
  time_off:
    metadata:
      name:
        en: Time to turn off the light.
      description:
        en: The time of day to turn off the selected light.
    selector:
      type: time
      default: 10:00 pm
automations:
  - name: Turn on the light
    starters:
      - type: time.schedule
        at: $time_on
    actions:
      - type: device.command.OnOff
        devices: $the_light
        on: true
  - name: Turn off the light
    starters:
      - type: time.schedule
        at: $time_off
    actions:
      - type: device.command.OnOff
        devices: $the_light
        on: false

请仔细阅读该模板,并注意以下事项:

  • metadata 部分包含相应自动化操作的名称和说明。
  • input 部分定义了一个名为 the_light 的变量,用于指定类型为 LIGHT 的设备。这意味着此模板可能仅适用于灯具,而不适用于其他类型的设备。换句话说,当用户在其住宅中设置自动化操作时,如果系统提示用户为 $the_light 选择设备,那么用户只能选择您指定的类型的设备。
  • input 部分中还定义了两个名为 time_ontime_off 的变量。用户可以通过这些设置指定何时开始自动化操作。time_on 表示灯开启的时间,time_off 表示灯关闭的时间。如果用户未设置 time_ontime_off 的值,则使用默认值。
  • 自动化中的 automations 部分包含两条自动化规则。每条规则都有一个 time.schedule 启动方式,用于告知自动化操作何时启动。

模板编辑器

自动化模板编辑器是您用来编写自动化模板的工具。

  1. 前往 Google Home 开发者控制台
  2. 使用 Google Home 应用中设置设备时所用的同一账号登录。
  3. 创建或选择现有项目。
  4. 自动化操作下,点击开发
  5. 点击创建模板
  6. 复制“定时开灯”自动化操作模板。
  7. 将“预定调光”自动化模板粘贴到模板编辑器中。
  8. 点击验证。解决可能出现的任何错误,并继续验证和修正,直到不再出现任何错误。
  9. 点击保存即可保存模板。

5. 测试模板

现在,您可以在控制台中测试该模板。

  1. 确保灯具已插好电源,并且在 Google Home 应用中可见。
  2. 如果指示灯亮起,请将其关闭。
  3. 前往 Google Home 开发者控制台
  4. 打开您创建模板的项目。
  5. 选择自动化,然后选择测试标签页。
  6. 点击“预定亮灯”自动化模板旁边的打开
  7. 选择要测试模板的结构,然后点击下一步
  8. InputValue 编辑器中,指定灯具的名称。例如,如果您的灯具名为“Desk light - Office”,您需要从点击 lights 右侧后显示的下拉菜单中选择 Desk light - Office。或者,您也可以输入设备的名称。
  9. 同样在 InputValue 编辑器中,将 time_on 时间指定为未来某个时间(例如 5 分钟后),并将 time_off 时间更改为 time_on 之后不久的时间。
  10. 完成后,InputValue 编辑器应如下所示:
    inputValue:
     #add value
     the_light: Desk light - Office
     #add value
     time_off: 11:45 am
     #add value
     time_on: 11:40 am
    
  11. 点击启用测试
  12. 等待两个开始时间过去。灯应在指定时间亮起,然后在指定时间熄灭。

成功测试模板后,您便可确定自动化功能正常运行。

6. 恭喜!

您已成功创建自动化模板。也很棒!

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

  • 如何设计和编写自动化模板。
  • 如何在 Google Home 开发者控制台中进行测试。

后续步骤

在此 Codelab 中,您创建了一个非常简单的自动化操作。自动化操作的功能远不止于安排灯的开关。现在,您已了解创建和测试自动化模板的基础知识,接下来可以尝试使用不同的启动器、条件和操作,为其他类型的设备创建自动化模板。

深入阅读

如需详细了解 Google Home 自动化操作,请参阅自动化参考文档: