mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-30 05:13:40 +00:00
Implemented configurable gap tolerance (0-8 intervals) for best price and peak price level filters to prevent periods from being split by occasional level deviations. Key features: - Gap tolerance only applies to periods ≥ MIN_INTERVALS_FOR_GAP_TOLERANCE (1.5h) - Short periods (< 1.5h) use strict filtering (zero tolerance) - Dynamic minimum distance between gaps: max(2, (interval_count // max_gap_count) // 2) - 25% maximum cap on total gaps to prevent excessive outliers in long periods - Intelligent period splitting at gap clusters (2+ consecutive non-qualifying intervals) - Each sub-period independently validated with same gap tolerance rules Technical implementation: - Added CONF_BEST_PRICE_MAX_LEVEL_GAP_COUNT and CONF_PEAK_PRICE_MAX_LEVEL_GAP_COUNT constants - Added MIN_INTERVALS_FOR_GAP_TOLERANCE = 6 (1.5h minimum for gap tolerance) - Implemented _split_at_gap_clusters() for period recovery - Implemented _check_short_period_strict() for strict short-period filtering - Implemented _check_level_filter_with_gaps() with fallback splitting logic - Extracted _check_sequence_with_gap_tolerance() for reusable core validation - Enhanced _check_level_filter() to use gap-tolerant validation Configuration UI: - Added NumberSelector (0-8, slider mode) for gap count in config flow - Added translations for all 5 languages (de, en, nb, nl, sv) - Default: 0 (strict filtering, backwards compatible) Impact: Users can now configure how many occasional level deviations are acceptable within qualifying price periods. This reduces period fragmentation while maintaining meaningful price-based filtering. Long periods are protected by the 25% cap, and gap clusters trigger intelligent splitting to recover usable sub-periods. |
||
|---|---|---|
| .. | ||
| tibber_prices | ||