Project realized by Evan Galli, Anthony Vasta and Sacha Castillejos
as part of the Fundamentals and challenges of cyber-physical systems, From IoT to cyber-physical systems and Development of cyber-physical systems courses.
This project simulates and monitors forest fires using a distributed cyber-physical system architecture. It collects sensor data from an edge environment, processes it in a fog layer, and visualizes it in the cloud.
Note
Some AI tools, including GitHub Copilot and Google Gemini, were used to help write parts of the code and documentation.
Docker and Docker Compose must be installed on your machine to run the project.
UV is required to run the simulation outside of Docker.
The entire stack can be launched using the main compose file:
docker compose up -d --buildYou might want to start the simulation manually to see the GUI updating in real-time:
docker compose stop simulation && uv --directory src/edge/simulation run main.pyYou can do the same for the propagation service:
docker compose stop propagation && uv --directory src/fog/propagation run main.py
| Service | URL | Description | Credentials |
|---|---|---|---|
| Web Application | http://localhost | Main Dashboard | |
| Redpanda Console | http://localhost:8080 | Kafka/Redpanda Management | |
| MinIO Console | http://localhost:9090 | Storage Management | User: minioadmin, Password: minioadmin123 |
| InfluxDB | http://localhost:8086 | Time Series Database | User: admin, Password: adminpass123 |
The system is divided into three layers:
- Edge:
- Simulation: Simulates environmental sensors (Temperature, Humidity, etc.) and sends data via MQTT.
- Treatment: Receives raw sensor data, applies initial filtering, and forwards it to the fog layer via MQTT.
- Fog:
- Pre-treatment: Rust service to clean and format raw sensor data.
- Propagation: Python service to calculate fire spread risks.
- Cloud:
- GeoJSON Producer: Generates map data for the frontend.
- API: Rust backend serving data.
- Web UI: React application for visualization.
- Languages: Rust, Python (with uv), TypeScript (SolidJS/Bun/Vite)
- Messaging: MQTT (Mosquitto), Kafka (Redpanda)
- Storage: MinIO, InfluxDB
- Infrastructure: Docker
output_edit.mp4
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |







