自動化

automations結構」是自動化指令碼的核心,您可以在這個頁面上指定自動化行為,包括啟動條件、限制條件和動作。以上種種也稱為自動化規則

automations 結構包含一或多個自動化規則,且每個規則一律會包含一組啟動條件和動作。您可以選擇在規則中加入條件,這些條件是執行指令碼才能執行的額外限定詞。

金鑰 類型 說明

name

String

選用

自動化動作的名稱。

不會對使用者顯示,僅供開發人員參考。

starters

[入門]

需要

啟動條件清單。

condition

條件

選用

條件

actions

[動作]

需要

動作清單

範例

以下是 automations 結構的兩個簡介範例。

在第一個範例中,當名為「My TV」的 TV 開啟時,自動化動作就會啟動。

觸發後,系統會執行下列動作:

兩部名為「Light A」和「Light 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 結構體具備一個 time 條件和一個 device.state 條件。這個「Struct」允許指令碼在星期一或星期二的日落和日出之間執行,或者如果電視音量介於 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

查看動作完整清單