Utilização de variável em node-red

Bom dia a todos,

Estou aqui a tentar fazer umas configurações para controlar todos os AC cá de casa com uma variável, tem de ser assim, porque nem todos têm a mesma temperatura. Então criei um slider para usar no dashboard:

input_number:
  global_temp:
    name: Temperatura Global
    initial: 22
    min: 15
    max: 25
    step: 1
    mode: slider

Depois criei também a seguinte variável:

var:
  tempvalue:
    friendly_name: "Temperatura Global"
    initial_value: 21

Depois no automations.yaml criei o seguinte:

- alias: "Temperatura Global"
  trigger:
    platform: state
    entity_id: input_number.global_temp
  action:
    - service: var.set
      data:
        entity_id:
          - var.tempvalue
        value: "{{ states.input_number.global_temp.state | int }}"

A variável está a ser atualizada corretamente. Agora precisava de utilizar o valor que a variável tem num flow de node-red, como podem na imagem,onde tenho o valor $number(21) queria utilizar o valor que está na variável.

Obrigado pela vossa ajuda.

Se já tens a “variável” no HA porque complicar se podes ir ler o valor directamente?

Como assim? Esta variável será para definir a temperatura global que quero, mas dependendo da divisão, poderá ter +1 ou -1 grau. no Node-red vai ler do sensor que está na imagem a temperatura real, e depois, se estiver abaixo do valor da variável, então mete o AC a trabalhar.

Mas essa variável não tem o mesmo valor que o input_number do HA?

P.S.: É muito má ideia utilizar o ìnitial: no input_number porque se alterares para outro valor e reiniciares o HA ele vai voltar ao valor definido no initial:.

Sim tem o mesmo valor. Ok vou retirar o initial, tens razão, obrigado.
então posso usar o input_number diretamente no flow? se sim como? Obrigado.

Basta criares um node pool state e de seguida um node function que analise os dados como quiseres.

image

Neste caso leio a temperatura da Sala. Se o valor estiver maior ou igual a 30º mas menos que 35 faz uma coisa, se for superior a 35 faz outra. Poderá ser feito o mesmo com apenas um function com duas saídas em vez dos dois function mas por vezes o “less is more”…

Ok, e onde tens os valores 30 ou 35, basta meter o valor do slider? states.input_number.global_temp.state?

O Node Red não usa esse tipo de templating. O que sai do poll state é um payload com o valor que configuraste no input_number. O que a função faz é ler esse payload (msg.payload) e comparar com os valores que defini.

Sim eu percebi isso, é como tenho. A minha questão é, imagina que os valores 30 ou 35 estavam armazenados na variável, como fazias?

Não foi nada disso que pediste inicialmente nem o que mostraste. Mas nesse caso basta ler esses valores no HA, atribui-los a payloads diferentes e depois na função em vez de 30 e 35 usas msg..xxxxx (conforme o nome que deres aos payloads).

Sempre foi isto que disse desde inicio, “A variável está a ser atualizada corretamente. Agora precisava de utilizar o valor que a variável tem num flow de node-red, como podem na imagem,onde tenho o valor $number(21) queria utilizar o valor que está na variável.” Mas se calhar expliquei-me mal.

Obrigado pela ajuda. Vou testar.

Disseste que tinhas uma variável e que querias utilizar “A variável”. Se tivesses dito “UMA OUTRA variável” eu tinha percebido…

Seja como for a solução é essa que te disse acima.

A funcionar, obrigado Jorge.

1 Like

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


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