3.5 KiB
3.5 KiB
Technology Stack
Analysis Date: 2026-03-12
Project Status
This is a greenfield project - no implementation code exists yet. The repository currently contains only:
THE_IDEA.md- Requirements specification document.opencode/- OpenCode/GSD framework configuration
The following stack analysis is based on the requirements defined in THE_IDEA.md.
Languages
Primary:
- HTML/CSS/JavaScript - Web-based UI for the 7-inch touchscreen and remote full HD interface
- Expected to run in Chromium Kiosk Mode on Raspberry Pi
- Must support dual resolution: 1024x600 (touchscreen) and 1920x1080 (remote)
Secondary:
- Python (likely) - Backend for sensor data collection, CSV processing, and network operations
- Raspberry Pi standard runtime
- Used for serial communication with sensors (ADC, rainfall sensors)
- CSV file generation and management
Runtime
Environment:
- Raspberry Pi OS - Primary runtime on Pi Zero 2 W and Pi 3B
- Pi Zero 2 W: ARMv8 single-core, 512MB RAM
- Pi 3B: ARMv7 quad-core, 1GB RAM
Browser:
- Chromium - Kiosk mode for touchscreen interface
- Target URL:
http://pihostname:8080(touchscreen) - Target URL:
http://pihostname:9090/(remote full HD)
- Target URL:
Package Manager:
- Not yet established (pending project initialization)
Frameworks
Core:
- Lightweight web framework (TBD) - For serving the UI
- Options: Flask, FastAPI (Python), or simple HTTP server
- Must be performant on low-power Pi Zero 2 W
- Frontend - Plain HTML/CSS or lightweight framework
- Recommendation: Static HTML/CSS for main interface (performance)
- Avoid heavy SPA frameworks to minimize memory footprint
Sensor Interfaces:
- Serial communication - For ADC, rainfall sensors, GPS
- SDI-12 - For soil moisture and evapotranspiration sensors (referenced in requirements)
Data Handling:
- CSV processing - For data logging and transfer (per flowchart in THE_IDEA.md)
Build/Dev:
- Not yet established (pending project initialization)
Key Dependencies
Hardware Interfaces:
- Serial port communication (Python pyserial or similar)
- ADC reading libraries
- GPS module support (USB)
Network:
- FTP client (for data transfer to myvscada server)
- SCP/SFTP client
- WebDAV client
- TCP socket libraries
Data Processing:
- CSV generation and parsing libraries
- Data validation utilities
Configuration
Network Settings:
- Local IP configuration (static IP)
- Subnet mask, gateway, DNS
- MAC address
- Transfer protocol selection (FTP/SCP/SFTP/WEBDAV)
Sensor Configuration:
- ADC channels (4-20mA, 0-10vDC types)
- Rainfall sensor settings
- Water level thresholds
- Evapotranspiration settings
Server Settings:
- Server IP and TCP port
- Tide data hours
- GPS coordinates (manual or USB GPS)
Mobile Settings:
- Phone numbers for alerts (Master, SubMaster, Engineer contacts)
Platform Requirements
Development:
- Standard web development tools (editor, browser)
- Python development environment
- Git for version control
Production:
- Raspberry Pi Zero 2 W or 3B
- 7-inch capacitive touchscreen (1024x600)
- Chromium browser (Kiosk mode)
- Network connectivity (Ethernet or mobile/GPRS)
Performance Constraints
| Resource | Target | Concern |
|---|---|---|
| RAM | <256MB for UI | Pi Zero 2 W has only 512MB total |
| Startup time | <3 seconds | Cold start in Chromium Kiosk |
| Bundle size | Minimal | Optimize for low-power device |
Stack analysis: 2026-03-12