Winter changed the shape of this. From October through April, Dominion's Rate 7 has two super off-peak windows instead of one, and the expensive hours move to the morning. That means the battery cycles twice a day rather than once, and the whole schedule gets rebuilt around a 6 AM peak instead of a 4 PM one.
Here's how it runs, why each decision is what it is, and the one setting that quietly cost me most of my solar before I caught it.
The rate I'm playing against
| Period | Hours | Price |
|---|---|---|
| On-peak | 6–9 AM | 17.44¢/kWh + demand charge |
| Off-peak | all other hours | 10.12¢/kWh |
| Super off-peak | 1–5 AM and noon–3 PM | 8.84¢/kWh |
The spread between super off-peak and on-peak is about 8.6¢ — that's the arbitrage. But the demand charge is what actually sets the strategy.
Dominion bills $10.90 per kW on your single highest 15-minute on-peak interval of the month. Not your total usage during on-peak — your worst quarter-hour. So one morning where the grid carries a heat pump and a water heater at the same time can cost more than a week of careful scheduling saves. (More on how the demand charge works.)
If you're still deciding whether this rate is worth being on at all, that's a separate question from how to run a battery on it. (Rate 7 against Rate 8, with the arithmetic.)
That one line is why the schedule below is built to put zero kWh through the meter between 6 and 9 AM, rather than to merely reduce it.
The hardware
- EcoFlow Smart Home Panel 3 running the whole house
- A DELTA Pro Ultra and a DELTA Pro Ultra X, four battery packs between them
- Four 330 W Silfab panels, ground-mounted — a 4.4 kW bifacial array is going in next, split across both batteries
- Home Assistant driving it over local Bluetooth, so the scheduling keeps working when the internet doesn't
Automatic transfer is the Smart Home Panel's job, not the battery's — a battery on its own doesn't take over when the grid drops. (Why that distinction matters when you're pricing a system.)
The daily cycle
| Time | What happens |
|---|---|
| 1:05 AM | Charge from grid at super off-peak, up to 95% |
| 5:55 AM | Switch to Self-Powered, five minutes before on-peak |
| 6–9 AM | Battery carries the house through on-peak |
| 9 AM–12:05 PM | Keep running on battery, stop at 50% and hold |
| 12:05 PM | Refill from grid and solar together, up to 95% |
| On hitting the limit | Straight back to Self-Powered — solar then serves the house directly |
| Until 50% | Stay in Self-Powered |
| At 50% | Backup mode, holding that reserve overnight |
Every transition sits five minutes inside the rate boundary. Nothing charges at the higher price because a clock drifted, and nothing is still in the wrong mode when the expensive window opens.
Two things in that table are worth pulling out.
The 9 AM to noon discharge isn't about saving money. Charging at 8.84¢ and discharging at 90% round-trip efficiency delivers energy at about 9.82¢, against 10.12¢ to just buy it off-peak. That's a third of a cent. The actual reason is headroom: arriving at noon near full means there's nowhere to put the midday charge.
There's no reserve floor during on-peak. Everywhere else the battery stops at 50% so there's backup capacity for an outage. Between 6 and 9 AM it doesn't, because avoiding 17.44¢ energy and the demand charge matters more for those three hours. In practice it's academic — the pack is typically still around 70% when the window closes.
The mode setting that cost me most of my solar
This is the thing I'd most want someone else to know.
I measured panels drop from 1,119 W to under 100 W — same minute, same sun — purely by switching from Self-Powered to Backup mode at a high state of charge.
The reason is simple once you see it. Backup mode holds a charge level. If the battery is already at its ceiling, incoming solar has nowhere to go, so it gets curtailed. Self-Powered keeps the battery serving the house, which keeps headroom open, which keeps the panels producing.
Solar only works when the battery has somewhere to put it.
That single measurement is why the schedule flips to Self-Powered the instant the midday charge completes, rather than waiting for the window to close. And it's why Backup mode only ever runs overnight in this setup — when there's no sun to curtail, holding a reserve costs nothing.
If you're running solar into a battery and your production looks lower than it should, check what mode you're in before you check the panels.
The safeguards
A schedule is only as good as its worst failure, and the worst failure here is specific: a missed flip at 5:55 AM means the grid carries the house through on-peak, and the demand charge lands.
- Verify-and-retry on every write. Each mode or limit change is read back, retried up to three times, and alerts if it doesn't stick. The panel will accept a command over Bluetooth, report no error, and not actually apply it — so nothing is assumed.
- An on-peak guard. From three minutes before the window until it ends, a check runs every minute. If the system isn't in Self-Powered, it corrects it. A failed flip gets caught before the billed window opens.
- Restart recovery. If Home Assistant reboots mid-day, it re-derives the correct mode and limit for the current time and season rather than waiting for the next scheduled trigger.
- Automatic season switching. Winter starts October 1 and summer May 1, with no manual step.
- Clock backstops on state-of-charge triggers. A trigger that fires during a window where it isn't allowed to act won't fire again later, so the critical checks also run on a timer.
Most of that exists because of things that went wrong first. (The full reliability layer, and the firmware quirks behind it.)
Where it's landed
Three consecutive bills with zero on-peak kWh and no demand charge — July, August and September. Those are published in full, redacted, on my setup page.
The model I use to predict the bill came in $1.85 off the actual September total, about two thirds of one percent. That matters more than it sounds: it means the schedule is doing what the arithmetic says it should, so a change in the numbers is a change in behaviour rather than noise.
Winter load runs lighter, around 52 kWh a day against summer's heat. With the new array going in, I'm aiming at $110–140 a month, down from roughly $289 in a hot summer month. That target depends on the 4.4 kW array landing; the current 1.3 kW doesn't get there on its own.
What's next
- Re-tuning the charge limits for the new array, so grid charging doesn't finish the job before solar has had the afternoon
- Charging the EV from afternoon surplus
- More battery capacity in the spring
None of this is necessary to get value from a home battery — the app and a smart panel cover the essentials. But if your utility gives you two cheap windows a day, it's worth knowing the hardware can be made to use both.
Curious what a battery would do against your own rate? Run your bill through the analyzer — it works out your backup time, your savings from a rate switch, and a right-sized system, and it'll tell you plainly when it isn't worth it.
I may earn a commission from links on this page, at no extra cost to you — it never changes the numbers or the recommendation. Rate figures are Dominion Energy South Carolina Rate 7 as of July 2026 and are subject to change; confirm current terms with Dominion. This describes my own setup and isn't installation advice — changing how a battery system operates is at your own risk.