Quick Summary (TL;DR)
Dynamic electricity tariffs can save money when you can move a meaningful number of kilowatt-hours into lower-priced settlement intervals without increasing energy use, missing a deadline or sacrificing a better solar export opportunity. The saving is not simply the difference between the highest and lowest price on a dashboard. Calculate the delivered cost of each load, including losses, the actual retail tariff, export earnings forgone, device cycling and any incremental hardware or subscription expenditure. If you cannot shift much electricity, a fixed or simple time-of-use (TOU) contract may be cheaper and far easier to manage.
The strongest candidates are EV charging, home batteries with an established economic case, some storage heating and selected hot-water schedules. A dishwasher that uses 1 kWh per cycle cannot create the same savings as an electric car that routinely absorbs 20–30 kWh, although the dishwasher may be easy to schedule. Heating is more complicated: warming a home or cylinder earlier may increase standing losses or reduce heat-pump efficiency, and occupant comfort or hygiene limits always override a tariff optimiser. A solar household must compare charging now with the income from exporting the same electricity.
This is a decision and measurement guide, not a promise that an Agile tariff, a negative wholesale price or a Home Assistant automation will lower your bill. Every rate and example below is illustrative, not a live quotation. Confirm your country, supplier, region, import contract, taxes, export arrangement and meter eligibility before changing tariff. In particular, Great Britain’s supplier-specific retail Agile half-hourly rates are not equivalent to Nord Pool spot prices or to retail contracts in Greece and the rest of Europe. We first establish a defensible comparison, then implement safe monitoring and scheduling.
What is a dynamic electricity tariff?
A fixed-rate import contract charges the same unit rate throughout its relevant term or billing period, subject to its detailed terms. A conventional TOU tariff applies predetermined cheap and expensive windows: for example, a lower night rate and a higher daytime rate. A dynamic tariff changes the electricity price by settlement interval, sometimes every 30 minutes and, in markets moving to a 15-minute market time unit, every 15 minutes. Retail providers can apply their own pricing formulas, distribution components, taxes, caps and standing charges on top of market signals.
The central distinction is the interval price you actually pay, not the wholesale trading number used to derive it. A Nord Pool market value may be published in EUR/MWh, while a Home Assistant price sensor or contract rate may be in EUR/kWh, GBP/kWh or pence/kWh. Treat those units as different data types. An apparent price of 80 could mean €80/MWh = €0.08/kWh, 80 p/kWh = £0.80/kWh, or a meaningless misconfiguration. Local currency conversion, VAT and network charges can change a result by more than the automation saves.
In Great Britain, Agile Octopus is an example of a retail product whose import price varies by half-hour and is published in advance for the following day. Its supplier terms explain that rates can rise as well as fall, and that customers need a compatible smart-meter arrangement. Do not generalise any advertised rate cap, sign-up eligibility or publishing time to other versions of the contract. Other smart tariffs offer fixed cheap windows despite marketing themselves as intelligent or smart. In European markets the Home Assistant Nord Pool integration exposes market-area spot pricing and is transitioning with market interval changes, but that sensor is not automatically a retail bill-ready tariff.
| Contract model | Price signal | Why automation might help | Main limitation |
|---|---|---|---|
| Flat unit price | One unit rate | Almost no time-shifting benefit within the same rate | Fixed charges and peak demand may still matter |
| Time of use | Known peak and off-peak windows | Move EV and other deferrable use to the cheap window | The cheapest window is already obvious; optimisation often unnecessary |
| Day-ahead dynamic retail | Interval retail prices published in advance | Rank eligible intervals and schedule load by deadline | Prices, caps, taxes and publication timing vary by supplier |
| Market spot-linked retail | Spot market plus contract-specific charges | Optimise against varying wholesale-driven prices | Spot price alone does not equal consumer cost |
| Controlled-load or managed EV contract | Supplier/device decides some schedules | Often significant charging discounts with little custom code | Device compatibility, eligibility and override rules |
| Export-aware import contract | Import and export remuneration both matter | Plan batteries and solar self-consumption | Export restrictions, settlement methods and degradation costs |
The actual savings formula
The simplest valid comparison holds the service delivered constant. Compare the cost of delivering the same EV battery energy, litres of usable hot water, indoor comfort or finished laundry under two schedules. Moving 10 kWh from a 30 p/kWh period to 10 p/kWh creates £2.00 of gross purchase-price difference only if the meter actually imports the same 10 kWh in both cases and there are no offsetting effects. For an EV, you may need more input energy to deliver the same battery charge if the slower charging rate has greater auxiliary losses. For a heat pump, changing the operating period can change COP, heat losses and thermal comfort.
A useful bookkeeping equation is:
Net savings = baseline import cost − optimised import cost + change in export revenue − added losses, wear, subscriptions and other incremental costs.
Here, “change in export revenue” can be negative when an automation diverts solar energy that would otherwise be sold. Define one reference case, one optimised case and the same reporting period; avoid mixing gross peak-versus-trough differences with a whole-bill result. Standing charges often cancel when comparing schedules on the same tariff, but not when choosing between different contracts. Demand-based charges, network penalties or export restrictions must be added where the actual contract includes them.
| Element | Baseline | Optimised | What to measure or verify |
|---|---|---|---|
| Imported energy per interval | kWh × retail rate | kWh × retail rate | Supplier-interval or calibrated import meter data |
| Solar exported | Export kWh × credited rate | Export kWh × credited rate | Export meter and export settlement terms |
| EV delivered energy | Target battery kWh | Same target battery kWh | Charger kWh versus battery estimate and losses |
| Heating service | Comfort and hot-water delivery | Equivalent comfort and hygiene | Indoor temperature, hot-water draw, heat-meter boundary |
| Battery throughput | Baseline throughput | Extra arbitrage cycles | Round-trip efficiency and incremental wear assumption |
| Standing charges | Contract charge | Contract charge | Include when comparing tariffs, not merely schedules |
| Subscriptions and equipment | Existing cost | Added control-stack cost | Annualised genuine incremental spending |
| Convenience and deadline | Required outcome | Same required outcome | Readiness, noise, user overrides and reliability |
The comparison should use time-aligned readings, preferably measured import energy for each market interval. Adding up monthly kWh and multiplying by an average tariff misses the correlation between when the house consumes electricity and the prices at those times. Conversely, choosing only the cheapest interval from a historical chart is hindsight: an automation running at the time may have had a smaller future price window and an unavoidable departure or heating deadline.
Worked example: shifting an EV charge
Assume an EV needs 24 kWh delivered to the battery before 07:30. In the baseline it draws 26.1 kWh at the wall during a 29 p/kWh period; in the planned schedule it draws 26.5 kWh at 11 p/kWh because auxiliary consumption and charging efficiency differ. These efficiency numbers are illustrative and must be measured for the actual vehicle, charger, current and temperature.
Baseline import cost = 26.1 × £0.29 = £7.57. Scheduled import cost = 26.5 × £0.11 = £2.92. Gross operational saving = £4.65 for that charging session, before added subscription cost and any impact on a home-battery or solar-export strategy. If that pattern occurs 80 times per year, the illustrative annual gross opportunity is about £372. If installing compatible metering, a charger interface or paid software costs £250 initially plus £35 per year, the first-year incremental net opportunity is much smaller, and the hardware should be assessed over its useful life rather than written off arbitrarily.
The same 24 kWh service could be achieved by a supplier-managed EV tariff without a custom optimiser. If a simple fixed off-peak window always accommodates charging before 07:30, selecting the cheapest dynamic intervals may add very little value while exposing the household to occasional expensive evening and daytime prices. A realistic comparison therefore tests three strategies: a flat rate, a predictable TOU schedule and a true dynamic-rate schedule using the same interval-by-interval vehicle demand.
| EV case (illustrative) | Metered wall input | Import price | Charge cost | Caveat |
|---|---|---|---|---|
| Unscheduled evening | 26.1 kWh | 29 p/kWh | £7.57 | Valid baseline only if this is how it would be charged |
| Dynamic early morning | 26.5 kWh | 11 p/kWh | £2.92 | All selected slots must fit before departure |
| TOU cheap block | 26.3 kWh | 12 p/kWh | £3.16 | Could be almost as good with simpler control |
| Solar midday at zero import | 26.3 kWh solar | 0 p/kWh import | £0 import | Foregone export value still matters |
| Dynamic with forgotten deadline | Not fully charged | Any rate | Incomparable | A cheaper bill is not a successful schedule |
Check minimum charging current, phase configuration, vehicle wake-up behaviour, plug-in time and the wallbox’s own approved current limiting. A 7 kW nominal wallbox does not guarantee 7 kW at the battery. As the example shows, end-to-end delivered energy and safety-constrained readiness matter more than the lowest displayed unit rate. Our EV charger total-cost guide covers charger, installation and running-cost decisions in more detail.
Worked example: small loads often have modest returns
Take a dishwasher using 1.1 kWh per completed cycle. Moving it from a 28 p/kWh period to 12 p/kWh saves £0.176, about 18 pence for that use. At 180 cycles a year that is around £31.68 before differences in tariffs, extra standby consumption or hardware. If the dishwasher already has a safe built-in delay-start function, the zero-cost option may be to use that. Buying a £60 smart plug, paying for a cloud subscription and taking on restart/fire-risk uncertainties is hard to justify purely for this saving.
Many washing machines and dishwashers do not resume safely when a smart plug energises them. Some demand a physical start button, some reset to standby, and a remotely energised heating appliance may introduce risks that the manufacturer never approved. Only use a supported native integration or manufacturer-approved start-delay/remote-start mechanism. Run water-related appliances when someone can manage leaks and faults, and follow manufacturer instructions. Smart-home automation should not bypass door locks, over-temperature protection, water stops or any other appliance safety logic.
| Flexible load | Typical opportunity | Important constraints | Usually good first step |
|---|---|---|---|
| EV | High, if frequent sizeable charges | Departure SoC, current limits, scheduling conflicts | Native vehicle or charger schedule |
| Immersion hot water | Medium when genuine kWh can move | Thermostat, independent overheat cut-out, hygiene | Approved diverter/controller |
| Heat pump space heating | Highly dependent on building | COP, weather, comfort, emitter and minimum-flow limits | Measure before aggressive preheat |
| Home battery | Sometimes high value | Round-trip losses, degradation, warranties, export rules | Vendor-supported scheduling |
| Dishwasher | Low per cycle | Supported remote start, water leak risk | Manufacturer delay-start |
| Washing machine | Low per cycle | Supervision, supported start, noise | Manufacturer delay-start |
| Dehumidifier | Small to medium, duty dependent | Humidity threshold, water tank, mould prevention | Native control with humidity guardrail |
| Server/NASAliExpress price/network | Often not genuinely flexible | Data loss, uptime, boot wear | Improve efficiency rather than hard-switch |
The hidden cost of moving electricity: standby and conversion losses
A controller draws energy too. Suppose an always-on bridge uses 3 W: annual consumption is 0.003 × 8,760 = 26.28 kWh. At a blended 24 p/kWh this is roughly £6.31 per year, excluding its purchase price. A more capable mini PCAliExpress price might consume more, although an existing Home Assistant host does not become a new expense solely because a tariff automation is enabled. Count only the incremental hardware, software, cloud service or energy associated with this strategy.
Conversion losses can dominate smaller arbitrage spreads. A battery charged with 10 kWh of imported energy and delivering 8.5 kWh later has an illustrative 85% round-trip efficiency at the selected measurement boundaries. Its purchased electricity costs £1.00 at 10 p/kWh; the stored energy delivered later costs 11.76 p/kWh even before degradation. Avoid a simplistic assumption that 10 kWh charged will offset 10 kWh of later grid import. The efficiency may vary with inverter load, temperature, state of charge and auxiliary electronics.
The maximum economically sound export/charge choice requires comparing the marginal values on both sides of the battery and grid, not merely saying “charge whenever prices are negative”. If the retail price is negative but a charging event consumes capacity that would otherwise capture valuable rooftop PV, the later battery state and solar spillage can cancel the apparent benefit. A household has physical bounds—charge/discharge limits, grid import caps, minimum reserve, battery temperature rules, and warranties—that an economic solver cannot waive.
Home-battery arbitrage: the break-even inequality
If one imported kWh is stored in the battery and later recovered with round-trip efficiency η, then the simplified delivered energy cost is buying price ÷ η, before incremental degradation and controls. Let the discharge replace grid electricity costing P_high, the imported charging price be P_low, and degradation/operating cost be D per kWh delivered. The basic economic condition is:
P_high > (P_low ÷ η) + D.
At P_low = 10 p/kWh, η = 0.85 and D = 4 p/kWh delivered (a deliberately illustrative wear allowance), the break-even high price is 15.76 p/kWh. If the avoided rate is 14 p, cycling loses money under these assumptions. If it is 28 p, the gross spread per delivered kWh is about 12.24 p, subject to export opportunity, inverter loading and tax. If the battery was bought primarily for backup, do not charge its whole purchase cost to each arbitrage cycle; if buying a new battery solely for arbitrage, do include capital cost and cycle life in the investment analysis.
| Battery arbitrage variable | Illustration | Why it changes the result |
|---|---|---|
| Purchase rate | 10 p/kWh imported | Contract must actually charge this amount |
| Round-trip efficiency | 85% | Energy later available is less than energy imported |
| Delivered-energy purchase cost | 11.76 p/kWh | 10 ÷ 0.85 |
| Incremental wear allowance | 4 p/kWh delivered | Depends on chemistry, cycle depth, replacement assumptions |
| Break-even avoided import rate | 15.76 p/kWh | Does not include export or standing charges |
| Avoided evening rate | 28 p/kWh | Only valid if discharge really offsets that import |
| Marginal value before other effects | 12.24 p/kWh delivered | Optimiser must respect limits and future solar |
More advanced analysis can incorporate net present value, battery throughput and historical supplier prices. See our home battery ROI and degradation guide. Avoid generic “battery pays back in three years” claims based solely on a cherry-picked volatile price day.
Solar export changes what “free electricity” means
Solar electricity consumed on site is often shown as having zero import cost. This is true as a meter observation but can be misleading as an economic comparison. If surplus electricity could have been exported for 12 p/kWh, using 1 kWh for a discretionary appliance forfeits 12 p of revenue. If charging an EV from the grid overnight costs 8 p/kWh and the midday PV could be exported for 12 p, the pure import/export arithmetic favours exporting the PV and purchasing equivalent energy overnight—provided the terms allow it, loads and efficiencies align and neither option introduces other costs or constraints.
Conversely, when export compensation is only 4 p/kWh but overnight imports cost 11 p/kWh, self-consuming spare PV for the same useful energy usually wins financially. Where the export price is negative, exporting may incur a charge or receive nothing depending on the export contract; do not assume all suppliers will pay an unconstrained negative or positive price. A solar/battery home can also have export caps, zero-export settings, deemed-export arrangements or battery export restrictions. These rules differ across Great Britain, Greece and other markets.
Consider two options for 8 kWh of EV-wall input. In Option A, PV charges the EV and avoids purchasing 8 kWh at a future 9 p/kWh rate, worth 72 p of avoided import. In Option B, the same PV is exported for 13 p/kWh, earning £1.04, while the EV uses 8 kWh at 9 p later, costing 72 p. The net advantage of B is 32 p, before any differences in charging efficiency or storage availability. This example deliberately assumes identical energy quantities and no export limitation; actual delivered battery kWh and meter boundaries should be measured.
| Solar/export situation | Nominal choice | Potential trap |
|---|---|---|
| Export 13 p, future import 9 p | Export now, import later may win | Losses, export caps, EV departure and tariff eligibility |
| Export 4 p, future import 11 p | Use available PV now may win | EV cannot draw below minimum stable current |
| Export prohibited or curtailed | Self-consumption more valuable | Device safety, minimum demand and battery capacity |
| Battery not yet full | Evaluate forecast and reserve | Using PV now may force expensive battery import later |
| Export/retail settlement differs by region | Check actual contracts | Wholesale price is not export credit |
Home Assistant can track separate import and export energy entities, but only if the physical wiring and integration boundaries are correct. Our whole-home billing reconciliation guide explains how to establish that measurement confidence before trusting optimisation profits.
Heat pumps: low price does not guarantee cheap heat
A heat pump converts electrical input into delivered heat at a coefficient of performance (COP) that changes with outdoor temperature, water flow temperature, compressor operation and system design. Heating 1 kWh of the building at an electricity price of 24 p/kWh with COP 4 has an indicative input-energy cost of 6 p per kWh of delivered heat. At a night price of 15 p/kWh but a COP of 2.2, the same useful heat costs 6.82 p/kWh of heat—already more expensive despite the lower electricity rate, before extra building or cylinder storage losses.
That is why aggressive preheating can be counterproductive. Warming a house far above the desired comfort temperature causes extra heat leakage through the building envelope. Raising buffer or cylinder temperatures can reduce the heat pump’s COP. Extra compressor starts, a heat-pump defrost cycle and pump consumption can complicate a theoretical prediction. Some households with high thermal mass and cheap windows can shift a portion of consumption successfully; others save more from steady weather-compensated operation and lower flow temperatures.
Do not disable manufacturer freeze protection, minimum flow or minimum run/off timing, refrigerant safeguards, legionella/hot-water hygiene requirements or backup heater logic. For hot water, follow the manufacturer and local public-health guidance for storage temperatures and pasteurisation. The financial optimum is secondary to hygiene and reliable service.
| Heat-pump case | Electricity rate | Assumed COP | Cost per useful kWh of heat | Interpretation |
|---|---|---|---|---|
| Mild afternoon | 24 p/kWh | 4.0 | 6.00 p | Higher import price, efficient production |
| Cold early morning | 15 p/kWh | 2.2 | 6.82 p | Cheaper electricity but costlier delivered heat |
| Cheap midday warm weather | 10 p/kWh | 3.8 | 2.63 p | Attractive if heat is actually useful later |
| Immersion heater cheap window | 10 p/kWh | ~1.0 | ~10 p | May still be beaten by a heat pump at a dearer rate |
| Preheat beyond comfort need | Any | Variable | Not enough information | Extra standing losses must be counted |
Hot water scheduling: practical economics and controls
A hot-water cylinder is a thermal store, but the usable energy depends on its temperature, volume, mixing, incoming cold-water temperature, heat exchanger and draw pattern. For a simple water-only estimate, energy in kWh is approximately litres × 4.186 × temperature rise (°C) ÷ 3,600. Heating 180 L by 25°C stores about 5.23 kWh of thermal energy in a simplified perfectly mixed model. That does not mean exactly 5.23 kWh will be useful at the taps, nor that the full amount can be shifted without increasing heat losses.
If an electric immersion delivers roughly 5.23 kWh heat at 1 kWh electric per kWh thermal, shifting all of it from 28 p/kWh to 10 p/kWh offers an idealised difference of £0.94. If the cylinder then loses an extra 0.8 kWh of stored heat before use, the true reduction is less. If the normal hot-water source is a heat pump with COP 2.8, displacing its running hours with an immersion changes the comparison dramatically: 5.23 kWh of useful heat from the heat pump needs roughly 1.87 kWh electricity, not 5.23 kWh. Any cost model must compare the same hot-water service with actual device efficiency.
A solar PV diverter may already be harvesting energy when export compensation is low. Duplicating its control with Home Assistant can create contradictory commands and an unreliable backup strategy. Choose one authoritative controller and preserve the cylinder’s independent mechanical thermostat and over-temperature cut-out. High-current immersion circuits require approved switching equipment and a competent installer. Home Assistant can schedule a manufacturer-supported controller, not replace protective controls.
Dynamic tariff suitability by household
Annual electricity use by itself is a poor predictor of savings. A large household with high inflexible evening consumption may suffer badly under high dynamic peaks, while a smaller EV household with a long overnight plug-in window may gain. The right metric is shiftable kWh with a deadline and known loss factor. Create a seven- to fourteen-day inventory of discretionary energy and identify which devices already have native scheduling. Then test representative winter and summer price profiles rather than one particularly favourable day.
| Household profile | Likely value from dynamic pricing | Better first investment | Risk to investigate |
|---|---|---|---|
| EV owner, frequent 20+ kWh sessions | Often substantial | Supported charger/vehicle schedule and accurate import meter | Departure deadlines, conflicting schedules |
| No EV, no electric heating, small flexible appliances | Often modest | Measure and reduce standby/base load | Higher daytime/peak exposure |
| Large home battery and reliable local inverter interface | Potentially meaningful | Verify import/export settlement and battery limits | Wear, export eligibility, extra cycles |
| Solar PV with generous export tariff | Depends strongly on export terms | Separate import/export measurement | Self-consumption may forgo valuable exports |
| Heat-pump home with weather compensation | Variable | COP/heat measurement, moderate shift experiments | COP degradation, heat leakage and comfort |
| Heat-pump plus cylinder and buffer | Potentially useful | Native control and storage-loss measurement | Hygiene, excessive storage temperature |
| Rented flat with little schedule control | Usually limited | Compare normal retail contracts | Lock-in, fees and peaks outside user control |
Do not compare dynamic rates with the headline unit rate of a fixed product while ignoring standing charges, taxes and other qualification rules. Some suppliers bundle export access, smart-device compatibility or a particular meter with a tariff. Changing import contract can also change export compensation or make existing automation features unavailable. For a fair comparison, reproduce the entire annual bill under the alternative contract assumptions using measured half-hourly or quarter-hourly imports and exports.
A worked household-level comparison
Consider an illustrative household that imports 4,200 kWh annually. Its baseline retail tariff charges 24 p/kWh plus a 55 p/day standing charge. The simple annual import energy charge is £1,008 and the standing charge is £200.75, giving £1,208.75, excluding any unrelated charges or credits. Suppose a dynamic plan applied to exactly the same timestamped consumption results in a weighted 22 p/kWh, but the standing charge rises to 62 p/day. The corresponding totals are £924 for electricity and £226.30 standing: £1,150.30, a difference of £58.45, before any active load shifting.
Now suppose the household moves 700 kWh during the year from intervals averaging 32 p/kWh to intervals averaging 12 p/kWh, with the same meter kWh, no lost export and no conversion loss. The theoretical additional saving is £140. If real losses consume another 30 kWh in 12 p periods, that costs £3.60. Add a £45 annual subscription and £12 annual incremental hardware power/maintenance allowance: the net additional saving attributed to automation becomes £79.40. The total illustrative difference from the original flat-contract baseline is £137.85, but this is a scenario calculation, not evidence of what a particular supplier will deliver in 2026.
| Illustrative annual element | Flat contract | Dynamic, no shifting | Dynamic, with shifting |
|---|---|---|---|
| Original 4,200 kWh energy charge | £1,008.00 | £924.00 | £924.00 before shifting adjustment |
| Shifting price benefit | £0.00 | £0.00 | −£140.00 |
| Extra 30 kWh conversion/standby energy | £0.00 | £0.00 | +£3.60 |
| Annual standing charge | £200.75 | £226.30 | £226.30 |
| Incremental subscription | £0.00 | £0.00 | +£45.00 |
| Incremental other running cost | £0.00 | £0.00 | +£12.00 |
| Estimated annual total | £1,208.75 | £1,150.30 | £1,070.90 |
| Savings against flat tariff | — | £58.45 | £137.85 |
The table deliberately isolates only these specified elements. In a genuine installation, the dynamic weighted price itself may change with schedule, and solar export, taxes and equipment capital cost may apply. Avoid double counting: if you have already recalculated the complete interval-by-interval bill after shifting load, you must not subtract the same £140 price-shift gain again. Show the baseline and optimised interval-cost sum side by side and identify every incremental line item.
How to perform a fair back-test using actual interval readings
Obtain a representative set of time-stamped import data from the electricity supplier or a trustworthy energy meter, ideally covering weekdays, weekends, winter, summer and relevant holiday periods. Obtain the matching retail import prices for those intervals, export prices if needed, and standing charges. Normalize timestamps to UTC for calculation, while showing local time for the user’s convenience. European daylight-saving transitions create local days with 23 or 25 hours; do not assume exactly 48 half-hours or 96 quarter-hours on every local calendar date.
Each row should have an interval start, interval end, imported kWh, exported kWh, applicable import price and applicable export price. Import and export are separate physical directions; do not subtract whole-day exports from whole-day imports before applying time-specific prices. If you have multiple meters, document which readings correspond to the supplier’s boundary and whether the supplier nets phases or intervals differently.
- Calculate the observed historical bill without changing the schedule: sum each interval’s imported kWh × actual retail import price, subtract eligible export credits, then add fixed charges and other contract components.
- Simulate the feasible shifted load with a declared device power limit, available connection period, deadline, minimum energy service and losses. Keep the rest of the historical load unchanged unless a physical interaction is explicitly modelled.
- Recalculate the interval bill using the shifted total import and export. Do not claim that every historically cheap interval would have been known or usable by the controller at the decision time.
- For an alternative tariff, apply its price vector and standing charge to both schedules, including any compatibility or export consequences.
- Report the average, median and worst observed results, plus how often automation could not finish a load by its deadline. Back-tests estimate opportunity; they do not establish future savings.
| Back-test check | Why it matters | Common failure mode |
|---|---|---|
| Comparable dates and seasons | Prices and heating load vary strongly | Cherry-picking a spring weekend |
| Actual retail prices | Spot market price omits charges | Overstating arbitrage spread |
| Interval kWh, not monthly aggregate | Usage/price correlation drives costs | Assuming every kWh saw the mean price |
| Power and deadline constraints | Cheap intervals may be too short | “Free” charge after vehicle departure |
| Conversion losses | Shifted use is not necessarily constant | Assuming 100% battery efficiency |
| Solar export opportunity | PV diversion sacrifices potential credit | Calling exported solar “free” |
| Service equivalence | Hot water and comfort still needed | Underheating counted as saving |
| Fixed and recurring charges | Contract choice changes overall bill | Ignoring standing-charge increases |
| Missing intervals | Data gaps bias results | Treating missing kWh as zero |
| Forward-looking data | A real controller cannot see the future | Perfect-hindsight savings |
Price feeds for Home Assistant: choose contract-grade data
For Britain, a tariff-specific supplier API or a vetted integration that matches the exact import product and region is more relevant to household cost than a generic wholesale feed. The Octopus API documentation describes querying period-bounded price records and recommends explicit UTC timestamps to handle daylight saving correctly. Do not copy an old product-code URL into a long-term production system: products, API addresses and contract terms change. For Nord Pool regions, the official Home Assistant Nord Pool integration provides market-area prices and an action to retrieve a day’s interval prices. Its returned price data is per MWh, so divide by 1,000 for per-kWh calculation; then add any retail contract-specific charges only if that arithmetic actually matches the supplier’s terms.
Home Assistant can display a current price entity in the Energy dashboard, but the dashboard is not a billing authority. Its own Utility Meter integration is useful for consumption counters and standard TOU allocation, not automatically a complete dynamic-price historical invoice engine. A 15-minute or 30-minute dynamic scheme benefits from a separate interval table or trustworthy supplier consumption download, where you can join prices and kWh by timestamp. The integration’s current interval resolution may change, and a chosen smart tariff may have a different interval duration from the associated wholesale market.
| Data source | Strength | Limitation | Best use |
|---|---|---|---|
| Retail supplier’s published interval price | Closest to billed import rate | API/key, region, formula and VAT details | Real scheduling and cost estimates |
| Supplier settlement import/export intervals | Billing-aligned energy | May arrive with delay or revisions | Bill verification and back-testing |
| Local grid import/export meter | Timely and private feedback | Installation and data reliability | Live control feedback |
| Nord Pool spot prices | Market day-ahead signals | Not necessarily retail inclusive | Forecast and spot-linked contracts |
| Inverter PV/battery data | Detailed local production/storage | May omit house/grid boundary | Optimising internal energy flows |
| Forecast.Solar | Helps anticipate PV supply | Forecast error and update cadence | Conservative future planning |
| Manual spreadsheet | Transparent baseline | Requires disciplined maintenance | Decision analysis before coding |
A good system records the source timestamp as well as the Home Assistant receipt timestamp. An API request completing at 00:15 does not mean the price it returned applies from 00:15. Preserve the original interval start/end fields, contract currency and unit. If a price feed supplies multiple time zones, store UTC internally and convert for display. Do not automatically mark an expired yesterday price as valid today simply because the sensor entity retained its last numerical state.
A simple monitoring-only Home Assistant price sanity check
Before enabling device control, create a monitor that surfaces the current retail price only when the input looks plausible. The following example assumes you already have a contract-specific sensor.retail_import_price_gbp_per_kwh entity. Replace the name and units with your actual integration. This is an illustrative monitoring helper, not a tariff API client, invoice calculator or an instruction to control a charger.
template:
- sensor:
- name: Retail import price validated
unique_id: retail_import_price_validated_071
unit_of_measurement: "GBP/kWh"
availability: >-
{{ is_number(states('sensor.retail_import_price_gbp_per_kwh'))
and -0.50 <= (states('sensor.retail_import_price_gbp_per_kwh') | float) <= 2.00 }}
state: >-
{{ states('sensor.retail_import_price_gbp_per_kwh') | float(0) | round(4) }}
The numerical range above is an example validation guard, not a universal market boundary. Dynamic retail rates may exceed these bounds, and legitimate negative prices may fall below the chosen threshold. Set bounds from the actual contract and ensure the upstream integration’s data validity/timestamp can be checked; the template alone cannot tell whether the price is stale. A key rule is that an unavailable or questionable price should not automatically be interpreted as zero or an unusually cheap window. That would cause an automation to turn on precisely when the data system failed.
A conservative no-control warning automation
The next example sends a persistent notification when the retail price sensor is invalid or unavailable. It does not alter equipment, so it is a useful commissioning step. It runs on Home Assistant startup and periodically, and avoids basing safety-critical decisions on a transient price entity. Change the source ID and desired notification text for the installation.
automation:
- id: energy_071_bad_tariff_price_warning
alias: "Energy: warn if retail tariff price is unavailable"
triggers:
- trigger: homeassistant
event: start
- trigger: time_pattern
minutes: "/15"
conditions:
- condition: template
value_template: >-
{{ not is_number(states('sensor.retail_import_price_gbp_per_kwh')) }}
actions:
- action: persistent_notification.create
data:
title: "Tariff price input unavailable"
message: >-
The configured retail price sensor is unavailable. Confirm
supplier/API data and use the device's native fallback schedule.
mode: single
Home Assistant configuration keys and integrations evolve; always validate in Developer Tools and test the automation in a safe environment. A better production freshness check compares the supplier’s interval end timestamp with the present time, using the exact timestamp entity or attribute documented by that integration. If the provider reports a price for tomorrow before an interval begins, that price can be known but not the current applicable price. Distinguish forecast, published and active-price states.
Scheduling methods: choose the least complex controller that meets the goal
A fixed overnight EV schedule is often sufficient. A native charger or vehicle timer may survive a Home Assistant restart or network failure better than an elaborate integration. For genuine dynamic prices, a controller can select the lowest-cost feasible sequence of slots before departure, while respecting the charger’s own enforced supply current limit. More sophisticated optimisers such as EMHASS or evcc can coordinate multiple devices, forecasts or batteries, but they add assumptions and dependencies that should be justified against a rules-based baseline.
Never allow competing authorities to command the same device. If the supplier manages EV scheduling, do not have a separate Home Assistant automation repeatedly pausing and resuming the vehicle. If the inverter operates the battery reserve, Home Assistant should not override that reserve through undocumented Modbus registers. Establish a hierarchy: physical safety and protective functions; manufacturer/device limits; installer-commissioned electrical demand limitation; household energy strategy; convenience and price optimisation. A dashboard or general-purpose script must not replace grid protection or electrical overload safeguards.
| Approach | Good fit | Dependencies | Safe fallback |
|---|---|---|---|
| Manufacturer timer | Simple fixed TOU window | Device local clock and vendor settings | Native schedule persists |
| Supplier-managed EV tariff | Supported car/charger and tariff | Supplier eligibility, cloud and app | Document manual charge procedure |
| Home Assistant rule | Small number of clear thresholds | Local HA host, valid price and API | Native device schedule or explicit safe state |
| Dedicated energy manager | Multiple loads, solar, batteries | Compatible devices, meter, licences | Vendor-supported defaults |
| Optimisation solver | Dynamic prices and multiple constraints | Correct model, forecasts, trustworthy actuation | Conservative rules-based baseline |
| Manual scheduling | Few large discretionary loads | Human attention | No smart-home dependency |
EV scheduling without missing the departure deadline
A robust EV algorithm needs more than a sorted price list. Record current charging requirement, desired battery SoC or target delivered kWh, plug-in start, departure deadline, achievable charger power, phase count, any maximum import limit, minimum charging current and conversion efficiency. Restrict candidate intervals to periods when the car is actually connected. Reject any plan that cannot meet the target at available charging power, and reserve a safety margin because charging taper, telemetry lag and pauses may occur.
Example: the car needs 18 kWh at the wall and can charge at 6 kW. It needs about three hours of active charging. With six half-hour slots selected at 8, 9, 10, 12, 16 and 20 p/kWh, each slot delivers approximately 3 kWh and contributes 24, 27, 30, 36, 48 and 60 p respectively: £2.25 total. A contiguous three-hour block at 14 p/kWh would cost £2.52, so the theoretical optimisation saves 27 p in this session. If starts and stops reduce delivered energy, or if the vehicle must finish early, the £0.27 advantage may disappear. Price selection must be anchored to the full service requirement, not to the desire to run in the absolute cheapest slot.
For a price API outage, prefer a conservative native charge window or explicit emergency charge rather than leaving the car empty at departure. Keep the wallbox’s metering and certified load management in charge of electrical limits. Grid overload protection cannot depend on Home Assistant remaining online, and changing an automation should never defeat charger protective functions. The household should know how to force a manual charge if the tariff system fails.
Battery charging and reserve priorities
A home battery has competing uses: backup reserve, midday solar capture, load shifting and possible export arbitrage. They cannot all be maximised independently. If the controller fills the battery overnight from cheap imports, there may be no capacity left for free or export-constrained solar the following morning. If the controller exports too aggressively before a power cut, backup resilience falls. A reliable forecast helps but should not become the sole source of truth, particularly for weather-dependent production.
A conservative priority order is to maintain a user-defined backup reserve, respect inverter and BMS constraints, honour any export restrictions, reserve enough capacity for credible PV, then optimise remaining energy against retail import/export spreads and wear. When local battery state of charge is stale or contradictory, suspend economic optimisation and let the inverter’s supported native control operate. Avoid treating battery SoC as a perfect energy gauge: degradation and nonlinear reserve/usable-capacity behaviour can make 50% of the displayed SoC something other than half the nominal kWh.
The Forecast.Solar Home Assistant integration provides useful PV-production estimates, but it explicitly describes those values as forecasts, not measurements. Back-test their error during the seasons that matter, and use a margin rather than planning the battery to land exactly at a critical reserve.
Common tariff and automation mistakes
| Symptom | Likely cause | Practical correction |
|---|---|---|
| Price looks 1,000× too large | EUR/MWh interpreted as EUR/kWh | Convert once, document raw and displayed units |
| Home Assistant always says electricity is cheap | Stale sensor or default value zero | Verify validity timestamp and stop economic control on failure |
| Bill savings much lower than dashboard | Standing charges, taxes or wrong import boundary | Reconcile using actual supplier intervals |
| Solar self-use appears free | Export opportunity cost omitted | Compare export credit with alternative import cost |
| Battery cycles constantly for tiny gains | Wear and conversion loss excluded | Require positive spread net of efficiency and degradation |
| Charger misses departure target | Planned energy exceeded feasible power-time window | Add power, margin and emergency override |
| High-peak bill increased despite shifting | Inflexible consumption remains at expensive times | Back-test whole house, not just shifted devices |
| Heat-pump costs rise after preheat | Lower COP or extra storage losses | Compare useful heat and comfort, not just import kWh |
| Appliance does not start when plug turns on | Device requires manual start | Use native approved remote-start feature |
| Negative price does not produce a negative bill line | Retail contract formula differs | Use exact retail tariff and settlement rules |
| Prices shifted one hour around clock change | Naive local timestamps | Join all intervals in UTC and display local timezone separately |
| Two controllers fight over battery/charger | No single command authority | Assign one primary scheduler and one documented fallback |
A practical commissioning process
Week 1 — measurement only. Capture the supplier’s retail interval prices, time-stamped import/export kWh, standing charge, and daily bills without changing any appliance schedule. Validate price currency, unit, VAT status, negative values and UTC boundaries. Confirm that the meter measures actual grid import rather than whole-house consumption. At the end of the week, compare sums with the supplier’s available settlement records.
Week 2 — establish the baseline. Identify energy that is truly flexible. Create hypothetical plans without controlling real devices and simulate only physically feasible moves. Compare existing manufacturer schedules against candidate dynamic optimisation. Track average savings, maximum price exposure, missed-deadline risk and the number of required manual interventions. This is especially useful for someone who already has a favourable EV overnight tariff.
Week 3 — one supervised device. Activate approved scheduling on one supported device, normally an EV charger or appliance with native scheduling. Do not use mains-switching relays or homemade software for statutory load shedding, charger protection or immersion over-temperature protection. Run the installation through realistic restarts, temporary Internet loss, sensor unavailability, missed timetable updates and manual overrides. Log the command, the measured response and the actual cost of the completed service.
Week 4 — measured business case. Compare actual supplier interval data with a counterfactual schedule and disclose uncertainty. Add other loads only if the first controller demonstrates meaningful net gains and consistent operation. Keep a monthly reporting dashboard with financial results and failures, not merely the prettiest price chart. Maintain a written record of the tariff contract and algorithm assumptions, because both can change.
| Checkpoint | Pass criterion | If it fails |
|---|---|---|
| Price entity validity | Correct unit and active retail interval | Disable price-based optimisation |
| Grid import measurement | Aligns with supplier interval data | Fix meter boundary/calibration |
| Export credit | Contract-compatible rate and meter | Do not assign fictional income |
| Device schedule | Required service delivered on time | Broaden window or use native fallback |
| Power safety | Manufacturer/installer limits enforced independently | Stop automation, correct architecture |
| Outage recovery | Predictable after Home Assistant/cloud outage | Revert to supported native operation |
| Financial result | Net savings after all meaningful costs | Simplify or abandon strategy |
| Maintenance | Logs, credentials, contracts documented | Avoid fragile unmaintained custom stack |
How much hardware is worth buying for tariff automation?
If the household already has Home Assistant, a supported smart meter and a charger with an official integration, the incremental software cost may be small. If the automation requires a new mini PCAliExpress price, energy meter, proprietary bridge, professional installation, a paid licence or a replacement charger, calculate the simple investment case first. A £300 incremental installation that saves a verifiable £30 a year has an undiscounted payback of ten years, ignoring maintenance and the risk that the tariff changes. A £120 extra installation saving £150 per year deserves much closer consideration.
Hardware purchases should be driven by data quality and supported control, not by the number of dashboard features. Prefer a reliable grid import/export meter with suitable phase support, a device that exposes documented local or contractual control, and a Home Assistant host with proper backups. For mains metering and wiring, use a qualified electrician and manufacturer-approved equipment. Avoid buying several gateways that perform the same job or relying on unofficial reverse-engineered control for equipment that must remain safe and dependable.
The most useful purchase categories are an approved energy meter or gateway, a compatible EV charger/control interface, a reliable Home Assistant host, and manufacturer-supported monitoring for the inverter or heat pump. Pricing and availability depend on country, electrical supply and device revision; compare the installed price and integration compatibility rather than a headline online listing.
Regional questions: UK, EU and Greece
A UK example may be useful for modelling a British smart meter, Octopus Agile rates and pence-per-kWh maths. It is not a universal template. In Greece or another European market, residential retail pricing can combine supplier energy charges, network components, regulated levies, tax, other periodic fees and contract-specific terms. A day-ahead electricity exchange signal is not sufficient to infer the household’s marginal retail cost unless the retail agreement demonstrably tracks that signal and its adders. Some areas have 15-minute market prices, while a household’s billing or data feed may use different resolution.
The core maths is portable. Convert currencies and units carefully: €80/MWh = €0.08/kWh, whereas 8 p/kWh = £0.08/kWh. Do not mix VAT-exclusive and VAT-inclusive examples. Where the export regime is net billing, net metering, a feed-in contract or something else, model the actual compensation and settlement rules; do not apply the UK export-credit example to a Greek installation without checking the agreement. Treat future regulatory and retail tariff changes as a risk rather than a guaranteed source of savings.
Frequently asked questions
Is a dynamic tariff always cheaper than a fixed tariff?
No. It can be more expensive when unavoidable household electricity falls in high-price intervals, the standing charge is higher, or a supposedly flexible load cannot move far enough. Back-test actual interval usage under both contracts and include all fixed charges before switching.
What is the minimum flexible energy for worthwhile automation?
There is no universal threshold. The relevant calculation is annual shiftable kWh × realistic net rate difference, less extra losses, subscriptions and capital costs. Many households will obtain more benefit from scheduling an EV than from automating a few low-energy appliance cycles.
Can prices be negative, and will my supplier pay me to consume?
Wholesale market prices can be negative and some retail contracts can pass through negative values, but not all do. Confirm the retailer’s exact import formula, caps, taxes, minimum rates, eligibility and billing method. A negative market value is not proof that a household has negative all-in import cost.
Is 15-minute data better than half-hourly data?
Finer intervals can reflect short-lived price changes more precisely, but only if the contract, supplier meter and control interface all support the required timing. Using 15-minute market data to schedule a half-hour retail product can make results worse rather than better. Preserve the native interval durations when importing data.
How do I calculate real savings rather than estimated dashboard savings?
Compare actual supplier settlement kWh and applicable retail rates before and after scheduling, using a defensible baseline for what would have happened otherwise. Include export credits, standing charges when comparing contracts, energy losses, wear and software costs. Maintain service quality and disclose uncertain counterfactual assumptions.
Are Nord Pool prices the same as my electricity bill?
Usually not by themselves. Nord Pool values are market prices for a region. Retail contracts may add distribution, taxes, margins or other charges and may be settled differently. The Home Assistant integration also exposes per-MWh source data in some actions, making unit conversion essential.
Is Home Assistant Utility Meter enough for dynamic cost accounting?
Utility Meter is very useful for energy consumption totals and fixed tariff buckets. For many changing interval prices, you also need a trustworthy time-aligned record of prices and kWh; a single daily or monthly weighted estimate can lose information. Check the current Energy dashboard capability and verify against the supplier’s own interval records.
Does a solar battery guarantee greater savings on a dynamic tariff?
No. Round-trip efficiency, degradation, purchase cost, export credit and future PV production all matter. Some controlled cycles cost more than the electricity they avoid. Never sacrifice an important backup reserve or exceed inverter/BMS operating constraints merely for tariff arbitrage.
Should I turn my heat pump off during expensive hours?
Not automatically. That can reduce comfort, trigger backup heating, increase later flow temperature and lower efficiency. Evaluate cost per useful kWh of heat and monitor the building’s response. Manufacturer safety and minimum-flow protections remain authoritative.
What if an EV charging schedule fails overnight?
Use a documented native charger/vehicle fallback or manual emergency-charge option. The system should alert on an unachievable deadline rather than quietly leaving the car below the required battery state. Do not bypass charger load management or electrical protections.
Can I safely start a washing machine with a smart plug?
Only if the appliance and manufacturer explicitly support the proposed remote-start behaviour and all relevant safety controls remain intact. Many appliances do not resume after a power interruption. Built-in delay start is often the safer and cheaper method.
Why did I save only pennies despite big price spikes?
A large peak-versus-trough price spread is useful only for kWh that could realistically move between those exact periods. If the load was small, the cheap window short or the car already used a TOU rate, incremental net benefit will be limited.
Do higher standing charges cancel dynamic-rate savings?
They can. When comparing two contracts, include the full annual standing charges and other fixed fees. When comparing only two schedules under the same contract, fixed charges usually cancel and should not be attributed to the scheduler.
How do daylight-saving changes affect automations?
Local-time days can have missing or repeated clock hours. Use UTC interval timestamps internally, verify the retailer’s settlement periods and test the transitions explicitly. A scheduler that assumes 48 half-hour periods for every local day can misprice or omit energy.
How should I handle missing price data?
Treat the price as unavailable, not zero. Stop or suspend discretionary economic optimisation and use a documented safe fallback appropriate to the device and its deadline. Validate timestamps, availability and contract applicability; don’t rely only on whether the sensor displays a number.
Can an optimisation app guarantee annual savings?
No. It can compute a schedule under assumptions. Tariffs, weather, vehicle use, device compatibility, meter delays and user overrides change the achievable outcome. Trial a rules baseline and compare measured results before paying for additional optimisation software.
Should I install a new meter to use these automations?
Only if your current metering cannot supply trustworthy boundary-correct import/export information. A compatible existing smart meter or approved local energy meter may be sufficient. Installation within a consumer unit and work on mains conductors require a competent professional.
Is a negative price a signal to run every appliance?
No. The contract may not pass negative prices through, and indiscriminately starting loads can create safety, noise, wear or inconvenience costs. Keep service deadlines, supported start mechanisms and electrical limits ahead of economic control.
Official documentation and further reading
- Home Assistant — Nord Pool integration and 15-minute market transition.
- Home Assistant — Nord Pool day-ahead price action.
- Home Assistant — Utility Meter integration.
- Home Assistant — Forecast.Solar integration.
- Octopus Energy — Agile tariff information.
- Octopus Energy — smart tariff terms.
- Octopus Energy — API price endpoint reference.
- ESP32.co.uk — electricity tariff sensors: fixed, time-of-use and dynamic.
- ESP32.co.uk — EV charger total cost.
- ESP32.co.uk — home battery ROI, degradation and tariffs.
- ESP32.co.uk — reconcile Home Assistant energy with your bill.
Editorial note: Figures, tariff prices, charging losses, warranties and household scenarios above are illustrative rather than live offers. Validate current manufacturer documentation and your exact supplier agreement before making a purchase or enabling equipment control. This article is not a substitute for professionally designed electrical or heating safety systems.
