hass.tibber_prices/custom_components/tibber_prices
Julian Pawlowski 6f5261785b feat(sensor): add price rank sensors and IQR-based volatility attributes
Add three new price rank sensors that show where today's/tomorrow's/combined
average price falls relative to all intervals in the evaluated window:
- price_rank_today: today's average price percentile rank (0–100%)
- price_rank_tomorrow: tomorrow's average price percentile rank
- price_rank_today_tomorrow: combined today+tomorrow percentile rank

Extend all volatility sensors with IQR-based band statistics:
- price_typical_spread: interquartile range (IQR) in currency subunit
- price_typical_spread_%: IQR as percentage of daily average
- price_spike_count: number of intervals outside Tukey fences (outliers)

Add calculate_iqr_stats() utility function in utils/price.py that computes
the 25th/75th percentiles, IQR, outer fences (Q1 - 1.5×IQR / Q3 + 1.5×IQR),
and outlier count for any list of price values. Entity keys and attribute
names use plain language (`price_rank`, `price_typical_spread`) as primary
labels; technical terms (percentile rank, IQR) are included parenthetically
in descriptions and documentation.

Impact: Users can now see where current day prices rank compared to their window and how tightly clustered or spike-prone a day's prices are.
2026-04-12 14:13:47 +00:00
..
api feat(api): add energy and tax fields to Tibber GraphQL queries 2026-04-09 18:27:21 +00:00
binary_sensor fix(periods): rename periods_remaining to period_count_remaining 2026-04-12 10:05:21 +00:00
brand feat(brand): update dark icons for improved visual consistency 2026-04-09 19:04:26 +00:00
config_flow_handlers refactor(options_flow): optimize loading of override translations based on active overrides 2026-04-12 08:54:41 +00:00
coordinator fix(periods): rename periods_remaining to period_count_remaining 2026-04-12 10:05:21 +00:00
custom_translations feat(sensors): add day pattern detection sensors (valley/peak/flat/rising/falling) 2026-04-11 21:07:16 +00:00
entity_utils refactor: remove dead code across integration 2026-04-11 12:13:26 +00:00
interval_pool perf(interval_pool): hoist fetch_groups and precompute period criteria 2026-04-06 14:35:33 +00:00
number refactor(entities): remove redundant name= from all entity descriptions 2026-04-06 13:16:07 +00:00
sensor feat(sensor): add price rank sensors and IQR-based volatility attributes 2026-04-12 14:13:47 +00:00
services feat(services): add reason codes and schedule comparison details to find services 2026-04-12 12:47:11 +00:00
switch refactor: remove dead code across integration 2026-04-11 12:13:26 +00:00
translations feat(services): add reason codes and schedule comparison details to find services 2026-04-12 12:47:11 +00:00
utils feat(sensor): add price rank sensors and IQR-based volatility attributes 2026-04-12 14:13:47 +00:00
__init__.py feat(migrations): add entity auto-migration system with HA repairs 2026-04-10 12:21:49 +00:00
config_flow.py feat(config_flow): add price level gap tolerance for Tibber API level field 2025-12-22 20:25:30 +00:00
const.py feat(periods): implement geometric_extension_attempted flag and time_range filtering 2026-04-12 08:24:38 +00:00
data.py feat(interval-pool): add intelligent interval caching and memory optimization 2025-11-25 20:44:39 +00:00
diagnostics.py refactor(lifecycle): integrate with Pool for sensor metrics 2025-12-23 14:13:34 +00:00
entity.py fix(lint): apply Python 3.14 ruff rules and update HA minimum version 2026-04-11 10:56:34 +00:00
icons.json feat(services): add 5 scheduling services for price-optimized time windows 2026-04-11 18:58:27 +00:00
manifest.json chore(release): bump version to 0.30.0 2026-04-09 19:05:27 +00:00
migrations.py feat(migrations): add entity auto-migration system with HA repairs 2026-04-10 12:21:49 +00:00
services.yaml feat(services): add reason codes and schedule comparison details to find services 2026-04-12 12:47:11 +00:00