Estação meteorológica com ESP8266

Com o clima cada vez mais imprevisível, nunca sabemos se devemos sair de casa com um casaco ou guarda-chuvas, mesmo olhando para a janela e vendo um dia lindo sem nuvens. As vezes, por pura preguiça, não consultamos a previsão do tempo antes de sair de casa, costume que é bem comum em países com climas extremos.

Neste projeto, vou mostrar como acessar informações de clima e tempo diretamente pelo ESP8266, através de uma API, que irá trazer os dados meteorológicos em um formato JSON, que por sua vez será “parseado” para a extração dos dados.

Atenção, este projeto não é para a coleta de dados locais de sensores, e sim da base de dados de um sistema na Internet, podendo ser customizado para qualquer (se estiver na lista de cidades) lugar do mundo. Dá ainda para adicionar a coleta de dados locais para uma comparação ou mesmo monitoramento local, mas não iremos abordar essa parte neste projeto.

Primeiros passos

Para iniciar o projeto, o primeiro passo é conseguir uma API key no site openweathermap.org. A API key permite que você colete os dados do servidor deles, sem custo para até 60 requisições por minuto, mais que o suficiente para uma estação caseira.

Abaixo, segue a tela de onde a API key pode ser copiada:

Screenshot from 2016-05-22 22:28:04

Código

O código abaixo, foi desenvolvido baseado nas bibliotecas JsonTask deverá ser instalada no platformIO.

weather-station.ino

Instalação das bibliotecas

platformio lib install 64

platformio lib install 272

Troque os seguintes valores:

Coloque a chave, pela gerada no site openweathermap.org

Coloque o nome da cidade, sem espaços e acentuação:

 

Atenção! Os dados de temperatura são em unidade Kelvin, sendo necessária a conversão para Celsius. Para converter basta subtrair 273.15 do valor retornado pela API.

 

Se tudo correr bem, os valores do tempo serão “printados” no console da serial, da seguinte forma:

Temp: 22.20

Umidade: 83%

Temperatura Maxima: 26.11

Temperatura Minima: 21.00

Pressao Atm: 1020

Conclusão

O projeto acima, basicamente coleta os dados de um servidor de estações climáticas, espalhados pelo mundo, e disponibiliza para o uso das mais variadas formas, como por exemplo avisar qual a probabilidade de chuva no dia, através de um display LCD. As ações que estes dados podem gerar, são infinitas, até mesmo podemos deixar de irrigar o jardim por saber que, possivelmente irá chover, e assim economizar água.

 

Happy Hacking!

Deixe seu comentário