diff --git a/README.md b/README.md index e69de29bb..99598bb19 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,126 @@ +# TCKRTUIYO - Rainfall Station RTU Web Interface + +A modern web-based interface for a Base Station/Real-Time Unit (RTU) rainfall monitoring system, designed for a 7" capacitive touchscreen display (1024x600). The system monitors and logs rainfall and related sensors, transmits data to a server, and provides both a kiosk-mode local display and a full HD remote interface. + +## Features + +### Current (Phase 1-2 Complete) +- **Dashboard** - Real-time rainfall readings (Today, Hourly, MAR Accumulated, Yearly Accumulated) +- **Voltage Monitoring** - Solar and battery voltage with status indicators (HIGH/NORMAL/LOW) +- **Status Display** - Date/time, station ID, communication status, software version +- **Real-time Updates** - Auto-refresh via Socket.IO +- **Settings** - Station info, date/time, network, ADC channels, sensor thresholds +- **Calibration** - Live ADC readings (4 channels), rainfall counter reset +- **File Management** - View, navigate, delete CSV files; generate tidEDA formatted files + +### Coming Soon (Phase 3-4) +- Network transmission (FTP, SFTP, SCP, WebDAV) +- Remote HD access (port 9090) with authentication + +## Hardware + +- **Primary**: Raspberry Pi Zero 2 W +- **Alternative**: Raspberry Pi 3B +- **Display**: 7-inch capacitive touchscreen (1024x600) + +## Tech Stack + +- **Backend**: Flask + Flask-SocketIO +- **Frontend**: Bootstrap 5.3, Socket.IO Client +- **Python**: 3.x + +## Getting Started + +### Prerequisites + +```bash +# Install Python dependencies +pip install -r requirements.txt +``` + +### Running the Application + +```bash +# Start the Flask server (port 8080 for kiosk mode) +python src/app.py + +# Access via browser +# Local kiosk: http://pihostname:8080 +``` + +### Development Mode + +```bash +# Run with debug mode +FLASK_DEBUG=1 python src/app.py +``` + +## UI Design + +### Touch Optimization +- Minimum touch target: 48px +- Primary buttons: 64px height +- Designed for 7" 1024x600 display + +### Color Scheme +- Primary: Bootstrap defaults (blue accent) +- Status indicators: + - HIGH: Green + - NORMAL: Blue/Yellow + - LOW: Red + +### Layout +- Fixed 1024x600 resolution for kiosk +- Responsive for remote HD access (Phase 4) + +## API Endpoints + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/api/status` | GET | Station status (ID, time, version) | +| `/api/sensors` | GET | Sensor readings (rainfall, voltage) | +| `/api/settings` | GET/POST | Configuration settings | +| `/api/calibration` | GET | Live ADC readings | +| `/api/calibration/reset_rainfall` | POST | Reset rainfall counters | +| `/api/files` | GET | List CSV files | +| `/api/files/` | GET | View file contents | +| `/api/files/` | DELETE | Delete file | +| `/api/files/export` | POST | Generate tidEDA format | + +## Project Structure + +``` +. +├── src/ +│ ├── app.py # Flask application +│ ├── templates/ # HTML templates +│ │ ├── dashboard.html # Main kiosk dashboard +│ │ ├── settings.html # Configuration UI +│ │ ├── calibration.html # Sensor calibration +│ │ └── files.html # File management +│ └── data/ +│ └── logger/ # CSV storage (/myvscada/logger) +├── requirements.txt # Python dependencies +├── README.md # This file +└── .planning/ # GSD planning artifacts +``` + +## Kiosk Mode Setup + +To run in full-screen kiosk mode on Raspberry Pi: + +```bash +# Add to ~/.config/lxsession/LXDE-pi/autostart +@ chromium-browser --kiosk --incognito http://localhost:8080 +``` + +## Roadmap + +- [x] Phase 1: Foundation & Kiosk UI +- [x] Phase 2: Data Persistence & File Management +- [ ] Phase 3: Network Transmission +- [ ] Phase 4: Remote Access + +## License + +This project is for the TCKRTUIYO rainfall monitoring system.