Ajuda envio mensagem

Boa noite

Podem dar uma ajuda a um iniciante no NR? :slight_smile:

É possivel criar esta notificação no NR?

- alias: "BW-LT21"
  trigger:
    - platform: state
      entity_id: light.bw_lt21
      from: "unavailable"
  action:
    - service: notify.Telegram
      data:
         message: "BW-LT21 Available"

Pelo que consegui ver o switch tem três estados: on, off e unavailable.
É possivel criar a notificação apenas quando sai do estado “unavailable” idependentemente se passa a on ou off?
Apenas queria a messagem quando fica available novamente, caso contrario vai enviar a msg sempre que fica on ou off

Obrigado
Cumprimentos

Sim, isso é possivél. O que já tentaste?

Consigo enviar mensagem quando o estado é unavailable, on ou off.
O problema é criar a condição para quando sai do unavailable

Para isso podes usar um function node.

image

vou tentar, obrigado

Para saber que saiu de unavailable, tem de guardar o estado anterior. Tem de usar funções com instruções flowset e flowget, devidamente formatas. Só assim comparando com o estado actual consegue saber que saiu desse estado.
Há automações que são mais faceis de implementar em Node Red e outras por HA. Acho que neste caso é mais fácil criar a automaçao no home assistant. Vai dar menos trabalho. Tem mesmo de a criar no node red?

Não tenho de criar no NR mas é uma maneira de aprender NR :grin:

Paulo,

Desde que o motive, tudo bem! Mas porque não aprender Node red a fazer novas automações? Assim não está a duplicar coisas que já tem e aproveita o tempo, que dispende na aprendizagem! Importe o código abaixo para um novo flow no node red. Analise a função Anterior VS Actual. No meu caso eu tenho dois valores anteriores e dois novos, quando um valor “novo” é actualizado, a função vai carregar o valor anterior, compara com o novo, executa uma condição e no final guarda o novo valor.
[{"id":"d25ba615.19ed78","type":"function","z":"7c67bb31.ba4454","name":"Anterior VS Actual","func":"var values = flow.get([\"a_anterior\",\"b_anterior\"])||0;\n//var b_anterior = context.get('b_anterior')||0;\n//var2 - Sensor Porta\n//var1 - Sensor Fechadura\na_anterior = values[0];\nb_anterior = values[1];\nvar a;\nvar b;\n\nswitch(msg.topic){\n //Mudou Fechadura\n case \"var1\":\n a = msg.payload;\n b = b_anterior;\n //context.set('a_anterior',a);\n if (a===\"ON\"&&a_anterior===\"OFF\"){\n msg.payload = \"alarm_disarm\";}\n if (a===\"ON\"&&a_anterior===\"ON\"){\n msg.payload = \"alarm_disarm\";}\n if ((a===\"OFF\")&&(b===\"off\")){\n msg.payload = \"alarm_arm_home\";}\n if ((a===\"OFF\")&&(b===\"on\")){\n msg.payload = \"alarm_arm_away\";}\n flow.set([\"a_anterior\",\"b_anterior\"],[a,b]);\n return msg;\n case \"var2\":\n b = msg.payload;\n a = a_anterior;\n msg.payload = null;\n //context.set('b_anterior',b);\n //if ((a===\"ON\")&&(b===\"on\")){\n // msg.payload = \"Destrancada e aberta\";}\n //if ((a===\"ON\")&&(b===\"off\")){\n // msg.payload = \"Destrancada e fechada\";}\n flow.set([\"a_anterior\",\"b_anterior\"],[a,b]);\n break;\n default:\n msg = null;\n break;\n}\nreturn;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1450,"y":520,"wires":[["6b47c0d3.e624d"]]}]

Pois… tenho de começar a aprender mas com “coisas” mais básicas.

obrigado

Nada disso. Comece com o que precisa. Umas buscas no google e encontra montes de código que depois é só adaptar. Juntamente com o forum vai conseguir!


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


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