A struct automations é o núcleo de um script de automação. É aqui que o comportamento da automação é especificado, incluindo ativações, condições e ações.
Coletivamente, elas também são chamadas de regra de automação.
Uma estrutura automations contém uma ou mais regras de automação, e cada regra
sempre contém um conjunto de ativações e ações. Uma regra pode conter condições opcionais, que são qualificadores adicionais necessários para que o script seja executado.
| Key | Tipo | Descrição |
|---|---|---|
|
|
Opcional Nome da automação. Ela não é mostrada aos usuários, apenas para referência do desenvolvedor. |
|
|
|
[Starter] |
Obrigatório Uma lista de iniciadores. |
|
|
Opcional Condição |
|
|
|
[Ação] |
Obrigatório Uma lista de ações |
Exemplos
Confira a seguir dois exemplos introdutórios de structs automations.
No primeiro exemplo, a automação é iniciada quando uma
TV chamada "Minha TV" é ligada.
Depois de acionadas, as seguintes ações são realizadas:
Dois dispositivos LIGHT, chamados de "Luz A" e "Luz B", estão ligados e definidos para o nível de brilho 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
No segundo exemplo, a mesma automação é iniciada ao pôr do sol todas as segundas e quintas-feiras:
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
Entradas
A struct Starter é onde você especifica as ativações que fazem o script de automação ser executado. Cada automation pode conter uma ou mais ativações, e pelo menos uma delas precisa ser avaliada como true para que as condições subsequentes sejam avaliadas.
Exemplo de um time.schedule inicial:
type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE
Exemplo de uma ativação em mudanças de estado do dispositivo:
type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10
Exemplo de uma ativação em um evento do dispositivo:
type: device.event.DoorbellPress
device: My doorbell - Frontdoor
Exemplo de um iniciador em mudanças no modo de presença em casa:
type: home.state.HomePresence
state: homePresenceMode
is: HOME
Confira a lista completa de ativações.
Condição
As condições podem ser combinadas com operadores lógicos and, or e not para expressar uma lógica mais complexa.
No exemplo a seguir, há uma struct condition com uma condição time
e uma condição device.state. Essa struct permite que o script seja executado se estiver entre o pôr e o nascer do sol na segunda ou terça-feira, ou se o volume da TV estiver entre 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
Um exemplo básico de condição time que limita a execução de um script de automação
aos fins de semana antes das 10h da manhã:
type: time.between
before: 10am
weekdays:
- SAT
- SUN
Uma condição de temperatura do sensor de dispositivo de termostato:
type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F
Exemplo de condição home.state.HomePresence:
type: home.state.HomePresence
state: homePresenceMode
is: AWAY
Confira a lista completa de condições.
Ações
Assim como as ativações e condições, cada ação tem um type que indica o tipo
de ação especificada.
Os mais importantes e úteis são os tipos de comando device.command. Um exemplo de ação para desligar as luzes.
type: device.command.OnOff
devices:
- Light A - Living Room
on: false
Uma ação para adicionar um atraso entre várias outras ações.
type: time.delay
for: 5min