📟 pmme-device: Add README and export path script

This commit is contained in:
Joseph Ferano 2025-06-14 19:31:29 +07:00
parent 8ee32a8949
commit 8bd69dce67
2 changed files with 113 additions and 0 deletions

111
README.org Normal file
View File

@ -0,0 +1,111 @@
#+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

View File

@ -0,0 +1,2 @@
export PATH="/home/joe/.local/share/rustup/toolchains/esp/xtensa-esp-elf/esp-14.2.0_20240906/xtensa-esp-elf/bin:$PATH"
export LIBCLANG_PATH="/home/joe/.local/share/rustup/toolchains/esp/xtensa-esp32-elf-clang/esp-19.1.2_20250225/esp-clang/lib"