-
-
Notifications
You must be signed in to change notification settings - Fork 43
Open
Description
Problem / Motivation
With 15-minute electricity price intervals, non-continuous charging can become highly fragmented, resulting in:
- Frequent start/stop cycles (e.g., 8 individual 15-minute sessions for 2 hours of charging)
- Increased wear on charger hardware and EV battery
- Reduced charging efficiency for EVs that perform better with longer sessions
Example: Without grouping, charging might occur at: 02:00-02:15, 02:45-03:00, 03:30-03:45, etc. → 8 start/stop cycles
Proposed Solution
Add a new Minimum Session Duration parameter:
- Range: 0-4 hours (step: 0.25h)
- Default: 0 (backward compatible)
- Type: Number entity
- Applies to: Non-continuous charging only
How It Works
When set > 0 (e.g., 1.0 hour):
- Selects cheapest quarters as usual
- Groups into contiguous sessions
- Filters out sessions shorter than minimum
- Replaces with adjacent quarters to extend existing sessions
- Result: Fewer, longer sessions
Example with 1-hour minimum:
- Before: 8× 15-min sessions → 8 cycles
- After: 2× 1-hour sessions → 2 cycles ✅
Implementation
Files Modified
const.py- Add constants and defaults__init__.py- Schema migration v7→v8number.py- New number entitycoordinator.py- Parameter handlinghelpers/coordinator.py- Grouping algorithm (new_apply_minimum_session_duration())- All translation files (en, da, nb, nl, sv)
README.md- Documentation
Algorithm
def _apply_minimum_session_duration(selected_quarters, sorted_index, ...):
1. Group quarters into contiguous sessions
2. Remove sessions < minimum duration
3. Add replacement quarters adjacent to existing sessions
4. Iterate until all sessions meet minimum
5. Maintain total charging timeBenefits
✅ Reduces hardware wear
✅ Improves efficiency
✅ User-configurable
✅ Backward compatible
✅ Multi-language support
User Experience
Navigate to device → Adjust "Minimum session duration" slider (0-4h)
Recommended: Start with 1.0 hour for optimal balance
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels