The Relicans

Cover image for Weather Observer
Bruno Lopes
Bruno Lopes

Posted on

Weather Observer

What I built

I built a Weather Observer App, that is includes:

  • An Arduino Weather Station that collects, for instance, temperature, humidity, and atmospheric pressure data.
  • A Raspberry Pi Weather Base Station that receives data from Arduino Weather Station, stores the data on an SQLite database and exposes a RESP API written in Flask.
  • An Weather Observer Dashboard written in HTML5, CSS3, and Javascript that shows the data stored by the Raspberry Pi Weather Base Station consumed through the exposed REST API.

With these three components it's possible to observe the weather conditions of remote places (you can build as many Arduino Station as you want and install them anywhere, making it possible to cover large areas) and consequently monitor climate changes on these environments.

Category Submission:

Science and Observation

App Link

It's possible use the Weather Dashboard in the following

I used a ngrok tunnel to expose my Raspberry Pi to the Web, and sometimes it's necessary to change the link above. When this happens, this text and the project’s github repository will be both updated).


Arduino Project - Overview

Raspberry Pi Project - Overview

Dashboard Project - Overview

New relic Dashboard


In Brazil we have a big problem with climate changes caused by human interference on the environment. Thus, it's necessary to observe these changes so it can be possible to act in the environment in order to mitigate the climate problems.

Having this problem in mind i've built a weather station using a Arduino, Raspberry Pi, and pieces of software that allows us to monitor the temperature, humidity, and atmospheric pressure of the environment.

With this project it's possible to cover a wide area using as many Arduino Weather stations as you can. The collected data will be send to the Raspberry PI Weather Base Station through a NRF24l01 transceiver radio (it's possible to make a mesh network to create a Wireless Sensor Network with this transceiver to cover huge areas).

The Raspberry Pi stores the data on an SQLIte database and expose these data through REST API written in Flask microframework. The New Relic solution was used on Raspberry Pi to monitor the REST API performance and some hardware resources too.

A dashboard application was written in HTML5, CSS3, and Javascript to show the collected data to the user. The dashboard displays the last obtained values of temperature, humidity, atmospheric pressure and altitude (calculated using atmospheric pressure reading) data and also a chart with the last 20 readings on the REST API.

It's possible see a running dashboard using this link

Link to Source Code

The app is divided in three componets. The links to Github repos is bellow:

Permissive License

All three projects are under the MIT license. You can read the license text at:


I'm a 35 years computer scientist that teach computer programming at Fortaleza University, located um Ceará State, northeast of Brazil.

There are many places in Brazil where monitoring weather is hard, like the Amazon rainforst or the northeast "Sertão" (it's a poor region known for it's dry and short on rain weather, just like the Australian outback), rivers, etc. In these regions, human intervention are provoking climate change. Over the years, the average temperature on these regions are increasing, making weather changing monitoring solutions necessary.

Thus, this application was designed to create a climate monitoring solution where anyone can assemble, view and share the collected data.

How I built it

This project was built using some hardware (Arduino, Raspberry Pi, sensors and displays) to collect environmental data. The hardware pieces were then "glued together" using C++ code for Arduino, Python 3 for Raspberry Pi and HTML, CSS and Javascript for the Dashboard.

New Relic's solution was used to monitor Raspberry Pi performance since Raspberry Pi is responsible by:

  • Receive data from Arduino Weather Station;
  • Store these data on SQLite database;
  • Run a REST API built in Flask microframework.

Since Raspberry Pi is doing a lot of work it's necessary to keep it's performance under constant check. The New Relic solution show us how long it takes for Python 3 to process a request, how SQLite behaves during a request. All that while show the usage of Raspberry Pi, the average requests per seconds and also other interesting and important performance indicators.

Additional Resources/Info

A short youtube video about the application

Discussion (0)