Variável em automação

Tenho numa automação um repeat loop e queria usar uma variável que entro num helper input_number como controle do número de ciclos mas estou com dificuldade em colocar isso a funcionar.
Experimentei usar o ID directamente, dentro das chavetas {{ input_number.contador }} ou mesmo ‘{{ states(’‘input_number.contador’) | int }}’
Sou um bocado marreta nisto…

Alguém tem alguma sugestão?

Obrigado.

Estás a testar isso no Template das Dev Tools do HA? E atenção às aspas, " é diferente de ' e significam coisas diferentes (as primeiras são aspas e as segundas plicas).

Além disso a utilização de aspas/plicas têm algumas regras a seguir, sendo a principal a que dentro de aspas não se podem usar novamente aspas (o mesmo se aplica às plicas). Deve ser usadas plicas dentro de aspas ou aspas dentro de plicas.

O exemplo que colocaste está errado ‘{{ states(’‘input_number.contador’) | int }}’ (e antes do Input_number tens plicas a mais…) sendo a maneira correcta uma das seguintes:

´{{ states("input_number.contador") | int }}’
ou
"{{ states('input_number.contador') | int }}"

Bom dia Jorge,

Estava a tentar usar directamente no editor das automations.
Concretamente estou a tentar fazer uma automação que liga a rega a uma hora que defino no fronted e cuja duração também aí defino.
O problema é que estou a usar o sistema de rega zigbee do lidl e o gajo tem um auto-off passados 60s que não consigo desactivar.
Para contornar isso voltamos a activar o switch da rega antes do auto-off disparar e o gajo vai continuando.
Portanto criei um script que activa a rega e faz um delay de 55s. Na automação faço um repeat em que o contador é grosso modo o número de minutos que quero a coisa ligada (55s x N).

Tudo está a funcionar como o previsto excepto a parte do count.

O yaml da automação que tenho:

alias: REGA - Liga rega periodo 1
description: ‘’
trigger:

  • platform: time
    at: input_datetime.rega_periodo_1
    condition:
  • condition: state
    entity_id: input_boolean.rega_periodo_1_on
    state: ‘on’
    action:
  • repeat:
    count: input_number.rega_num_minutos_1
    sequence:
    - service: script.turn_on_water
  • type: turn_off
    device_id: e611b5ad402485f8aa44d4838d3a1e43
    entity_id: switch.tze200_htnnfasr_ts0601_on_off
    domain: switch
    mode: single

@PRoldao quando publicares código ou logs deves fazê-lo como texto. Depois deves sublinhar o texto que queres transformar em código e clicar no icone </>. Deverá existir um espaço antes e outro depois do bloco de código para que funcione correctamente. O código em Yaml é muito sensível aos espaçamentos e sem o código devidamente formatado não te poderemos ajudar. E nos logs há pormenores que só devidamente formatados se conseguem ver. Além disso, existem regras no fórum que devem ser cumpridas e que podes ler nos nossos Termos do Serviço/Regras e na FAQ.

Vê um exemplo:

Falta saber qual o conteúdo do script.

Caro Jorge,

Desculpa a minha falta de ética. Nem me lembrei da questão do espaçamento porque o problema não é com o yaml. Apenas coloquei para referência. Como foi feito via GUI os espaçamentos estão correctos e não há dúvida aí.
A questão é mesmo como passo uma variável que recolho num input_number para o count do ciclo repeat.
O script faz precisamente o que disse no post. Liga o automatico de rega e espera 55s. Para referência fica abaixo.

alias: Turn On Water
sequence:
  - type: turn_on
    device_id: e611b5ad402485f8aa44d4838d3a1e43
    entity_id: switch.tze200_htnnfasr_ts0601_on_off
    domain: switch
  - delay:
      hours: 0
      minutes: 0
      seconds: 55
      milliseconds: 0
mode: single

Obrigado pela ajuda.

E também a automation

alias: REGA - Liga rega periodo 1
description: ''
trigger:
  - platform: time
    at: input_datetime.rega_periodo_1
condition:
  - condition: state
    entity_id: input_boolean.rega_periodo_1_on
    state: 'on'
action:
  - repeat:
      count: input_number.rega_num_minutos_1
      sequence:
        - service: script.turn_on_water
  - type: turn_off
    device_id: e611b5ad402485f8aa44d4838d3a1e43
    entity_id: switch.tze200_htnnfasr_ts0601_on_off
    domain: switch
mode: single

Eu já deixei as automações em YAML à uns anos porque acho o Node Red mais fácil e flexível mas a tua action manda ligar e logo de seguida desligar. É suposto ser assim?

Manda ligar num ciclo que quero controlado pelo numero de minutos. Só desliga depois de completar o ciclo N vezes, sendo que o N seria ± o número de minutos.
Depois manda desligar porque como o programador da rega faz o auto-off e não manda essa indicação para o HA, o switch fica permanentemente em ON mesmo quando a rega está off. Se forçar a off fico com o estado correcto.
Em tempos já fiz umas experiências com o node-red mas não queria ter mais um software a correr na máquina do HA e as automações têm vindo a melhorar ao longo do tempo que para coisas básicas deixa de justificar o node-red, na minha opinião.

Entretanto fiz mais umas investigações e percebi que temos de passar o parâmetro como um template:
{{ states('input_number.rega_num_minutos_1) }}

Assim já funciona.

Obrigado pela disponibilidade.

1 Like

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


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