Lo struct automations è il nucleo di uno script di automazione. Qui viene specificato il comportamento delle automazioni, inclusi starter, condizioni e azioni.
Nel complesso, questi elementi costituiscono una regola di automazione.
Uno struct automations contiene una o più regole di automazione e ogni regola contiene sempre un insieme di starter e azioni. Facoltativamente, una regola può contenere condizioni, ovvero qualificatori aggiuntivi che devono essere soddisfatti affinché
lo script venga eseguito.
| Chiave | Tipo | Descrizione |
|---|---|---|
|
|
Facoltativo Il nome dell'automazione. Non viene mostrato agli utenti, serve solo come riferimento per lo sviluppatore. |
|
|
|
[Starter] |
Obbligatorio Un elenco di starter. |
|
|
Facoltativo Condizione |
|
|
|
[Action] |
Obbligatorio Un elenco di azioni |
Esempi
Di seguito sono riportati due esempi introduttivi di struct automations.
Nel primo esempio, l'automazione viene avviata quando viene acceso un
TV chiamato "La mia TV".
Una volta attivato, vengono eseguite le seguenti azioni:
Due dispositivi LIGHT, denominati "Luce A" e "Luce B", sono accesi e impostati sul livello di luminosità 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
Nel secondo esempio, la stessa automazione viene avviata al tramonto ogni lunedì e giovedì:
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
Titolari
Lo struct Starter è il luogo in cui devono essere specificati gli starter che determinano l'esecuzione dello script di automazione. Ogni automation può contenere uno o più starter e almeno uno starter deve essere valutato come true affinché le condizioni successive vengano valutate.
Un esempio di starter time.schedule:
type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE
Un esempio di starter basato sulle modifiche di stato del dispositivo:
type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10
Un esempio di starter basato su un evento del dispositivo:
type: device.event.DoorbellPress
device: My doorbell - Frontdoor
Un esempio di starter basato sulle modifiche della modalità di presenza in casa:
type: home.state.HomePresence
state: homePresenceMode
is: HOME
Visualizza l'elenco completo dei comandi iniziali.
Condizione
Le condizioni possono essere combinate con gli operatori logici and, or e not per esprimere una logica più complessa.
Nell'esempio seguente, è presente uno struct condition con una condizione time e una condizione device.state. Questo struct consente l'esecuzione dello script se è lunedì o martedì tra il tramonto e l'alba oppure se il volume della TV è compreso tra 1 e 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
Un esempio di condizione time di base che limita l'esecuzione di uno script di automazione ai fine settimana prima delle 10:00 del mattino:
type: time.between
before: 10am
weekdays:
- SAT
- SUN
Una condizione di temperatura del sensore del termostato:
type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F
Un esempio di condizione home.state.HomePresence:
type: home.state.HomePresence
state: homePresenceMode
is: AWAY
Visualizza l'elenco completo delle condizioni.
Azioni
Come gli starter e le condizioni, ogni azione ha un type che indica il tipo di azione specificata.
I più importanti e utili sono i tipi di comandi device.command. Esempio di azione per spegnere le luci.
type: device.command.OnOff
devices:
- Light A - Living Room
on: false
Un'azione per aggiungere un ritardo tra più azioni.
type: time.delay
for: 5min