The market re-prices every 15 minutes. So does the hub.
If your contract follows the market, a cost computed at an average price was built on a number that was never your price. RBgrid fetches the day-ahead price for your price zone, applies your contract to it, and books each 15-minute period's energy at that period's own price - on the device, with the price it used kept beside the energy.
The price of this period, not the price of today
For each 15-minute period the hub takes the price from the market source you chose; if that source has no price for the period, from your backup source; if neither has one, from your own tariff plan. Which of the three it used is recorded with the period, so the chain is visible afterwards and not only at the time. (The app and the docs call a source a provider - it is the price feed, not your electricity supplier.)
Your contract, not the wholesale number
A market price is not what you pay. On a spot source the hub applies your contract on top: a factor and a markup, then your plan's per-kWh energy tax, grid fee and renewable levy, then VAT. On an all-in source — one that already publishes the retail price — nothing of the plan is added, which is what stops the taxes being counted a second time.
Negative prices pass through and credit the period, because that is what a contract that follows the market does. If yours does not pass them through, set a floor.
The price it used is kept, period by period
Every closed 15-minute period's applied price is logged with where that price came from — your market source, your backup, a push from Home Assistant, or your own plan — and kept for 40 days. Download it as CSV.
A monitor that shows you a cost is asking you to believe it. One that shows you the price it used, per period, with the source of each, is handing you the arithmetic. Forty days is long enough to still have it when a statement arrives.
It will not reconcile with your supplier's bill, and it is not meant to: we measure at your clamps, they measure at their meter. What it gives you is the ability to see which periods cost what, and why.
Knowing when energy is cheap, in time to use it
Tell the hub what you want - the cheapest periods of a span you choose, a run time that has to be finished by a given hour, or any period under a price you name - and it works out when that is and publishes it: a retained MQTT message on a standalone hub, a Home Assistant event on a hub running the ESPHome package, and a line in its own log either way.
The hub switches nothing itself. There is no relay on it and no setting that turns anything on. It publishes a notification; a Home Assistant automation, a diverter or a charger reads that notification and decides. If you were looking for a device that controls a load by price, this is not that device.
The highest 15 minutes of the month
Where a tariff charges for the hardest you pulled rather than only for what you used, the hub keeps the highest 15-minute and hourly import of each billing cycle, and the three heaviest days. Measurement only: it changes no cost figure, and it will not match your supplier's number exactly, for the same reason the log will not match the bill.
Where the prices come from
The hub fetches them itself, for the zone you choose: Energy-Charts (Fraunhofer ISE), Nord Pool, Elpriset just nu, Hva koster strømmen, EnergyZero and Octopus Agile. Each source carries the attribution its licence asks for, and the hub carries that text with the price. The app credits it on its Prices page; if you build your own dashboard, showing it is yours to do. Home Assistant can also push prices in, for a supplier none of these covers.
The hub converts no currencies: your tariff plan's currency and your price zone's currency have to be the same one.
However you run it
Prices work the same whether the hub serves its own web app or runs inside Home Assistant as an ESPHome device: the same core, the same sources, the same fallback. What differs is where you set them - and that inside Home Assistant the long-term statistics stay hourly, while the 15-minute money lives on the hub and in its log.
The European frame
Across the EU the day-ahead market has settled to 15-minute periods, and larger suppliers are required to offer a dynamic-price contract to customers with a smart meter - the directive sets a size threshold, and some countries lower it. Whether such a contract suits you is your call and your supplier's; what the hub does is price your own energy at the same resolution the market is priced at.
What it does not do
- It does not control anything. Prices in, notification out; the switching is somebody else's.
- It does not convert currencies. Plan and zone must trade in the same one.
- It does not bill you. No capacity charge, no reconciliation with a supplier's statement.
- It does not cover every supplier. The sources above are what it fetches; anything else comes in from Home Assistant.