Boas caro Rodolfo, já integrei a hora e data no home assistent. Mas a hora tanto UTC como a “normal” têm 1 hora de atraso. É normal isso acontecer? Já descobri o que está a aconteceu, está a fazer o efeito contrário, ou seja só acende o led 2 mim após a abertura da porta. Mas não sei como resolver a situação. Muito obrigado pela atenção. Cumps.
Boa tarde @maxcalavera, pegando no código que o @RodolfoVieira te indicou será mais facil explicar o que se passa do que andares sempre a perguntar, até porque convem perceber para poderes fazer tudo o que no futuro queiras:
#teste bruno.
#Nome da automação
- alias: liga luz gateway
#estado inicial quando arrancas com o HA
initial_state: true
#trigger aka o que despoleta esta automação
trigger:
#plataforma, neste caso é state porque é o estado do sensor da porta da entrada que vai mudar de "off" para "on" (de fechado para aberto)
platform: state
#o nome do sensor, entidade, device, etc que queres monitorizar para despoletar os eventos
entity_id: COLOCA AQUI O ENTITY DO TEU SENSOR DE PORTA
#no caso da plataforma estado passa dum estado para o outro, cada entidade tem um estado diferente, no caso dos sensores de porta são on-off, mas se for o estado dum device tracker será home-away
to: 'on'
#O "lapso" para o que pediste, neste caso o @RodolfoVieira indica que o estado tem de se manter por 2 minutos, não é o que queres (a porta aberta 2 minutos)
for:
minutes: 2
#Ok, temos o sensor no estado que pretendes, mas queres mais uma condição, só entre as 19h e as 07h30, pode ser desde anoitecer até amanhecer, pode ser só se a porta for aberta e o sensor de lux indicar um valor inferior a 10lux...o que quiseres
condition:
condition: time
after: '19:00:00'
before: '07:30:00'
#O resto deves ter percebido
#Então o que queremos fazer? uma acção, despoletar um evento, ligar algo, desligar algo, avisar alguem, mudar o estado duma variavel, etc
action:
#qual é o serviço? light, notification, device_tracker, ha_restart, etc podes "automatizar" o que quiseres
#neste caso ligar led (a entidade é do tipo light e queres mudar o estado para on)
- service: light.turn_on
data_template:
#entity_id (em quem queres efetuar esta acção?)
entity_id: COLOCA AQUI O ENTITY DO TEU GATEWAY
#estas duas são propriedades dos LED's, mas não existem em switch ou outras)
brightness: 20
color_name: blue
Relativamente ao que queres (ligar por 2 minutos) só tens duas formas de o fazer:
-
2 automações, a primeira que te deram e outra para desligar sendo que neste caso o trigger será o estado da luz ter passado para on, e passado 2minutos a acção é turn_off
-
Outra uma automação que corre um script e esse sim tem duas linhas com isto:
- delay:
seconds: 10
Basicamente tens de perceber o que cada “cenário” representa em termos de decomposição de acções:
1 a porta abriu e o sensor passou para “aberto”
2 mas é entre as 19h e as 07h30?
3 ligar a luz
4 contar 2 minutos
5 mandar desligar a luz
Mas mesmo neste caso podemos aumentar a complexidade até aos 1000% (a porta ficou aberta? a porta foi fechada? A porta foi aberta nos últimos 2 minutos? a luz já estava acessa? é inverno (provavelmente queres a luz a partir das18h), etc etc)
Vai vendo exemplos, vai perguntando e tenta perceber como aceder aos logs e como interpretar.
BV à Comunidade Portuguesa do HA.
Boa tarde jpm, comecei agora nestas andanças e também pretendia entender um pouco da matéria mas estou a ver que não é fácil. então o que eu pretendo com esta automação é: na porta da rua tenho um sensor de porta e janela e o gateway numa tomada perto dessa mesma porta. O que gostava de automatizar era o led do gateway está apagado e quando eu abrisse a porta num determinado período (por exemplo 19h - 7 da manhã) o led acendesse por 2 mim para iluminar o caminho e depois ao fechar a porta o led se desligasse ao fim desse tempo automaticamente…
Não sei se me fiz entender…
Muito obrigado pela ajuda.
#teste bruno.
- alias: liga luz gateway
initial_state: true
trigger:
platform: state
entity_id: COLOCA AQUI O ENTITY DO TEU SENSOR DE PORTA
to: 'on'
condition:
condition: time
after: '19:00:00'
before: '07:30:00'
action:
- service: light.turn_on
data_template:
entity_id: COLOCA AQUI O ENTITY DO TEU GATEWAY
brightness: 100
color_name: blue
#teste bruno.
- alias: desliga luz gateway
initial_state: true
trigger:
platform: state
entity_id: COLOCA AQUI O ENTITY DO TEU SENSOR DE PORTA
to: 'off'
for:
minutes: 2
action:
- service: light.turn_off
data_template:
entity_id: COLOCA AQUI O ENTITY DO TEU GATEWAY
Boas, agora obtenho este erro.
Configuração inválidaVERIFICAR A CONFIGURAÇÃO
Invalid config for [automation]: [for] is an invalid option for [automation]. Check: automation->for. (See /config/configuration.yaml, line 83). Please check the docs at https://home-assistant.io/components/automation/
na linha 83 tenho isto:
83: group: !include groups.yaml
84: automation: !include automations.yaml
85: script: !include scripts.yaml
obrigado
Cola aqui no https://hastebin.com/ tudo o que tens dentro do teu automations.yaml guarda e manda o link
a inha 24 desse link que é o “for” tem que estar por baixo do “to” tal como te mostrei na automação acima
#teste bruno.
- alias: desliga luz gateway
initial_state: true
trigger:
platform: state
entity_id: COLOCA AQUI O ENTITY DO TEU SENSOR DE PORTA
to: 'off'
for:
minutes: 2
action:
- service: light.turn_off
data_template:
entity_id: COLOCA AQUI O ENTITY DO TEU GATEWAY
vou ter de instalar tudo de novo. apaguei todos os ficheiros e continua a dar erros…
Obrigado malta, a primeira de muitas automações está feita.
obrigado do fundo do coração.
Cumps
Para uma situação igual, existe forma de colocar a hora de sunset no “after” e uma hora fixa no “before” numa mesma automatação?
Isto basicamente é uma forma “simples” de programar o que muitos chamam de cenário por isso:
Respondendo directamente @azougado: Claro que sim:
platform: sun
event: sunset # por do sol
event: sunrise # nascer do sol
offset: "-00:45:00" ## caso queiras definir 45 minutos antes ou qq outro desfazamento.
Pois mas isso eu sei, agora o que pretendo é utilizar duas condições - sun e time - na mesma automation, tipo o seguinte cenário que não me dá:
#teste bruno.
- alias: liga luz gateway
initial_state: true
trigger:
platform: state
entity_id: COLOCA AQUI O ENTITY DO TEU SENSOR DE PORTA
to: 'on'
condition:
condition: or
conditions:
- condition: sun
after: sunset
- condition: time
before: '23:00:00'
action:
- service: light.turn_on
data_template:
entity_id: COLOCA AQUI O ENTITY DO TEU GATEWAY
brightness: 100
color_name: blue
Log:
Invalid config for [automation]: extra keys not allowed @ data[‘condition’][0][‘conditions’][1][‘before’]. Got None
not a valid value for dictionary value @ data[‘condition’][0][‘conditions’][1][‘condition’]. Got None
required key not provided @ data[‘condition’][0][‘conditions’][1][‘entity_id’]. Got None. (See /home/homeassistant/.homeassistant/configuration.yaml, line 25). Please check the docs at https://home-assistant.io/components/automation/
Experimenta colocar o valor de before
dentro de aspas ou de plicas.
Ok, resolveu a colocação de plicas. Obrigado mais uma vez.
Não sei se contigo é igual mas comigo tive de usar o horário com 1 hora de atraso. Pois o meu Hass.io está com uma hora de atraso.
Se o teu está com uma hora de atraso é porque não tens a time zone definida ou está mal definida.
A configuração que tenho é esta.
sensor:
- platform: time_date
display_options:
- 'time'
- 'time_utc'
Tanto uma como outra está em horário igual. Obrigado
Isso não tem nada a ver com a timezone…
A configuração da timezone encontra-se dentro do ficheiro configuration.yaml
dentro da entrada homeassistant:
. Algo assim:
homeassistant:
## NAME OF LOCATION
name: Casa
## LOCATION COORDINATES
latitude: !secret ha_latitude
longitude: !secret ha_longitude
## ALTITUDE ABOVE SEA LEVEL (IN METERS)
elevation: 150
## METRIC, IMPERIAL FOR IMPERIAL
unit_system: metric
## C FOR CELCIUS, F FOR FAHRENHEIT
temperature_unit: C
## TIME_ZONES
time_zone: Europe/Lisbon
A hora do time
e do time_utc
são iguais porque estamos ainda no horário de verão, senão seriam diferentes.
obrigado por este post.
Ajudo-me numa automação com timer.
Também tinha a time zone mal configurada.