Node-Red – Blocos essenciais & clima

Node-Red – Blocos essenciais & clima

Node-RED Essentials Blocs

O Node-RED disponibiliza alguns blocos básicos que executam operações recorrentes durante sua programação. A seguir explicaremos os três blocos mais usuais: switch, change e range.

Bloco Switch

O bloco switch permite rotear uma mensagem de entrada baseado em condições pré-estabelecidas em suas propriedades. Na prática, quando uma mensagem chega no bloco switch, ela é barrada ou encaminhada para uma das saídas do bloco em função de um ou vários testes pré-estabelecidos pelo usuário.

A figura a seguir apresenta as opções do node switch. O parâmetro Property define qual chave da msg que chega será testada. Na seção abaixo é possível definir uma ou várias regras de teste para esta chave. Cada teste criado no botão + add causa o aparecimento de uma nova saída para o bloco. Quando a chave testada satisfaz a condição estabelecida, a mensagem é então replicada naquela saída. Perceba que se a chave atender a mais de uma condição, ela será redirecionada simultâneamente para todas as saídas onde sua condição é válida.

Bloco Change

O bloco change permite manipular a msg que chega a ele através de regras que são definidas em seus parâmetros.

Há quatro tipos possíveis de regras:

  • Set: Define o valor para uma dada chave. Se esta chave ainda não existir, ela será criada automaticamente.
  • Change: Procura por uma substring em uma string e troca-a para um valor desejado. Funciona similar à funcionalidade replace em editores de programação comuns.
  • Delete: Deleta completamente uma chave e seu valor de msg.
  • Move: Copia o valor de uma mensagem para uma nova chave e deleta a antiga.
Atenção

Cada regra dentro do bloco change é executada em sequência. Como efeito, se uma chave for alterada em uma regra, a msg já estará alterada no momento da execução da próxima regra. Por exemplo, se uma chave msg.payload for movida para msg.payload.tempc, a próxima regra já deverá utilizar o valor da nova chave msg.payload.tempc para realizar alguma operação que deseje.

Bloco Range

O bloco range permite mapear uma faixa numérica para outra faixa desejada. Em essência, este bloco aplica a transformação linear ao número de entrada de maneira que a faixa de valores de saída fique de acordo com o configurado em seus parâmetros. Por exemplo, é possível remapear um número aleatório-base de sua faixa padrão para uma outra faixa caso deseje representá-lo em porcentagem.

O bloco possui quatro propriedades distintas que lidam de formas diferentes com os valores que chegam e que estão fora da faixa pré-estabelecida:

  • Scale the message property: Aplica o mapeamento linear de forma plena, de modo que se uma entrada estiver fora da faixa, uma saída também será gerada também fora da faixa.
  • Scale and limit to the target range: Valores de saída que estiverem para aquém ou além da faixa de saída pré-estabelecida serão "cortados" para o valor limite da faixa.
  • Scale and wrap within the target range: Se o valor de saída estiver além do limite, ele será mapeado de forma repetida para dentro do valor válido. É muito útil no mapeameto de ângulos (e.g., manter um ângulo dentro de ).
  • Scale, but drop msg if outside input range: Um valor de saída que estiver fora da faixa pré-estabelecida será simplesmente descartado.

Delay

O bloco delay permite aplicar um tempo de atraso à msg que chega ou limitar a taxa de mensagens que são repassadas por unidade de tempo.

Para a funcionalidade de tempo de atraso, há três maneiras de definí-lo:

  • Fixed delay: Permite definir um tempo fixo de atraso.
  • Random delay: Aplica um delay aleatório dentro de uma faixa de tempo pré-estabelecida.
  • Override delay with msg.delay: Aplica um atraso pré-estabelecido à mensagem; porém, se a mensagem tiver definida uma chave msg.delay com um valor numérico válido, este valor será o tempo de delay considerado para a replicação.

Clima

Como citado anteriormente, o Node-RED possui uma grande biblioteca de módulos disponibilizados pela comunidade e de fácil instalação no ambiente de programação. É possível consultar os módulos disponíveis no site a seguir:

