#+TITLE: PMME - Particulate Matter Monitoring Ecosystem #+OPTIONS: toc:nil #+AUTHOR: #+DATE: * 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: #+BEGIN_EXAMPLE [ESP32 Device] --WiFi--> [Cloud Server] <--HTTP--> [Mobile App] | | [Admin Panel] <--WiFi--> [PostgreSQL DB] #+END_EXAMPLE * 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 #+BEGIN_SRC bash cd pmme-device/rust-version/ # Set up ESP-IDF environment ./export-esp.sh cargo build cargo run #+END_SRC ** Cloud Server #+BEGIN_SRC bash cd pmme-cloud/ cargo run #+END_SRC ** Mobile App #+BEGIN_SRC bash cd pmme-mobile/ npm install npm run tauri dev #+END_SRC ** Web UI #+BEGIN_SRC bash cd pmme-ui/ npm install npm run dev #+END_SRC * 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