Ajuda com automatização

Olá a todos!

Venho partilhar algo que fiz hoje no home assistant mas que não está a funcionar a 100%.
A minha companheira precisa de programar um switch para se ligar a determinada hora do dia mas não se sente muito à vontade com a automation do home assistant por isso eu decidi fazer algo no UI do lovelace. O aspeto ficou assim:
imagem

Isto é apenas um input boolean que liga ou desliga a automatização, um sensor que lê as horas e minutos dos sliders e sliders para horas e minutos. O configuration.yaml fica assim:

input_number:
  waterhour:
    name: Hours
    icon: mdi:timer
    initial: 0
    min: 0
    max: 23
    step: 1
  waterminutes:
    name: Minutes
    icon: mdi:timer
    initial: 0
    min: 0
    max: 50
    step: 10

input_boolean:
  wateronboolean:
    name: Turn on the water 
    initial: off
    icon: mdi:calendar

sensor:
  - platform: template
    sensors:
      waterontime:
        friendly_name: 'Time'
        value_template: '{{ "%0.02d:%0.02d" | format(states("input_number.waterhour") | int, states("input_number.waterminutes") | int) }}'

Até aqui tudo bem, acho eu (mas pf digam caso não achem que isto está bem).

Agora o meu problema é a automatização que iria ler o estado desse sensor:

- alias: "Water on timer"
  trigger:
    - platform: state
      entity_id: sensor.waterontime
      from: 'off'
      to: 'on'
      for: '00:00:01'
  condition:
    - condition: template
      value_template: '{{ now().strftime("%H:%M") == states.sensor.waterontime.state }}'
  action:
  - device_id: xxxxx
    domain: switch
    entity_id: switch.water
    type: turn_on

O meu problema é que a automatização não funciona nem dá nenhum tipo de erro. Acredito que o erro esteja na automatização, mas não sei onde.

como tens o tempo que vai estar ligado 1 segundo vai ser suficiente para testar?
por alto um dos problemas é na action nao tem serviço

  action:
  - service: switch.turn_on
    entity_id: switch.water

Ah, claro. O trigger é só um segundo e ainda por cima tem uma condition. Não pode ser.
Vou investigar o que posso usar como trigger. Obrigado, Hugo! Alguma ideia do que posso usar aqui?

Não sei se te interessa, mas aqui no meu git podes encontrar o que procuras.

1 Like

Muito obrigado, @maxcalavera!
O teu código por algum motivo não estava a funcionar comigo. Não percebo porquê. Acabei por mudar a automatização para algo mais abrangente e tem funcionado bem:

- alias: Water on timer
  trigger:
    platform: time_pattern
    minutes: '/1'
  condition:
    condition: and
    conditions:
      - condition: template
        value_template: '{{ now().strftime("%H:%M") == states.sensor.waterontime.state}}'
      - condition: state
        entity_id: input_boolean.wateronboolean
        state: 'on'
  action:
  - device_id: xxxxx
    domain: switch
    entity_id: switch.water
    type: turn_on

Retiraste-te as condições do grupo. Wi-Fi e workday? Tem de funcionar. Assim só vai funcionar 1 mim após a hora marcada…

Sim, ao usar usar a tua solução deixei só o value template como trigger e o input boolean como condição. Não sei bem porquê mas não estava a funciona. Devo ter feito algo errado.

Mas o que mostrei no post anterior funciona bem. Não fica um minuto atrasado. Se bem percebo, isto aqui significa que a automatização corre uma vez por minuto:

  trigger:
    platform: time_pattern
    minutes: '/1'

e depois verifica as outras condições que são o value template e o input boolean .

@Rodri experimenta agora o código, desculpa mas o erro foi meu pois as automações estavam desligadas.
Mas agora já esta 100 por cento operacional.


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade