hass.tibber_prices/custom_components/tibber_prices/services
Julian Pawlowski 13b9870f45 fix(get_chartdata): use proper statistics.median for chart metadata
_calculate_metadata()'s inline calc_stats() computed the median as a
naive sorted(data)[len(data) // 2], which returns the upper-middle
value for even-length datasets instead of averaging the two middle
values. A full day is always an even interval count (96 quarter-hours
or 24 hours), so this silently overstated "median" and
"median_position" in nearly every price_stats block of the
get_chartdata response. The rest of the codebase already has a
correct calculate_median() in utils/average.py; this was an isolated
inline duplicate with the bug.

Impact: get_chartdata's price_stats.combined/dayN.median and
median_position now report the statistically correct median for
chart annotations and metadata-driven dashboards.
2026-07-04 18:23:25 +00:00
..
charging fix(services): prevent plan_charging overcharge from segment-constraint bridging 2026-07-04 17:43:04 +00:00
__init__.py feat(services): add plan_charging service for battery/EV scheduling 2026-04-20 21:43:41 +00:00
debug_clear_tomorrow.py fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
entity_resolver.py feat(services): allow entity IDs as service parameter values 2026-04-20 18:44:24 +00:00
find_cheapest_block.py fix(services): prevent power_profile truncation during relaxation 2026-07-04 18:22:44 +00:00
find_cheapest_hours.py fix(services): prevent power_profile truncation during relaxation 2026-07-04 18:22:44 +00:00
find_cheapest_schedule.py fix(services): prevent power_profile truncation during relaxation 2026-07-04 18:22:44 +00:00
find_most_expensive_block.py feat(services): add 5 scheduling services for price-optimized time windows 2026-04-11 18:58:27 +00:00
find_most_expensive_hours.py feat(services): add 5 scheduling services for price-optimized time windows 2026-04-11 18:58:27 +00:00
formatters.py fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
get_apexcharts_yaml.py feat(services): add price_source parameter to get_chartdata and get_apexcharts_yaml 2026-05-03 18:48:36 +00:00
get_chartdata.py fix(get_chartdata): use proper statistics.median for chart metadata 2026-07-04 18:23:25 +00:00
get_price.py feat(services): isolate price-fetch failures and add success flag to responses 2026-05-30 14:46:23 +00:00
helpers.py fix(services): correct min_distance_from_avg direction for negative prices 2026-07-04 18:23:06 +00:00
plan_charging.py fix(services): prevent plan_charging overcharge from segment-constraint bridging 2026-07-04 17:43:04 +00:00
refresh_user_data.py feat(services): add 5 scheduling services for price-optimized time windows 2026-04-11 18:58:27 +00:00
relaxation.py feat(pricing): add relaxation logic for progressive filter loosening 2026-04-18 21:27:05 +00:00