Controlar a hora de acender e apagar de uma lâmpada a partir do HA

O Node-Red (NR) e o HA integram-se muito bem pelo que é possível utilizar o HA para controlar alguns parâmetros nas flows no NR.

Neste exemplo vamos utilizar uma flow de NR que liga e desliga uma lâmpada, sendo a hora de ligar e desligar controladas pela interface do HA. É necessária também a instalação do node Schedex que podem encontrar em https://flows.nodered.org/node/node-red-contrib-schedex

No final iremos ter a seguinte flow:

Home Assistant

Do lado do Home Assistant deverá ser colocado o seguinte nos respectivos ficheiros ou package:

Script:

input_datetime:
####  START
  time_inicio_modo_nocturno_cozinha:
    name: 'Inicio Modo Nocturno'
    has_date: false
    has_time: true
#### STOP
  time_fim_modo_nocturno_cozinha:
    name: 'Fim Modo Nocturno'
    has_date: false
    has_time: true

input_datetime

Input Boolean:

input_boolean:
#### MANUAL MODE
  lp_cozinha_manual:
    name: Luzes em Manual
    icon: mdi:toggle-switch 

input_boolean0

Relativamente à lâmpada podem utilizar uma que já tenham configurada no vosso HA. Não esqueçam de incluir os input_datetime e input_boolean na vossa interface do HA (com Lovelace é muito fácil) e por fim reiniciar o sistema.

Node-Red

O node Schedex é bastante flexível e aceita vários parâmetros à entrada para configuração, podendo ser controlados externamente o parâmetros para ligar, desligar, offset on, offset off, on time, off time entre muitos outros.

Comecem por arrastar os nodes para criar a vossa flow. Neste caso precisam de 2 Poll State, 2 Template, 1 Trigger: State, 1 Schedex e 1 Call Service. Liguem-nos conforme está na primeira imagem. O node Schedex irá pedir autorização para saber a vossa localização para poder saber as horas no local e calcular as horas do nascer e pôr-do-sol.

Vamos então iniciar a configuração dos nodes!

  • Poll State Night Mode ON

  • Poll State Night Mode OFF

  • Template Set Night Mode ON

  • Template Set Night Mode OFF

  • Trigger: State Manual Override

  • Schedex

  • Call Service

Podem copiar toda a flow aqui:

Descrição

A flow é muito simples e fácil de explicar. No HA têm agora dois input_datetime onde podem introduzir a hore de ligar e desligar da luz e também um input_boolean para poderem ligar e desligar as luzes de forma manual sem terem de esperar pela hora de ligar (ou desligar). Ao alterarem a hora de inicio ou fim no HA ao fim de 10 segundos (podem alterar este valor) a alteração passa para o NR e como a opção “Output On Changed” está activa nos nodes Poll State é de imediato injectada no Schedex.

Quando o Schedex recebe um comando manual tem uma particularidade, o comando recebido não é “eterno”. Ou seja, se estiver a luz ligada e vocês quiserem desligar em manual a luz não vai ficar sempre desligada, quando chegar a próxima hora de ligar vai ignorar o comando manual e ligar a luz.

Os nodes Template usam os valores recebidos pelos input_datetime e formatam esse valor para alimentar a entrada do Schedex com a hora de ligar e desligar, enquanto o Trigger: State usa o valor do input_boolean para forçar o Schedex a ligar/desligar fora das horas configuradas.

O node Schedex utiliza os valores introduzidos pelos nodes Template para enviar o sinal de ligar ou desligar ao node Call Service, qua não é mais do que um simples “interruptor”.

Como vêm o NR não é nenhum bicho-de-sete-cabeças e com o tempo torna-se bastante fácil de utilizar.

Se usam o NR e têm flows para o HA partilhem-nos connosco na Categoria Node-Red!

2 Curtiram

Este tópico foi automaticamente fechado 90 dias após a última resposta. Novas respostas não são permitidas.

No input_datetime no yaml defeni um liga e desliga para as 19h on e 07h off.
Mas ao alterar depois estes valores no Lovelace, ao reiniciar o HA não deveria ficar com essas alterações guardadas?

E sobre o input_boolean, ao desliga-lo também deveria desligar logo a luz?

É o próprio HA que gere a alteração dos valores (e não o Lovelace, que é apenas a parte gráfica do HA) e os deve manter entre reboots, excepto se utilizares como está no exemplo acima com o initial: definido. Se apagares as duas linhas que dizem ìnitial: o HA vai manter os valores que definires.

No exemplo acima, o initial: estava lá porque na altura o HA não geria esses valores e quando reiniciavas passava sempre para 00:00.

Sim, o input_boolean liga e desliga as luzes.

P.S.: Vou editar o exemplo para evitar confusão

Alguma coisa que não está correcta… Agora sem o “initial” ao reiniciar o HA já guarda os valores pelo lovelace, mas ele já não desliga a luz(switch) pela hora marcada.
E continuo com o input_boolean a só ligar a luz.

Vi agora que se no “call service” escolher “toogle” da vez de “turn on” switch já liga e desliga corretamente pelo hora esolhida.

Mais uma vez… o Lovelace não tem nada a ver com o assunto, isso é gerido pelo HA!

yep, erro no tutorial… a opção certa é toggle.

1 Curtiu

Olá Jorge, antes de mais: nice tutorial! Dá mesmo muito jeito. Obrigado.
Agora, com o toggle, se a luz já estiver acesa quando o fluxo começa, vai apagar de noite e depois ligar de manhã :slight_smile: tem de haver uma condição algures…

Não, se a luz estiver ligada vai mantê-la ligada até serem horas de desligar. Eu agora uso uma versão diferente deste flow nas minhas automações, se tiver tempo ainda hoje coloco aqui um novo tutorial.

Ok, era optimo.
Obrigado

1 Curtiu

Novo tutorial aqui!

Sou iniciante, alguém poderia me ajudar ?
Consegui criar este fluxo porém gostaria também de enviar notificações para o meu Telegram quando as luzes forem acessas/apagadas.

Nesse caso, o passo seguinte é ler o tutorial sobre como enviar mensagem para o Telegram pelo NR.

Oi Jorge, não sei se expliquei muito bem. Eu sei enviar mensagens Telegram pelo NR mas gostaria de ajuda para saber neste fluxo apresentado onde entrará o nó.

Entra depois do node que apaga/acende a luz.

Meu fluxo está da seguinte forma

Entendo que o ultimo node “Telegram” deverá ser enviada mensagem. Entretanto gostaria que fossem 2 mensagens: 1 quando se apaga, 1 quando se acende. Da forma que está apenas 1 mensagem é enviada, com um texto generalizado para ambas as funções.

Nesse caso tens isso mal feito porque em vez do toggle tens de ter ON e OFF separado. A seguir ao Schedex usas um switch node para ler se a ordem e para ligar ou desligar e ligas as saídas correspondentes a ON e OFF.

Aqui, acho que percebi.

E o switch vai desta maneira? True or False ?
]

O que colocas aí é o que pode sair do node Schedex (e que podes ver usando um debug node na saida do Schedex) e normalmente é 0 ou 1.

image

1 Curtiu

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


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