mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-29 21:03:40 +00:00
Fixed critical sign convention bug where negative user-facing values (e.g., peak_price_flex=-20%) weren't normalized for internal calculations, causing incorrect period filtering. Changes: - periods.py: Added abs() normalization for flex and min_distance_from_avg - core.py: Added comment documenting flex normalization by get_period_config() - level_filtering.py: Simplified check_interval_criteria() to work with normalized positive values only, removed complex negative price handling - relaxation.py: Removed sign handling since values are pre-normalized Internal convention: - User-facing: Best price uses positive (+15%), Peak price uses negative (-20%) - Internal: Always positive (0.15 or 0.20) with reverse_sort flag for direction Added comprehensive regression tests: - test_best_price_e2e.py: Validates Best price periods generate correctly - test_peak_price_e2e.py: Validates Peak price periods generate correctly - test_level_filtering.py: Unit tests for flex/distance filter logic Impact: Peak price periods now generate correctly. Bug caused 100% FLEX filtering (192/192 intervals blocked) → 0 periods found. Fix ensures reasonable filtering (~40-50%) with periods successfully generated. |
||
|---|---|---|
| .. | ||
| tibber_prices | ||