Library – Node-RED

Catálogo de módulos disponíveis pela comunidade para o Node-RED.

Para experimentar esta funcionalidade de buscar e instalar módulos, nesta seção iremos trabalhar com o clima através de um módulo disponibilizado pela comunidade.

Instalando módulos Node-RED

O OpenWeather é uma plataforma online que disponibiliza dados meteorológicos de diversas regiões do mundo de forma gratuita. Além disto, o site disponibiliza um endpoint de API que permite obter estes dados em aplicações terceiras. A forma mais fácil de se obter estes dados no Node-RED é instalando o módulo específico do OpenWeather.

Para isto, no Node-RED, clique no menu geral (três linhas horizontais na barra superior) e depois em Manage Pallete. Na janela que abrir, clique na aba Install e procure pelo módulo node-red-node-openweathermap.

Ao encontrá-lo, clique em Install e pronto! O módulo está instalado e pronto para ser utilizado. Agora, é possível encontrá-lo na barra de nós à esquerda da interface (role até o final para vê-lo):

OpenWeatherMap

O módulo node-red-node-openweathermap disponibiliza o node openweathermap que permite obter diversos dados de clima para uma dada localização geográfica.

Ao abrir as propriedades deste nó, perceba que será necessário inserir uma chave de API. Você pode obtê-la no próprio site OpenWeather. Crie uma conta no site e, depois de logado, clique no seu nome de usuário na parte direita da barra superior e depois em My API keys. Nesta aba é possível criar chaves de API que podem ser usadas no node.

Após inserir a chave de API no módulo, insira o nome da cidade/país desejado, ou as coordenadas geográficas da região que se deseja monitorar. Se configurado corretamente, o node irá entregar uma mensagem com as informações de tempo da seguinte maneira:

{
    "id":803,
    "weather":"Clouds",
    "detail":"broken clouds",
    "icon":"04d",
    "tempk":294,
    "tempc":20.8,
    "temp_maxc":20.8,
    "temp_minc":20.8,
    "humidity":89,
    "pressure":1011,
    "maxtemp":294,
    "mintemp":294,
    "windspeed":3.37,
    "winddirection":135,
    "location":"Moeda",
    "sunrise":1733904576,
    "sunset":1733952598,
    "clouds":60,
    "description":"The weather in Moeda at coordinates: -20.3331, -44.0525 is Clouds (broken clouds)."
}
Problema 1·Título do problema

Implemente uma aplicação que monitore o clima de seis cidades diferentes e gere alertas em função da temperatura.

As cidades monitoradas são:

  • Ouro Branco (Ouro Branco, BR)
  • Rio de Janeiro (Rio de Janeiro, BR)
  • Ushuaia (Ushuaia, AR)
  • Moscou (Moscow, RU)
  • Pequin (Beijing, CN)
  • Cairo (Cairo, EG)

As condições de disparo dos alertas são:

  • Temperaturas abaixo de 15°C.
  • Temperaturas acima de 25°C.

Quando uma situação de alerta for detectada, deve-se esperar um tempo de 1 segundo, e então deverá aparecer a seguinte mensagem no debug: "Esta frio em [Nome Da Cidade], a temperatura atual é [Valor Graus Celsius]°C/ [Valor em Graus Fahrenheit]°F". Quando estiver quente, a mensagem deverá ser "Está quente em...". Note que os valores entre colchetes devem ser substituídos por valores de variáveis obtidos do OpenWeather.

Para poupar memória, tão logo uma mensagem for recebida do OpenWeather, ela deve ser tratada para descartar todos as chaves/valores que não forem úteis para a aplicação e manter somente as que forem.

  • O uso de Template Strings facilita na criação da mensagem de alerta.

  • Minha chave API: 14e462b06102521e28815ed91bb18343

Autor: FILIPE A. S. ROCHA

Publicado em 12 de maio de 2026· Atualizado em 26 de maio de 2026