自動化

automations 結構體是自動化動作指令碼的核心,這個模塊用於指定自動化動作的行為,包括啟動條件、限制條件和動作。這些條件統稱為自動化規則

automations 結構體包含一或多個自動化規則,每個規則一律包含一組啟動條件和動作。規則可以選擇性包含條件,也就是必須符合的額外限定條件,才能執行指令碼。

金鑰 類型 說明

name

String

選用

自動化動作的名稱。

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

starters

[Starter]

必填

啟動條件清單。

condition

條件

選用

條件

actions

[Action]

必填

動作清單

範例

以下是 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

啟動條件

啟動條件結構體用於指定啟動條件,觸發執行自動化指令碼。每個 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 點前:

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

查看完整動作清單