自动化操作

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

automations 结构包含一项或多项自动化规则,每条规则始终包含一组启动方式和操作。规则可以选择性地包含条件,这些条件是脚本执行时必须满足的其他限定条件。

类型 说明

name

String

可选

自动化的名称。

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

starters

[Starter]

必填

启动方式列表。

condition

Condition

可选

条件

actions

[Action]

必填

操作列表

示例

以下是两个 automations 结构的简介示例。

在第一个示例中,当名为“My TV”的 TV设备开启时,自动化会启动。

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

两个LIGHT 设备“Light A”和“Light 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

查看操作的完整列表