Структура automations — это ядро скрипта автоматизации. Здесь задается поведение автоматизации, включая начальные условия, условия и действия. В совокупности они также называются правилом автоматизации.
Структура automations содержит одно или несколько правил автоматизации, и каждое правило всегда содержит набор итераторов и действий. Правило может дополнительно содержать условия, которые являются необходимыми условиями для выполнения скрипта.
| Ключ | Тип | Описание |
|---|---|---|
| Необязательный Название автоматизации. Эта информация не отображается пользователям, она предназначена только для ознакомления разработчиков. | |
| [ Стартовый ] | Необходимый Список закусок. |
| Необязательный Состояние | |
| [ Действие ] | Необходимый Список действий |
Примеры
Ниже приведены два вводных примера структур automations .
В первом примере автоматизация запускается при включении TV с именем "Мой телевизор".
После запуска выполняются следующие действия:
Два 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
Посмотреть полный список игроков стартового состава .
Состояние
Условия можно комбинировать с логическими операторами « 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: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