hass.tibber_prices/tests/services
Julian Pawlowski 95004efa2d fix(services): prevent power_profile truncation during relaxation
find_cheapest_block, find_cheapest_hours, and find_cheapest_schedule
accept an optional power_profile (fixed per-interval watt array
matching the requested duration/task length). When allow_relaxation
was enabled and no full-duration window could be found, the
duration-reduction relaxation phase silently reduced the interval
count without shrinking power_profile accordingly. Downstream code
(find_cheapest_contiguous_window, calculate_window_statistics,
_find_cheapest_window_in_pool) then truncated the profile from the
front to match, dropping trailing appliance-cycle phases and using
the wrong per-interval weights for both window selection and the
reported cost estimate.

Disable duration-reduction relaxation whenever a power_profile is
supplied (find_cheapest_schedule guards per-task via
any_task_has_power_profile); distance and level-filter relaxation
phases remain available since they don't affect interval count.

Impact: Services with a power_profile no longer silently pick a
shorter window with mismatched power weighting during relaxation;
they now correctly report no window found if the full duration isn't
available, preserving the accuracy of appliance-cycle cost estimates.
2026-07-04 18:22:44 +00:00
..
__init__.py feat(services): improve ApexCharts segment visualization and fix header display 2025-12-01 11:14:27 +00:00
test_connect_segments.py refactor(currency)!: rename major/minor to base/subunit currency terminology 2025-12-11 08:26:30 +00:00
test_energy_calculator.py feat(services): add plan_charging service for battery/EV scheduling 2026-04-20 21:43:41 +00:00
test_find_cheapest_schedule_internals.py fix(find_cheapest_schedule): retry valid window start after time gaps 2026-07-04 18:18:42 +00:00
test_find_service_responses.py fix(services): prevent power_profile truncation during relaxation 2026-07-04 18:22:44 +00:00
test_period_data_format.py refactor(currency)!: rename major/minor to base/subunit currency terminology 2025-12-11 08:26:30 +00:00
test_plan_charging.py fix(services): prevent plan_charging overcharge from segment-constraint bridging 2026-07-04 17:43:04 +00:00
test_power_scheduler.py fix(services): prevent plan_charging overcharge from segment-constraint bridging 2026-07-04 17:43:04 +00:00
test_search_range.py feat(services): add power-profile-weighted window selection 2026-05-03 22:16:08 +00:00
test_sequential_scheduling.py feat(services): add power-profile-weighted window selection 2026-05-03 22:16:08 +00:00