You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds FIRMWARE_VERSION tracking to all components and displays version in Serial output. Implements per-relay configurable momentary durations, physical clear button support on client, and manual relay clear controls in server dashboard. Updates config generator and UI to support new relay and input features. Adds DEBUG_MODE guards for conditional debug output. Ready for initial deployment with improved version tracking, debug controls, and relay management.
The following items from the original review are still pending for future releases:
414
+
415
+
| Priority | Item | Notes |
416
+
|----------|------|-------|
417
+
| High | Independent relay timeout tracking | Current implementation uses minimum duration across all relays in mask. Future: track each relay independently with `gRelayActivationTime[tank][relay]` |
418
+
| Medium | Relay status synchronization | When client restarts, relay state isn't synced with physical relay hardware |
419
+
| Medium | Server-side duration UI validation | Add min/max validation and friendly time format (mm:ss or HH:mm:ss) |
420
+
| Low | Presets for common durations | Add dropdown presets: 1 min, 5 min, 15 min, 30 min, 1 hour, etc. |
421
+
422
+
### Future Improvement Suggestions
423
+
424
+
#### Relay Control Enhancements
425
+
1. **Per-Relay Independent Tracking**: Refactor to track activation time per relay, not per tank. This would allow R1 and R3 to have different remaining times.
426
+
```cpp
427
+
// Current (per-tank):
428
+
unsigned long gRelayActivationTime[MAX_TANKS];
429
+
430
+
// Future (per-relay):
431
+
unsigned long gRelayActivationTime[MAX_TANKS][4];
432
+
bool gRelayActive[MAX_TANKS][4];
433
+
```
434
+
435
+
2.**Remaining Time Display**: Show countdown timer on Server dashboard for active momentary relays
436
+
437
+
3.**Manual Override**: Add web UI button to manually extend or reset relay timers
438
+
439
+
4.**Staggered Deactivation**: When multiple relays have different durations, deactivate each at its configured time rather than all at once
440
+
441
+
#### Configuration UI Enhancements
442
+
1.**Human-Readable Duration Input**: Convert seconds to hours:minutes:seconds format
443
+
2.**Quick Duration Presets**: Buttons for common values (1min, 5min, 30min, 1hr)
444
+
3.**Validation Feedback**: Real-time validation with error messages for invalid values
445
+
4.**Import/Export Relay Settings**: Allow copying relay configuration between tanks
446
+
447
+
#### Production Hardening
448
+
1.**Relay State Persistence**: Save active relay state to flash, restore on boot
449
+
2.**Relay Health Check**: Verify relay actually toggled using feedback circuit
450
+
3.**Failsafe Mode**: Auto-deactivate all relays after configurable maximum runtime (e.g., 24 hours)
- Missing production-ready features (watchdog, graceful degradation)
367
469
368
470
**Verdict:** The code is a solid foundation but needs significant hardening before production deployment. Focus on critical bugs and security issues first, then address reliability and performance concerns.
471
+
472
+
**V1.0 Status:** Ready for initial deployment with version tracking, debug controls, and configurable relay durations. Core functionality is stable.
0 commit comments