Função no Node-Red

Pessoal,
Eu estou montando um sistema de alarme onde ele arma sozinho toda vez que as três pessoas estão fora de casa. A função é a seguinte:

if (person1 == ‘not_home’ && person2 == ‘not_home’ && person3 == ‘not_home’) {
msg.payload = 1;
}
else {
msg.payload = 2;
}
return msg;

O problema é que o payload retorna 2 sempre que uma das pessoas sai de casa e não retorna 1 quando os três estão fora.
Onde foi que eu errei?

Olá edersong,

Tenho algumas coisas aqui em casa que fiz para ligar e desligar de forma automatica usando o Node-red. Estão funcionando perfeitamente.
Abaixo seguem algumas imagens contendo o que fiz para automatizar um filtro de dagua, que serve para seu exemplo.

Na imagem abaixo existem 3 triggers que são disparados quando a pessoa sai ou entra em casa, mas somente considero a saida, ou seja, o “not_home” dela. (Olhe a linha que sai da caixa, “true”).
image

image

Em seguida a lógica segue para um node que criei para saber se tem alguém em casa. Isso eu criei usando o subflow. Segue o meu abaixo:

image

Em seguida, caso não tenha ninguém em casa, o fluxo segue para o proximo node que verifica se o filtro está ligado. Caso esteja ligado o fuxo seguirá para o proximo node que executará o desligamento do filtro.

Espero que isso possa te ajudar. Se tiver mais alguma dúvida é só falar que tentarei te ajudar.

Abraços e sucesso.

Obrigado, Jorge!!
Funcionou perfeitamente aqui!!!
Eu só não criei o subflow, pois não encontrei este node aqui, mas fiz os nodes en cascata e funcionou!! :wink:

Para simplificar a etapa do Node Red, pode ser criado um grupo via group.yaml e adicionado todos as entidades que se deseja avaliar a localização, nesse caso somente quando todas entidades não estiverem em casa o status do grupo muda para not_home.

1 curtida

Eu acho que já tentei isso, mas não custa nada tentar novamente!!