Files
rtu_v5/.planning/research/FEATURES.md
2026-03-12 06:04:19 +08:00

176 lines
10 KiB
Markdown

# Feature Research
**Domain:** Rainfall Monitoring Station RTU Web Interface
**Researched:** 2026-03-12
**Confidence:** HIGH
## Feature Landscape
### Table Stakes (Users Expect These)
Features users assume exist. Missing these = product feels incomplete.
| Feature | Why Expected | Complexity | Notes |
|---------|--------------|------------|-------|
| **Real-time Rainfall Display** | Core function — users must see current rainfall values (Today, Hourly, MAR Acc, Yearly Acc) | LOW | Data directly from tipping bucket sensors; no transformation needed |
| **Voltage Monitoring** | Critical for remote station operation — battery and solar voltage indicate system health | LOW | ADC readings; critical for stations without grid power |
| **Date/Time Display** | Timestamp is essential for data interpretation and troubleshooting | LOW | NTP sync or manual configuration; GPS time if available |
| **Station Identification** | Operators manage multiple stations; must identify which unit they're viewing | LOW | Station ID displayed prominently |
| **Communication Status** | Operators must know if data is reaching the server | LOW | Signal strength (RSSI), connection status indicators |
| **Main Menu Navigation** | Access to settings, calibration, and file management is standard RTU behavior | MEDIUM | Must support 7" touchscreen (large touch targets) |
| **Settings Configuration** | RTUs require configurable parameters (thresholds, network, sensor types) | MEDIUM | Submenus for each category; form-based input |
| **Calibration View** | Technicians need to verify sensor readings during maintenance | LOW | Read-only display of live sensor values |
| **File Management** | Local CSV storage requires navigation, viewing, and deletion | MEDIUM | Must handle flash memory on embedded device |
### Differentiators (Competitive Advantage)
Features that set the product apart. Not required, but valuable.
| Feature | Value Proposition | Complexity | Notes |
|---------|-------------------|------------|-------|
| **Historical Data Graphs** | Visual trends help operators anticipate conditions — rainfall patterns, battery drain cycles | MEDIUM | Chart.js can render on Pi Zero 2W; keep data points limited for performance |
| **Configurable Alarm Thresholds** | Users can set custom alerts for danger/warning levels; visual indicators for threshold breach | MEDIUM | Persist to local config file; apply on dashboard display |
| **Touch-Optimized Interface** | 7" capacitive touchscreen requires large buttons (min 48px), clear visual hierarchy | LOW | Bootstrap provides responsive components; custom CSS for kiosk sizing |
| **Dual-Mode Display** | Same app serves local kiosk (1024x600) and remote HD access — reduces maintenance | MEDIUM | Use CSS media queries to adapt layout; single codebase |
| **Real-time Data Updates** | Socket.IO push for live sensor values without page refresh | MEDIUM | Already in stack research; critical for professional appearance |
| **Visual Threshold Indicators** | Color-coded rainfall/level status (green/yellow/red) provides at-a-glance awareness | LOW | Simple CSS classes based on threshold comparison |
| **CSV Transmission Status** | Users want to know if/when data was successfully sent to server | LOW | Log transmission attempts; display last successful sync time |
### Anti-Features (Commonly Requested, Often Problematic)
Features that seem good but create problems.
| Feature | Why Requested | Why Problematic | Alternative |
|---------|---------------|-----------------|-------------|
| **Third-party Cloud Integration** | Users may want Ambient Weather Network, Weather Underground, etc. | Adds complexity, requires accounts, breaks direct server model | Stick to direct myvscada server; provide CSV export if needed |
| **Mobile Native App** | "Users want an app" | Development/maintenance overhead for iOS/Android; web interface is accessible | Responsive web works on mobile browsers |
| **Real-time Chat/Notifications** | Operators want to communicate | Not the purpose of monitoring station; adds infrastructure | Email/SMS alerts via server-side (future consideration) |
| **Multi-station Dashboard** | View all stations from one screen | Requires server-side aggregation; out of RTU scope | Server-side dashboard aggregates; RTU shows local only |
| **Cloud Data Storage** | "Store data in the cloud" | RTU is embedded; limited storage is intentional | Direct CSV transmission to myvscada server |
| **Video Streaming** | Some systems include camera | Heavy bandwidth, storage; not in original spec | Out of scope |
| **User Authentication (local)** | "Secure the interface" | Adds complexity; kiosk mode typically runs without auth | Remote interface can have auth (port 9090); local is read-only by default |
## Feature Dependencies
```
Dashboard Display
└──requires──> Real-time Data Updates (Socket.IO)
└──requires──> Backend Sensor Reading
Settings Menus
└──requires──> Configuration Persistence (local config file)
└──requires──> File System Access
Calibration View
└──requires──> Live Sensor Reading
File Management
└──requires──> CSV Data Storage
└──requires──> Sensor Data Collection
Threshold Alerts
└──requires──> Configurable Settings
└──enhances──> Dashboard Display
Historical Graphs
└──requires──> CSV Data Storage
└──enhances──> Dashboard Display
```
### Dependency Notes
- **Dashboard requires real-time updates:** The UI must receive sensor readings via Socket.IO; this requires Flask-SocketIO backend infrastructure
- **Historical graphs require CSV storage:** Can't display trends without historical data; implies Phase 2 (CSV workflow) must precede graphs
- **Settings require persistence:** All configuration must survive reboot; store in JSON/text config file on local filesystem
- **Threshold alerts enhance dashboard:** Visual indicators (color-coded values) depend on both the threshold configuration AND the dashboard display
## MVP Definition
### Launch With (v1)
Minimum viable product — what's needed to validate the concept.
- [x] **Dashboard with rainfall readings** — Core value: users see Today, Hourly, MAR Acc, Yearly Acc
- [x] **Voltage monitoring display** — Battery and solar; critical for remote operation
- [x] **Date/time and station ID** — Basic identification
- [x] **Communication status** — Signal strength, connection state
- [x] **Main menu navigation** — Access to settings submenus
- [x] **Real-time updates (Socket.IO)** — Live data without refresh
### Add After Validation (v1.x)
Features to add once core is working.
- [ ] **Historical data graphs** — Chart.js visualization of rainfall trends
- [ ] **Configurable alarm thresholds** — User-settable danger/warning levels
- [ ] **Visual threshold indicators** — Color-coded status on dashboard
- [ ] **File management UI** — Navigate/delete CSV files
- [ ] **CSV transmission status** — Show last sync time
### Future Consideration (v2+)
Features to defer until product-market fit is established.
- [ ] **Multi-day/hour trend analysis** — Extended historical view
- [ ] **Data export functionality** — Download CSV from browser
- [ ] **Remote authentication** — Login for port 9090 interface
- [ ] **SMS/email alerts** — Server-side notification system
## Feature Prioritization Matrix
| Feature | User Value | Implementation Cost | Priority |
|---------|------------|---------------------|----------|
| Dashboard rainfall display | HIGH | LOW | P1 |
| Voltage monitoring | HIGH | LOW | P1 |
| Date/time & station ID | HIGH | LOW | P1 |
| Communication status | HIGH | LOW | P1 |
| Main menu navigation | HIGH | MEDIUM | P1 |
| Real-time Socket.IO updates | HIGH | MEDIUM | P1 |
| Settings configuration | MEDIUM | MEDIUM | P1 |
| Calibration view | MEDIUM | LOW | P1 |
| File management | MEDIUM | MEDIUM | P2 |
| Historical graphs | MEDIUM | MEDIUM | P2 |
| Threshold indicators | MEDIUM | LOW | P2 |
| Alarm threshold config | MEDIUM | MEDIUM | P2 |
| Transmission status | LOW | LOW | P2 |
| Touch-optimized UI | HIGH | LOW | P1 |
| Dual-mode display | MEDIUM | MEDIUM | P2 |
**Priority key:**
- P1: Must have for launch
- P2: Should have, add when possible
- P3: Nice to have, future consideration
## Competitor Feature Analysis
| Feature | Ambient Weather Network | Weather Display | Davis WeatherLink | Our Approach |
|---------|------------------------|-----------------|-------------------|--------------|
| Real-time dashboard | YES | YES | YES | P1 — Core |
| Historical graphs | YES | YES | YES | P2 — Post-launch |
| Alarm thresholds | YES (cloud) | YES (local) | YES (cloud) | P2 — Configurable |
| Touch interface | Responsive web | Windows app | Native app | P1 — Web-based |
| Data export | Via API | YES | YES | P2 — Future |
| Local storage | Cloud only | Local + cloud | Cloud + local | P1 — Local CSV |
| Multi-station | YES | Via addons | YES | Server handles |
**Analysis Notes:**
- Consumer solutions (Ambient, Davis) lean heavily on cloud — we differ by direct server transmission
- Professional solutions (Weather Display, AQUARIUS) offer local storage + sophisticated alarms
- Our differentiator: lightweight embedded design with direct myvscada integration
## Sources
- **Rainwise/Ambient Weather Network** — Consumer weather station dashboard patterns
- **Weather Display** — Professional weather station software with extensive local features
- **KISTERS datasphere** — Enterprise hydrological monitoring platform
- **Aquatic Informatics AQUARIUS** — Professional water data management
- **Hydro-Logic Timeview** — Flood monitoring with automated alarms
- **California Data Exchange Center (CDEC)** — Government hydrological monitoring
- **Perry Weather** — Modern weather monitoring with threshold alerts
- **Project context (THE_IDEA.md)** — Existing RTU feature set
- **Project context (PROJECT.md)** — Core value and constraints
---
*Feature research for: Rainfall Monitoring Station RTU Web Interface*
*Researched: 2026-03-12*