Skip to main content
Version: Next 🚧

💚 Best Price Period

Settings → Devices & Services → Tibber Prices → Configure → 💚 Best Price Period


Best Price Period sensors detect windows of time when electricity is cheap enough to be worth scheduling loads (dishwasher, washing machine, EV charging, water heater). The binary sensor is_best_price_period is on during these windows.

See Period Calculation for an in-depth explanation of the detection algorithm and Period Relaxation for how the relaxation strategy works.

Settings

Period Settings

SettingDefaultDescription
Minimum period length60 minShortest window to report as a period — filters out tiny sub-hour dips
Maximum price levelCHEAPOnly intervals at this Tibber level or cheaper qualify
Gap tolerance1Consecutive above-threshold intervals allowed inside a period — bridges small price bumps between two cheap windows

Flexibility Settings

SettingDefaultDescription
Flex percentage15%How far above the daily minimum a price can be and still qualify. Higher = more intervals qualify
Minimum distance from average5%Qualifying intervals must be at least this far below the daily average — ensures periods are meaningfully cheap, not just "not expensive"

Relaxation & Target

SettingDefaultDescription
Enable minimum period targetOnAutomatically loosens criteria (relaxation) until the target count is reached
Target periods per day2How many distinct periods the algorithm aims to find per day
Relaxation attempts11How many times to loosen the criteria before giving up. 11 steps × 3% increment = up to ~48% flex
Start with defaults

The defaults are tuned for typical European electricity markets. If you're unsure, leave them as-is and observe the binary sensor over a few days.

Runtime Override Entities

You can override these settings at runtime through automations — useful for seasonal adjustments or dynamic schedules — without opening the configuration menu.

These entities are disabled by default. Enable them in Settings → Devices & Services → Tibber Prices → Entities.

EntityTypeRangeOverrides
number.<home_name>_best_price_flexibilityNumber0–50%Flex percentage
number.<home_name>_best_price_minimum_distanceNumber-50–0%Minimum distance from average
number.<home_name>_best_price_minimum_period_lengthNumber15–180 minMinimum period length
number.<home_name>_best_price_minimum_periodsNumber1–10Target periods per day
number.<home_name>_best_price_relaxation_attemptsNumber1–12Relaxation attempts
number.<home_name>_best_price_gap_toleranceNumber0–8Gap tolerance
switch.<home_name>_best_price_enable_relaxationSwitchOn/OffEnable relaxation

When an override entity is enabled, its value takes precedence over the menu setting. When disabled (default), the menu setting is used.

Changing a value triggers immediate period recalculation. Entity values are restored automatically after HA restarts.

Example: Stricter detection in winter

Show YAML: Seasonal override automation
automation:
- alias: "Winter: Stricter Best Price Detection"
trigger:
- platform: time
at: "00:00:00"
condition:
- condition: template
value_template: "{{ now().month in [11, 12, 1, 2] }}"
action:
- service: number.set_value
target:
entity_id: number.<home_name>_best_price_flexibility
data:
value: 10 # Stricter than default 15%

See Runtime Override Entities for more details, including how overrides work, how to view entity descriptions, and recorder optimization.

💬 Comments are page-specific. For a new question or idea, open a dedicated Discussion on GitHub so it gets its own thread and proper visibility.