hass.tibber_prices/custom_components/tibber_prices
Julian Pawlowski 8da3083fb2 fix(api): accept priceInfoRange-only responses and retry transient empty data
Some markets/accounts (e.g. NL hourly) return an empty
priceInfo(QUARTER_HOURLY).today while priceInfoRange still delivers the full
set of intervals. _check_price_info_empty required today's data and wrongly
classified such complete responses as empty, which blocked setup. It now
treats a response as valid when today OR yesterday data is present, since
priceInfoRange is the authoritative source the interval pool uses.

Additionally, "Empty data received" is now retried a few times with
exponential backoff, smoothing brief Tibber outages that transiently return
empty data within a single update cycle. Long outages are still absorbed by
the IntervalPool cache fallback, so the in-request retry count stays small.

Reported in #141.

Impact: Setup and updates no longer fail with "Empty data received" for NL
hourly accounts (and similar), and short Tibber blips are smoothed over.
2026-05-30 14:46:13 +00:00
..
api fix(api): accept priceInfoRange-only responses and retry transient empty data 2026-05-30 14:46:13 +00:00
binary_sensor fix(periods): stabilize best and peak period outputs 2026-04-25 22:46:38 +00:00
blueprints fix(blueprints): fix home_connect_alt service call and correct sensor description 2026-05-03 22:16:56 +00:00
brand feat(brand): update dark icons for improved visual consistency 2026-04-09 19:04:26 +00:00
config_flow_handlers refactor(repairs): simplify currency mode change notification to one-shot 2026-04-15 10:00:59 +00:00
coordinator chore(periods): house keeping 2026-05-03 19:43:31 +00:00
custom_translations docs(sensor-reference): update translations for price phase sensors 2026-05-30 13:04:55 +00:00
entity_utils fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
interval_pool perf(interval_pool): skip redundant API calls when prior fetch covers range 2026-04-17 12:00:57 +00:00
number fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
sensor feat(services): add price_source parameter to get_chartdata and get_apexcharts_yaml 2026-05-03 18:48:36 +00:00
services feat(services): add power-profile-weighted window selection 2026-05-03 22:16:08 +00:00
switch fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
translations docs(sensor-reference): update translations for price phase sensors 2026-05-30 13:04:55 +00:00
utils feat(services): add power-profile-weighted window selection 2026-05-03 22:16:08 +00:00
__init__.py chore(blueprints): disable automatic blueprint installation 2026-05-03 22:17:02 +00:00
config_flow.py fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
const.py feat(entity): expose integration version as sw_version in device info 2026-04-20 18:44:34 +00:00
data.py feat(interval-pool): add intelligent interval caching and memory optimization 2025-11-25 20:44:39 +00:00
diagnostics.py fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
entity.py feat(entity): expose integration version as sw_version in device info 2026-04-20 18:44:34 +00:00
icons.json feat(services): add plan_charging service for battery/EV scheduling 2026-04-20 21:43:41 +00:00
manifest.json chore(release): bump version to 0.31.0 2026-05-30 13:05:45 +00:00
migrations.py fix(services): use injected now in resolve_search_range day offset 2026-04-14 19:33:24 +00:00
services.yaml feat(services): add power-profile-weighted window selection 2026-05-03 22:16:08 +00:00