automations 結構體是自動化動作指令碼的核心,這個模塊用於指定自動化動作的行為,包括啟動條件、限制條件和動作。這些條件統稱為自動化規則。
automations 結構體包含一或多個自動化規則,每個規則一律包含一組啟動條件和動作。規則可以選擇性包含條件,也就是必須符合的額外限定條件,才能執行指令碼。
| 金鑰 | 類型 | 說明 |
|---|---|---|
|
|
選用 自動化動作的名稱。 這項資訊不會對使用者顯示,僅供開發人員參考。 |
|
|
|
[Starter] |
必填 啟動條件清單。 |
|
|
選用 條件 |
|
|
|
[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
條件
條件可搭配邏輯運算子 and、or 和 not,用於表達較複雜的邏輯。
在下列範例中,有一個 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