A real-time noise monitoring system using ESP32 sensors, Raspberry Pi server, and React web interface.
Get a closer look at our design and workflow on Canva:
Echo-Guard Canva Design
- ESP32 Sensors: Collect noise level data and send via MQTT
- Raspberry Pi Server: Runs MQTT broker and WebSocket server
- React Web UI: Real-time visualization with interactive map
- WebSocket Bridge: Connects MQTT data to web interface
- Raspberry Pi with Python 3
- Node.js and npm for React UI
- ESP32 devices (or use fake simulator)
# Install dependencies
sudo apt update
sudo apt install mosquitto mosquitto-clients python3-pip
# Install Python packages
pip3 install websockets paho-mqtt
# Start MQTT broker
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
# Run WebSocket server
cd Server
python3 fixed_websocket_server.py# Install dependencies
cd mqtt-noise-map-ui
npm install
# Start development server
npm start# Run fake ESP32 simulator
python3 fake_esp32.py --broker <PI_IP_ADDRESS>├── Server/
│ ├── fixed_websocket_server.py # Main WebSocket server
│ ├── config_loader.py # Configuration management
│ └── requirements.txt # Python dependencies
├── mqtt-noise-map-ui/
│ ├── src/
│ │ ├── components/NoiseMap.js # Map visualization
│ │ ├── mqtt/simpleWebSocketService.js # WebSocket client
│ │ └── App.js # Main React app
│ └── package.json # Node.js dependencies
├── ESP32_Noise_Sensor/
│ └── ESP32_Noise_Sensor.ino # Arduino code for ESP32
├── config.ini # System configuration
├── fake_esp32.py # ESP32 simulator for testing
└── test_mqtt_connection.py # Connection testing tool
Edit config.ini to set your Raspberry Pi IP address:
[pi_connection]
pi_ip = 172.20.10.2 # Change to your Pi's IP
mqtt_port = 1883
websocket_port = 9001- ESP32 Sensors → MQTT (port 1883) → Raspberry Pi
- Raspberry Pi → WebSocket (port 9001) → React UI
- React UI displays real-time noise data on interactive map
- ✅ Real-time noise level monitoring
- ✅ Interactive map visualization
- ✅ Multiple sensor support
- ✅ Automatic reconnection
- ✅ Alert notifications for high noise levels
- ✅ Connection status monitoring
python3 test_mqtt_connection.py <PI_IP>Open browser console (F12) to see connection logs.
python3 fake_esp32.py --broker <PI_IP>This project is licensed under the MIT License - see the LICENSE file for details.
![]() Product |
![]() Team |
- Fork the project
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request

