Own The Peak · Part 3 of 8
Your Battery Is a Peaker Plant — If You Operate It Like One
In short
- Run a home battery like a peaker plant: charge when energy is cheap, dispatch when it is dear.
- A four-tier order of priorities decides when the system should refuse to act.
- The 27 January spike it missed and the 5 April restart show that control is the whole game.
- 186 c/kWhthe 27 January spike the system missed entirely
- 92 %self-sufficiency over the period, with the cooker carved out
- $20earned by seven super-spikes above 30 c/kWh
The mental model that changed everything
A peaker plant is a power station that spends most of its life switched off. It exists for the handful of hours a year when the grid cannot meet demand and the wholesale price climbs through the roof. It earns its keep by generating the right electricity at the right moment. Capacity factor in the single digits. Revenue concentrated in a few dozen intervals. The economics live or die on dispatch.
I was about a month into living with a 48 kWh home battery when I realised that, if you squint, it works on the same logic.
On a wholesale tariff a battery is not a “store solar by day, use it by night” appliance. That description is technically true and economically uninteresting. It is a small, fast peaker plant with a customer of one. It charges when energy is cheap or free and discharges when energy is dear. The half-hours it gets right are worth dozens of the ones it gets wrong. And the default firmware does not know any of this.
The default firmware discharges against any household load whenever there is load, regardless of price. It arrives at the evening peak half-empty because it spent the afternoon politely powering the fridge during a 4 c/kWh interval. It sits at 100 % through the negative-price window at midday because, from its point of view, there is nothing to do. It is a dispatchable asset run like a torch.
The peaker analogy, properly
The analogy is about dispatch logic, not scale. A 48 kWh battery in suburban Melbourne is not in the same business as a 200 MW gas turbine. What I borrow is the mindset:
- A peaker operator optimises for revenue per dispatch, not capacity factor.
- They run when energy is dear, not when it is cheap.
- They pre-position the asset against the price curve.
- They know their limits. Cycles cost money.
On Amber’s tariff that means putting kilowatt-hours into the battery when they are cheap or free and taking them out when they are expensive, or better, when someone will pay me handsomely for them. Cycling has a cost. Mistakes have a cost. Having any dispatch logic at all is what separates the asset from the appliance.
The first time I watched the system curtail solar into a deeply negative price and then refill the battery from the grid on the cheap side of midnight, I understood I was now operating something, not just owning it.
The MVO hierarchy
Before I built any automation I needed to know what I was optimising for. “Save money” is not an answer. “Maximise exports” is worse: it would have me dumping cheap solar at 4 c/kWh to make the export number bigger. I needed an objective with a sense of order.
I call it the MVO hierarchy. Four tiers, ranked, each meaningful only once the one above is satisfied.
Tier 1: Self-sufficiency. Cover household load from on-site generation and storage. Not for ideological reasons. Because every kilowatt-hour I do not buy at peak is worth roughly four times a kilowatt-hour sold at the average feed-in price. Avoiding peak import (40 to 55 c/kWh) is the most valuable thing the system does. Five months in, self-sufficiency is 92 %, with one carve-out I come to below.
Tier 2: Cover the monthly fixed costs. About $50 a month: the network connection charge plus Amber’s membership fee. In summer, with 19.4 kW of panels and a battery that finishes most days at 99 %, solar exports cover it twice over. In winter the only way to keep Tier 2 alive is grid arbitrage: buy cheap in the middle of the day, sell in the evening peak, and let the spread cover the standing charge. Whether that works at my latitude I do not yet know. Ask me in July.
Tier 3: Battery replacement fund. A battery is a wear item. Any export above Tier 2 has to clear the cycling cost before it counts as profit. I do not have a calibrated per-cycle number, so I am not claiming Tier 3 is funded. It sits there as a discipline, not a line on the balance sheet.
Tier 4: Pure profit. Anything left over. Not much yet. Perhaps more once I am buying low and selling high through a winter. Perhaps not.
The hierarchy tells the dispatch logic when to refuse to act. A great export opportunity is worthless if it leaves the battery flat going into the evening peak. A cheap charge at 11 a.m. is worthless if the battery is full and the sun is out. The tiers turn “what should I do right now?” into a question with a defensible answer.
The dispatch logic
The control loop sits in a permanent “Remote EMS” mode: the inverter hands the strategic decisions to my Home Assistant. Four rules describe everything the battery does, in priority order.
Rule 1: Curtailment. If the live feed-in price drops below zero, which on wholesale pricing happens at midday on bright weekends, the system clamps the export limit to roughly zero. If solar is still coming off the panels, it goes into the battery, up to the charge ceiling. This is the most important rule, because getting it wrong costs real money in the wrong direction.
Rule 2: Opportunistic charge. If the buy price is below about 5 c/kWh and the battery is not full, charge from the grid. That lets the battery refill from a 2 c/kWh interval at 1 a.m. and discharge into a 35 c/kWh peak the next evening. The arithmetic does not care whether the energy came from my own roof or the wholesale market. A coulomb is a coulomb.
Rule 3: Morning charge. Once a day, about an hour before midday, if the battery is not full and the solar forecast looks soft, top it up from the cheapest available source. That sets up the evening peak on a cloudy day.
Rule 4: Evening reserve (placeholder). Not built yet. As the evening peak approaches, the system should not discharge against household load if the charge is below a threshold. It should hold the energy for the peak window. I get away without it because the battery is so over-specified for summer that it walks into the peak at 99 % anyway. I will need it in winter.
Curtailment is a hard safety rail. The other three are optimisation. Curtailment was the first thing I built, and the first thing that broke.
Spike capture
If you remember one number from this post, make it this one: 62 % of every dollar I earned exporting solar over five months came from 205 half-hours. The other 6,000 or so earned the remaining 38 %.
That is peaker economics in a line. Most of the work the asset does is unremarkable. Most of the value is concentrated in a tiny minority of intervals where the price spikes. Seven of those 205 were super-spikes above 30 c/kWh and they alone earned $20. The rest of the curve is a long, slow grind at 4 to 8 c.
So the system has to be holding stored energy when a spike arrives, push hard, and not flinch when the volume looks small against the running average. Optimise for the average and you miss the events that matter.
The cleanest example I have is also the worst. On 27 January 2026 the feed-in price briefly hit 186 c/kWh. My battery was full and my panels were generating. Every condition for a maximum-rate discharge was true, and I missed it entirely. The system was not wired to treat an event that size as a discharge cue, the export limit was set conservatively, and the spike was gone before I could have opened the app. I do not know exactly what it was worth, but a meaningful fraction of a month’s export earnings is the honest answer. I know I was not there for it.
It is the most expensive thing the system has done in five months, and the cleanest argument for making spike capture a first-class strategy. The next iteration will have an explicit “discharge into super-spike” rule with a threshold high enough to fire only for events that warrant it.
The 5 April incident
On Sunday 5 April 2026 my system exported 8.7 kWh into a feed-in price between minus 4 and minus 8 cents. I paid the grid roughly fifty cents to take electricity I had generated. The curtailment rule should have stopped it. It did not.
The cause was a Home Assistant restart. The curtailment automation triggers on the price going below zero. After a restart the sensor is restored from the database already below zero, so there was no crossing for the trigger to notice. The automation never fired, and the system pushed solar into the negative for an hour while I was out.
Fifty cents is small money. The lesson is not. Any threshold-triggered automation with a real cost when it fails needs two layers: a baseline block that checks the current value at startup, and a five-minute fallback that re-evaluates whether or not anything has changed. Both, always.
Post 6 has the full fix. For now it is the proof that the peaker analogy is not free. A peaker operator who fails to dispatch into a price event is worse off than one with no peaker at all: all the cost, none of the benefit. A home battery whose curtailment rule fails in a negative-price window does the same in miniature. Control is the whole game.
The cooker, the carve-out, and the limit of automation
One thing the dispatch logic does not get to touch accounts for nearly half my peak-rate electricity spend since the panels went on.
About ninety per cent of my post-solar peak-window import spend goes to a single appliance: the Belling induction cooker. It is wired on the grid side of the battery, so when I cook dinner the battery cannot supply it. Every kilowatt-hour it draws between 3 p.m. and 9 p.m. is bought at the peak rate however full the battery is. Moving it to the protected side is an electrician’s job, and that has not happened yet.
The limit of any optimisation system is the set of loads it is allowed to control. The rest is a wiring problem, not a software problem.
If you are considering the same setup, look at where every load in the house is wired before you buy anything. The cleverest dispatch logic cannot help an appliance on the wrong side of the meter.
What I do not yet know
Most of my data is summer or early autumn. Self-sufficiency is high because solar is plentiful and heating demand is zero. The battery walks into the evening peak full because the day filled it without trying. The dispatch logic is being tested against the easy half of the year.
I do not know whether opportunistic charge can cover Tier 2 once solar drops by thirty to forty per cent and the heat pumps start drawing real power on cold nights. I do not know whether the battery will reach the evening peak without an evening-reserve rule, or whether spike capture holds up when the midday price curve looks less interesting. My wholesale plan comes out roughly $55 ahead of a mainstream flat plan (30 c buy, 6 c feed-in), but that is a summer-weighted number and I will not believe it until June and July are in.
The value of a home battery on a wholesale tariff is not in the kilowatt-hours it stores. It is in the ones it dispatches at the right moment, against an objective with a sense of order, with control logic robust enough to fire when it has to. Anything less and you have bought a torch.
Next I show the receipts: five months of real numbers structured against the hierarchy. The headline is that export credits beat the import charges by $57, before the fixed daily charges. The tail of the story is more interesting.