- Merged admin.cljs and sensors.cljs into core.cljs to consolidate UI logic - Added WiFi network management interface with active/inactive status indicators - Improved admin panel with async status checking and visual feedback - Updated shadow-cljs config to use port 3000 and simplified mobile build - Enhanced CSS with utility layer for badge-error class
PMME - Particulate Matter Monitoring Ecosystem
Overview
A complete IoT solution for monitoring air quality using PM2.5 sensors, built with Rust across embedded, cloud, and mobile platforms.
Architecture Overview
The PMME system consists of four main components working together to provide real-time air quality monitoring:
[ESP32 Device] --WiFi--> [Cloud Server] <--HTTP--> [Mobile App] | | [Admin Panel] <--WiFi--> [PostgreSQL DB]
Components
🔧 ESP32 Device (pmme-device/rust-version/
)
- Platform: ESP32 microcontroller running esp-idf with Rust
- Sensors: PM2.5 particulate matter sensor (PMS7003)
- Display: SSD1306 OLED for local readings
- Connectivity: WiFi for data transmission to cloud
-
Features:
- Real-time sensor data collection
- Local display of current readings
- Automatic cloud data transmission
☁️ Cloud Server (pmme-cloud/
)
- Framework: Rocket web framework (Rust)
- Database: PostgreSQL (planned integration)
-
Purpose:
- Receive and store sensor data from ESP32 devices
- Provide REST API for mobile app data access
- Future: Historical data analysis and graphing
📱 Mobile App (pmme-mobile/
)
- Framework: Tauri (Rust + Web frontend)
- Platform: Cross-platform mobile application
-
Features:
- Connect to cloud server via HTTP
- Display current PM2.5 readings
- Future: Historical data visualization and graphs
- Future: Potential direct ESP32 admin panel access
🌐 Web UI & Admin Panel (pmme-ui/
)
- Framework: ClojureScript with Shadow CLJS
-
Purpose:
- Data visualization interface
- Admin panel for ESP32 device management and provisioning
Getting Started
ESP32 Device Setup
cd pmme-device/rust-version/
# Set up ESP-IDF environment
./export-esp.sh
cargo build
cargo run
Cloud Server
cd pmme-cloud/
cargo run
Mobile App
cd pmme-mobile/
npm install
npm run tauri dev
Web UI
cd pmme-ui/
npm install
npm run dev
Future Features
- PostgreSQL Integration: Historical data storage and analysis
- Data Visualization: Graphs and trends in mobile app
- Multi-sensor Support: Expansion beyond PM2.5 to other environmental sensors
- ESP32 HTTP Server: Device-hosted admin interface
Development Notes
- The project previously included a C version implementation which has been deprecated in favor of the Rust implementation
- The system is designed to be scalable for multiple ESP32 devices reporting to a single cloud instance
Tech Stack
- Embedded: Rust + esp-idf
- Backend: Rust + Rocket + PostgreSQL
- Mobile: Rust + Tauri
- Web/Admin: ClojureScript + Shadow CLJS
Description
Languages
C
71.1%
Rust
15.4%
Clojure
6.7%
Kotlin
5.6%
CMake
0.4%
Other
0.8%