automations Struktura jest podstawą skryptu automatyzacji. W tym miejscu określa się zachowanie automatyzacji, w tym polecenia inicjujące, warunki i działania.
Są one też nazywane łącznie regułą automatyzacji.
automations Struktura zawiera co najmniej 1 regułę automatyzacji, a każda reguła zawsze zawiera zestaw elementów początkowych i działań. Reguła może opcjonalnie zawierać warunki, czyli dodatkowe kwalifikatory, które muszą być spełnione, aby skrypt został wykonany.
| Klucz | Typ | Opis |
|---|---|---|
|
|
Opcjonalny Nazwa automatyzacji. Użytkownicy nie będą tego widzieć. Jest to przeznaczone tylko dla deweloperów. |
|
|
|
[Starter] |
Wymagane Lista przystawek. |
|
|
Opcjonalny Warunek |
|
|
|
Wymagane Lista działań |
Przykłady
Poniżej znajdziesz 2 przykłady struktur automations.
W pierwszym przykładzie automatyzacja jest uruchamiana, gdy włączy się TV o nazwie „Mój telewizor”.
Po uruchomieniu wykonywane są te działania:
Dwa urządzenia LIGHT o nazwach „Światło A” i „Światło B” są włączone i ustawione na poziom jasności 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
W drugim przykładzie ta sama automatyzacja jest uruchamiana o zachodzie słońca w każdy poniedziałek i czwartek:
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
Polecenia inicjujące
W strukturze Starter określasz elementy inicjujące, które powodują wykonanie skryptu automatyzacji. Każdy warunek automation może zawierać co najmniej 1 polecenie inicjujące, a co najmniej 1 z nich musi mieć wartość true, aby można było ocenić kolejne warunki.
Przykład time.schedule polecenia inicjującego:
type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE
Przykład polecenia inicjującego zmianę stanu urządzenia:
type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10
Przykład polecenia inicjującego zdarzenie na urządzeniu:
type: device.event.DoorbellPress
device: My doorbell - Frontdoor
Przykład polecenia inicjującego dotyczącego zmian trybu obecności w domu:
type: home.state.HomePresence
state: homePresenceMode
is: HOME
Warunek
Warunki można łączyć za pomocą operatorów logicznych and, or i not, aby wyrażać bardziej złożoną logikę.
W tym przykładzie znajduje się condition Struct z 1 warunkiem time i 1 warunkiem device.state. Ta struktura umożliwia uruchomienie skryptu, jeśli jest poniedziałek lub wtorek i jest między zachodem a wschodem słońca albo jeśli głośność telewizora jest w zakresie od 1 do 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
Podstawowy przykład warunku time, który ogranicza wykonywanie skryptu automatyzacji do weekendów przed godziną 10:00:
type: time.between
before: 10am
weekdays:
- SAT
- SUN
Warunek temperatury czujnika termostatu:
type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F
Przykład warunku home.state.HomePresence:
type: home.state.HomePresence
state: homePresenceMode
is: AWAY
Działania
Podobnie jak polecenia inicjujące i warunki, każde działanie ma type, które wskazują, jakiego rodzaju działanie jest określane.
Najważniejsze i najbardziej przydatne są device.command typy poleceń. Przykład działania polegającego na wyłączeniu świateł.
type: device.command.OnOff
devices:
- Light A - Living Room
on: false
Działanie, które dodaje opóźnienie między kilkoma innymi działaniami.
type: time.delay
for: 5min