自动化操作

automations 结构是自动化脚本的核心。您可以在此处指定自动化行为,包括启动方式、条件和操作。 这些统称为自动化规则

automations 结构包含一个或多个自动化规则,每个规则始终包含一组启动方式和操作。规则可以选择性地包含条件,这些条件是必须满足的附加限定符,只有这样才能执行脚本。

密钥 类型 说明

name

String

可选

自动化操作的名称。

此名称不会向用户显示,仅供开发者参考。

starters

[Starter]

必需

启动器列表。

condition

条件

可选

条件

actions

[操作]

必需

操作列表

示例

以下是两个 automations 结构体的入门示例。

在第一个示例中,当名为“我的电视”的 TV 打开时,自动化操作会启动。

触发后,系统会执行以下操作:

两个 LIGHT 设备(分别命名为“灯 A”和“灯 B”)已开启,亮度级别设置为 50。

automations:
- name: Dim the lights
  starters:
  - type: device.state.OnOff
    device: My TV - Living Room
    state: on
    is: true
  actions:
  - type: device.command.OnOff
    devices:
    - Light A - Living Room
    - Light B - Living Room
    on: true
  - type: device.command.BrightnessAbsolute
    devices:
    - Light A - Living Room
    - Light B - Living Room
    brightness: 50

在第二个示例中,同一自动化操作会在每个星期一和星期四的日落时启动:

automations:
- name: Dim the lights
  starters:
  - type: time.schedule
    at: SUNSET
    weekday:
    - MONDAY
    - THURSDAY
    state: on
    is: true
  actions:
  - type: device.command.OnOff
    devices:
    - Light A - Living Room
    - Light B - Living Room
    on: true
  - type: device.command.BrightnessAbsolute
    devices:
    - Light A - Living Room
    - Light B - Living Room
    brightness: 50

启动方式

您可以在 Starter 结构中指定导致自动化脚本执行的启动器。每个 automation 可以包含一个或多个启动器,并且至少一个启动器必须求值为 true,才能评估后续条件。

time.schedule 启动器的示例:

type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE

有关启动器在设备状态发生变化时的示例:

type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10

设备事件的启动器示例:

type: device.event.DoorbellPress
device: My doorbell - Frontdoor

有关住宅存在模式更改的启动器示例:

type: home.state.HomePresence
state: homePresenceMode
is: HOME

查看完整的初始精灵列表

条件

您可以使用逻辑运算符 andornot 组合条件,以表达更复杂的逻辑。

在以下示例中,有一个 condition 结构,其中包含一个 time 条件和一个 device.state 条件。此结构体允许脚本在以下情况下运行:如果时间是周一或周二的日落到日出之间,或者电视音量介于 1 到 10 之间:

type: or
conditions:
- type: time.between
  before: sunrise
  after: sunset
  weekdays:
  - MON
  - TUE
- type: device.state
  device: My TV - Living Room
  trait: Volume
  state: currentVolume
  greaterThanOrEqualTo: 1
  lessThanOrEqualTo: 10

一个基本的 time 条件示例,用于将自动化脚本的执行限制在周末上午 10:00 之前:

type: time.between
before: 10am
weekdays:
- SAT
- SUN

温控器设备传感器温度条件:

type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F

home.state.HomePresence 条件的示例:

type: home.state.HomePresence
state: homePresenceMode
is: AWAY

查看条件的完整列表

操作

与启动方式和条件类似,每个操作都有一个 type,用于指明所指定的操作类型。

最重要且最有用的命令类型是 device.command。关闭灯光的动作示例。

type: device.command.OnOff
devices:
- Light A - Living Room
on: false

用于在多个其他操作之间添加延迟的操作。

type: time.delay
for: 5min

查看操作的完整列表