自动化操作

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

automations 结构体包含一个或多个自动化规则,且每条规则始终包含一组启动方式和操作。规则可以视需要包含条件,这些条件是指为执行脚本而必须满足的额外限定符。

类型 说明

name

String

可选

自动化操作的名称。

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

starters

[入门]

必需

启动方式列表。

condition

使用情况

可选

条件

actions

[行动]

必需

操作列表

示例

以下是 automations 结构体的两个介绍性示例。

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

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

两个名为“灯 A”和“灯 B”的 LIGHT 设备处于开启状态,并设置为亮度级别 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 Struct,其中包含一个 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

查看完整的条件列表

Action

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

device.command 命令类型是最重要和最有用的类型。关灯的操作示例。

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

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

type: time.delay
for: 5min

查看操作的完整列表