⚡ NRG Sense

Two charge cycles a day: running a home battery through a time-of-use winter

Winter on Dominion Rate 7 has two cheap windows and a morning peak, so the battery cycles twice a day. The schedule, the demand charge it exists to avoid, and the mode setting that silently cut my solar input by 90%.

October 1, 2026 · Vinh, NRG Sense

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.

Frequently asked questions

How many times a day should a home battery cycle on a time-of-use rate?
It depends on how many cheap windows your rate has. Dominion Rate 7 in winter has two super off-peak periods — 1 to 5 AM and noon to 3 PM — so my battery charges twice and discharges twice. In summer there is only the overnight window, so it runs a single cycle. Match the cycle count to the rate, not to a habit.
Why does my EcoFlow stop taking solar when the battery is full?
Because the operating mode decides whether there is anywhere for that solar to go. I measured panels drop from 1,119 W to under 100 W in the same minute, same sun, purely by switching from Self-Powered to Backup mode at a high state of charge. Backup holds the charge level, so incoming solar has no destination and gets curtailed. Self-Powered keeps the battery serving the house, which keeps headroom open.
What is a demand charge and why does it change how you schedule a battery?
Dominion Rate 7 bills $10.90 per kW on your single highest 15-minute on-peak interval of the month. It is not based on total consumption — one heavy morning sets the figure for the whole billing cycle. That is why the schedule prioritises covering every on-peak minute over holding a backup reserve during those hours.
Should a battery hold a reserve during on-peak hours?
I do not, and it is a deliberate trade. Keeping a reserve means buying some on-peak energy at 17.44 cents and risking the demand charge. In practice the pack is still around 70% when the window closes, so the reserve floor never binds anyway — it exists for an unusually heavy morning rather than a typical one.
What happens if the automation fails to switch modes before on-peak?
The grid carries the house through the expensive window, which is the one failure that actually costs money. Every write is confirmed and retried up to three times, and a separate guard checks every minute from three minutes before on-peak until it ends — so a failed flip gets corrected before the billed window opens rather than discovered on the bill.

See your own numbers

Run your Dominion bill and see your own numbers.

Analyze my bill →

Free · about 2 minutes · just a recent power bill

← Back to the blog