O 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.
Um Struct automations
contém uma ou mais regras de automação, e cada regra
sempre contém um conjunto de ativações e ações. Opcionalmente, uma regra pode conter
condições, que são qualificadores adicionais que precisam estar em vigor para que
o script seja executado.
Key | Tipo | Descrição |
---|---|---|
|
Opcional Nome da automação. Isso não é exibido aos usuários, serve apenas para referência do desenvolvedor. |
|
|
[Ativação] |
Obrigatório Uma lista de ativações. |
|
Opcional Condição |
|
|
[Ação] |
Obrigatório Uma lista de ações |
Exemplos
Veja a seguir dois exemplos introdutórios de estruturas automations
.
No primeiro exemplo, a automação é iniciada quando uma
TV
chamada "My TV" é ativada.
Depois de acionadas, as seguintes ações são realizadas:
Dois dispositivos LIGHT
, chamados "Light A" e "Light 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 na desativação a cada segunda e quinta-feira:
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
O Struct Starter é onde você especifica as ativações que fazem com que o script de automação seja 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.
Um exemplo de ativação time.schedule
:
type: time.schedule
at: sunrise+30min
weekdays:
- MON
- TUE
Um exemplo de ativação no estado do dispositivo:
type: device.state.Volume
device: My TV - Living Room
state: currentVolume
greaterThan: 1
lessThan: 10
Exemplo de ativação em um evento do dispositivo:
type: device.event.DoorbellPress
device: My doorbell - Frontdoor
Um exemplo de ativação do modo de presença em casa muda:
type: home.state.HomePresence
state: homePresenceMode
is: HOME
Confira a lista completa de ativações.
Condição
As condições podem ser combinadas com os operadores lógicos and
, or
e not
para
expressar uma lógica mais complexa.
No exemplo a seguir, há um Struct condition
com uma condição time
e uma condição device.state
. Esse 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:
type: time.between
before: 10am
weekdays:
- SAT
- SUN
Condição de temperatura do sensor de um dispositivo do termostato:
type: device.state.TemperatureSetting
device: My Thermostat - Living Room
state: thermostatTemperatureAmbient
greaterThan: 65F
Um 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 ativações e condições, cada ação tem um type
que indica o tipo
de ação especificado.
Os mais importantes e úteis são os tipos de comando device.command
. Um exemplo prático de apagar 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