Node-RED #3: Receba alertas climáticos pelo WhatsApp
Faça um sistema para alertas climáticos utilizando o Node-RED e receba os avisos diretamente em seu WhatsApp.
Por Mário Pessanha | 09 de janeiro de 2023
Esta publicação faz parte de uma sequência de publicações onde aprenderemos sobre a ferramenta Node-RED, que utiliza de programação visual para realizar as mais diversas tarefas, falamos mais sobre isso na publicação anterior que você pode acompanhar clicando no link.
Sumário
Introdução
Neste exemplo faremos um flow capaz de monitorar o clima na cidade a sua escolha e a partir dos dados climáticos emitir alertas na sua saída, dentre as várias opções de saída, utilizaremos como exemplo mensagens automáticas através do WhatsApp.
Para isso serão necessários:
– Node de clima “openweathermap” que busca os dados do openweathermap.org
– Node de função para checagem do clima especificado
– Node do WhatsApp para enviar uma mensagem quando o clima for o especificado
Acessando o serviço do Open Weather Map
Primeiramente precisamos uma chave API no OpenWeatherMap. OpenWeatherMap oferece um excelente serviço que disponibiliza informações climáticas de vários locais do mundo. Acessaremos https://openweathermap.org/appid e seguiremos as instruções.
Clique no “here” conforme a imagem acima para realizar o cadastro no site. E preencha o formulário a seguir e depois confirme em seu e-mail.
Após feito o cadastro, entre no seu perfil e selecione a opção “My API keys” e copie a chave que fica dentro do campo “Key”.
Adicionando novos nodes
No Node-RED adicionaremos o node do WeatherMap, para adicionar esse ou qualquer outro node, basta localizar na barra superior da interface do Node-RED o menu de três barras e selecionar a opção “Manage pallete” para abrir a aba de busca de nodes.
Na tela “Pallete” que acabamos de abrir, selecione a aba “Install’ e digite openweathermap no campo de busca “search modules”. Identifique o node “node-red-node-openweathermap”, clique em “install” e confirme a instalação.
Criando os Flows de alerta de clima
Agora é possível localizar o node adicionado no painel esquerdo. Em um novo flow arraste e solte o node “openweathermap in” com um duplo clique no node a sua tela de edição aparece e nela colaremos a chave API que copiamos anteriormente e faça as configurações, escolhendo a língua, clima atual ou previsão para 5 dias, país e cidade. Clique em “Done” para confirmar as configurações.
Para conferir o progresso até aqui, basta conectar o openweathermap node a um debug node e clicar em “Deploy”, se tudo ocorrer bem o msg.payload apresentará o objeto JSON parecido com os dados a seguir.
{
“id”:800,
“weather”:”Clear”,
“detail”:”céu limpo”,
“icon”:”01d”,
“tempk”:302.18,
“tempc”:29,
“temp_maxc”:29,
“temp_minc”:29,
“humidity”:54,
“pressure”:1012,
“maxtemp”:302.18,
“mintemp”:302.18,
“windspeed”:4.12,
“winddirection”:50,
“location”:”Campos dos Goytacazes”,
“sunrise”:1672733205,
“sunset”:1672781521,
“clouds”:0,
“description”:”The weather in Campos dos Goytacazes at coordinates: -21.75, -41.3 is Clear (céu limpo).”
}
Código
1 – msg.payload do node openweathermap em formato JSON
Como pode perceber, o node entrega várias informações sobre o clima do local escolhido. Neste exemplo utilizaremos só o campo “weather” que diz se o céu está limpo ou com chuva.
Para isso será necessário utilizar um function node, arraste e solte um do painel da direita dentro do flow e conecte a saído do openweathermap node na entra do function node e dê um duplo clique no function node.
Na aba “On Message” cole o seguinte código:
if (msg.payload.weather === “Clear”)
{
msg.payload = “Céu
limpo hoje”
return
msg;
}
return null;
Código 2 – Function node “Se Tempo Limpo”
O código em javascript acima verifica se o conteúdo weather referente ao clima é igual a palavra “Clear”, o que significa que o tempo está limpo. Se a verificação for verdadeira, o conteúdo do msg.playload passa a ser a frase: “Céu limpo hoje”, se a verificação for falsa o código retorna uma mensagem nula. O Node-RED ignora mensagens nulas.
Recebendo seu alerta climático no whatsapp
Agora você poderá fazer várias coisas, por exemplo ligar a mensagem a um node de e-mail, twitter e outros. Neste tutorial utilizaremos o WhatsApp como forma de receber os alertas criados. Para isso é necessário que antes de instalar o WhatsApp node você envie uma mensagem por WhatsApp para o número do node através do WhatsApp que você deseja receber os alertas. Basta enviar a mensagem “I allow callmebot to send me messages” para o número +34644537849 autorizando bot para o envio de mensagens, após alguns minutos você receberá a chave API para utilizar no node do WhatsApp.
O whatsapp node, “node-red-contrib-whatsapp-cmb” deverá ser instalado da mesma forma que o openweathermap node.
Arraste e solte o Send Message node do WhatsApp no flow, de um duplo clique para configurar. É necessário criar um conta primeiro clicando no lápis a direita do campo account. Insira o nome, o número do WhatsApp que vai receber os alertas com o código do país, seguido pelo DDD, exemplo: +55 11 000000000 e por fim a sua chave API recebida pelo WhatsApp. Após concluída a conta do node, clique em Update e mude o tipo da mensagem para msg.payload, clique em Deploy e aguarde algum segundos a chegada da mensagem do bot em seu WhatsApp.
Pronto! Fizemos nosso primeiro sistema de alerta utilizando Node-RED. Caso queira interromper as mensagens enquanto trabalha em funcionalidades diferentes, basta enviar o comando Stop para o bot através do próprio WhatsApp, ou desconectar/deletar o WhatsApp node e clicar em “Deploy” ou simplesmente encerrar o Node-RED em sua máquina.
Conclusão
Começamos a nos aprofundar nas ferramentas e possibilidades proporcionadas pelo Node-RED voltadas para IoT. Aprendemos a receber uma entrada de dados através de serviços públicos, a instalar novos nodes e a fazer com que os dados recebidos sejam manipulados e então levados ao mundo real.
Referência: