Autonomous Weather Station - Baccalaureate Project
This project consists in creating a weather station capable of measuring environmental data in real-time and uploading it to a server using an ESP8266 and a Raspberry Pi.




Main objectives:
- Real-time monitoring of temperature, humidity, luminosity, gas, rainfall.
- Sound and video capture in real time + storage
- Data transmission via WiFi to a Raspberry Pi server.
- Grafana dashboard for HTTPS data visualization.
- Autonomous power via solar panels and batteries.
Used Components:
- ESP8266MOD (WiFi-enabled microcontroller)
- Raspberry Pi 5 (central server)
- SHT31 (temperature & humidity sensor)
- ATH21 (CO2 sensor)
- BH1750 (luminosity sensor)
- SEN0575 (rainfall sensor)
- ESP32-CAM (esp32-cam module)
Software Stack:
- Python 3.x
- Arduino IDE with ESP8266 libraries
- Wireguard, Mosquitto, Node-Red, InfluxDB, Grafana
- Raspberry Pi OS as base system
- Let's Encrypt certificates
Project Context:
This project was carried out as part of our baccalaureate in STI2D (Sciences and Technologies of Industry and Sustainable Development). The aim was to create an autonomous weather station capable of measuring environmental data in real time and transmitting it to a server using an ESP8266 and a Raspberry Pi.
The station is located on the Ile Plate, a nature reserve in the 7 islands archipelago, and is powered by solar panels and batteries to ensure its autonomy. The data collected is sent to a central server via WiFi, then transmitted to a second server for storage and visualization on a Grafana dashboard.

But, how it works:
- The ESP8266 collects data from sensors and builds a JSON frame in order to retrive the sensor data to the central server : Raspberry Pi 5.
- After that, the ESP going to connect to the RaspAP and send on an API (via Flask) the data (Wifi Communication).
- Then, the central going to save data and create a link between the central server and the remote server via an encrypted tunnel (with wireguard) and transmit data securely to the second server.
- Therefore, the second server going to store data in short-term database (InfluxDB). To do that, the second server have to receive the environmental data and create a connection to the node-red server (via mosquitto) and link with InfluxDB.
- After data storage, InfluxDB communicates with Grafana and retransmit in real time the data to the dashboard.
So, this gives :
Sensors data -> sensor microcontroller (ESP8266) -> Central Server (Raspberry Pi 5) -> Storage Server (Wireguard) -> InfluxDB (Mosquitto & Node-Red) -> Grafana (Dashboard)
Furthermore, the system is energy-autonomous thanks to solar panels charging a battery which powers the station.
Prototype (with camera system):

For Camera and Sound system:
We had an ESP32-CAM in our possession, so we decided (in line with the specifications) to set up a live streaming system. We had to set up a proxy server and ensure security with SSL certificates and HTTPS transmission.
To find out how we set up this system, you can strong read the documentation at the end of the page, which describes all the installations we carried out.
But, for the sound system, we didn't have enough time to do that, so it's up to you now!
Documentation Preview:
Your device has too small a screen to display the PDF directly on the page.
So, to display it, you need to download the document: Download Documentation
Repository access:
This project is hosted on GitHub (under an MIT license).
To view the repository, please visit our GitHub page.