Tags

, , , , ,

Neste post será mostrada uma forma bem simples de, através do Arduino, acessar informações sobre o clima (Temperatura Atual, Sensação térmica, Velocidade do Vento, Preciptação, Umidade Relativa do Ar…) em diversas localidades do mundo através do acesso a base de dados do site de informações climáticas Weather Underground.

O hardware a ser utilizado é um Arduino MEGA 2560 R3 + shield Ethernet W5100.

O site Weather Underground disponibiliza uma API para acesso as informações climáticas no formato XML ou JSON (neste exemplo utilizaremos JSON).

Existem vários planos de acesso às informações climáticas, inclusive um FREE (com algumas limitações sobre a quantidade de requisições por minuto e valor máximo de requisições).
Veja mais detalhes sobre os planos neste link.

Neste post utilizaremos o plano FREE. Para tanto, foi necessário criar uma KEY de acesso ao site conforme orientações encontradas no link acima.

Existem vários tipos/modalidades de informações disponibilizadas pelo site, tais como:
– Informações sobre Condições climáticas;
– Informações sobre Previsão do Tempo;
– Informações sobre Furacões;
– E muitas outras.

Neste post será mostrado um exemplo de acesso às informações sobre as “Condições Climáticas” de uma cidade brasileira. Mas o mesmo raciocínio pode ser utilizado para obter outros tipos de informações de diversas outras localidades (do mundo!).

Basicamente, o sketch desenvolvido foi baseado no exemplo oficial Web Client da biblioteca Ethernet.

Como funciona?

É feita uma conexão ao site do servidor (api.wunderground.com), onde são passados alguns dados para a consulta das informações.
Esses dados são formatados conforme as regras fornecidas pela API.
Veja neste link as possibilidades: API Docs.

A resposta do servidor (formato JSON) contém inúmeras informações. Essa resposta é então armazenada em uma variável string e passada como parâmetro para a função principal do programa: getValuesFromKey().

A função getValuesFromKey() recebe como parâmetros duas strings e retorna uma string com a informação solicitada.

A primeira string é a própria resposta do site previamente tratada na rotina loop(). Já a segunda string (denominada sKey) refere-se a informação que se deseja obter dentre as diversas contidas na resposta do servidor. Elas tem um formato bem definido estabelecido na Documentação da API (API Docs).

Exemplos de uso:
– Deseja-se obter a Temperatura Atual em graus ºC do local:
sKey = "temp_c";

– Deseja-se obter a Umidade Relativa no local:
sKey = "relative_humidity";

Assim, qualquer valor de qualquer variável disponível na resposta oriunda do servidor pode ser obtido através da função getValuesFromKey().

Com isso, pode-se fazer muita coisa. Como por exemplo: disponibilizar as informações sobre o clima em um display LCD. Acionar um LED/Relé caso a temperatura atual ou sensação térmica exceda um valor. Criar um Gadget que baseado na previsão do tempo para a próxima hora mude de cor conforme a previsão e etc. Aplicações não faltam!

Vejam no link abaixo o sketch completo:
ACT_WEATHER

OBS.: Tentei utilizar as bibliotecas aJson e restClient mas elas não funcionaram bem. Acredito que tenha sido pelo fato da resposta do servidor ser maior do que elas podem manipular. Caso alguém queira tentar e consiga, me avise!

USEM SEM MODERAÇÃO!!!

Advertisements