Home Battery + Home Assistant USA: Powerwall, Enphase, Franklin
Using Home Assistant to orchestrate a US home battery is one of the few smart home projects where the arithmetic is genuinely compelling — but the shape of the math depends entirely on which state you live in. Three economic cases drive the decision, and you need to know which one is yours before you spend $12,000 on a Powerwall.
Case one: California under NEM 3.0. If you installed solar in California after April 2023, your export credit collapsed from the old retail-rate ~$0.30+/kWh under NEM 2.0 to an annual-average ~$0.05–$0.08/kWh under the Net Billing Tariff. Solar produced at noon is now worth a fifth of solar produced at 7pm. A battery is the only way to bridge that gap. This is why CA battery attach rates jumped from roughly 10% pre-NEM-3 to more than 50% post-NEM-3, and why Powerwall payback in CA went from "12–15 years" to "7–10 years" almost overnight.
Case two: TOU arbitrage without solar. Charge a 13.5 kWh Powerwall overnight on PG&E EV2-A super-off-peak ($0.21/kWh post the March 2026 rate reform that introduced a fixed Base Services Charge) and discharge during the 4–9pm peak ($0.45/kWh summer). With Powerwall 3's ~97% round-trip efficiency that is roughly $2.50 of avoided peak per day, $700–$900/yr. Real, but on $11,500–$15,000 installed the battery alone rarely pencils out — you want solar attached, or you want case three on top.
Case three: grid services payments. Massachusetts' ConnectedSolutions pays $275 per kW of dispatchable capacity per summer plus $50 per kW per winter for participating batteries — a Powerwall delivering 5 kW averages around $1,625/yr just for being available, with the rate locked for five years from enrollment. California's DSGS and ELRP pay around $2/kWh discharged during emergency alerts (10–15 events per summer). New York's VDER + LSRV stack similarly. These sit on top of arbitrage, and they are the line items that turn a marginal payback into an obvious one.
Why the battery's own app is not enough
Every major US home battery ships with its own app and its own scheduler. Tesla has Self-Powered, Time-Based Control and Backup-Only. Enphase has Self-Consumption and Savings Mode. Franklin and Generac have their own takes. On a flat utility plan with a fixed TOU window, the built-in scheduler does an acceptable job — the cheap hours never move and the battery fills inside them.
The moment your situation gets even slightly complicated, the manufacturer app starts to strain. It cannot react to:
- PG&E EV2-A's three-tier weekday structure plus the different weekend shape, especially when paired with solar export under NEM 3.0
- Tomorrow's solar forecast — there is no point pulling 13 kWh from the grid at midnight if the roof is going to fill the battery by 11am for free
- A Level 2 EV charger pulling 7–11 kW from the same cheap overnight window, so the car and the battery end up competing for the same hours
- A ConnectedSolutions or DSGS dispatch event that asks you to discharge now, regardless of what your TOU schedule says
- Household load spikes that quietly drain the battery at 2pm, leaving nothing for the 6pm peak
Home Assistant sees all of these at once. Utility rate, solar forecast, EV state, grid-services signal, household load, battery state of charge. It can re-decide every fifteen minutes rather than follow a schedule written last spring. That is the gap, and that is where the ROI sits.
The US home battery landscape and HA integration
Before planning automations, it helps to know how much rope each battery gives Home Assistant. The spread is wide.
| Battery | Capacity / Power | Home Assistant integration | Notes |
|---|---|---|---|
| Tesla Powerwall 3 | 13.5 kWh / 11.5 kW continuous | Native Powerwall integration reads SoC, grid flow, mode, charge/discharge in real time. Mode-change control via the Tesla Fleet API (token + refresh dance). | Most popular battery in the US. Powerwall 3 includes a built-in solar inverter with six MPPTs. Powerwall 2 still dominates pre-2024 installs and uses the same HA integration. |
| Enphase IQ Battery 5P | 5 kWh / 3.84 kW | Enphase Envoy local API exposes battery SoC, dispatch state and per-battery health. Same Envoy as the solar side, so it's a single integration. | Modular — most installs stack 2–4 batteries. Pairs naturally with Enphase microinverter solar. |
| Enphase IQ Battery 10C | 10 kWh / 7.08 kW continuous (14.16 kW peak) | Same Envoy path as the 5P. | The bigger 2024+ sibling, marketed at larger whole-home backup loads. Cabling and balance-of-system are different from the 5P. |
| Franklin aPower 2 | 15 kWh / 10 kW | Community HA integration via Franklin's cloud API. Functional but less mature than Tesla or Enphase. | 2023+ entrant, aggressive pricing, fast-growing installer network — especially in CA and TX. |
| Generac PWRcell | 9–18 kWh / 3.4–9 kW | PWRview cloud (rate-limited) is the easy path. Modbus directly on the PWRcell inverter is a community option for the patient. | Generator company expanding into batteries. Best fit if you already own a Generac standby generator and want one app. |
| SunPower SunVault | 13 / 26 kWh / 6.8 kW | Cloud API pre-bankruptcy. After SunPower's August 2024 Chapter 11 filing, Complete Solaria acquired the dealer / new-homes assets for $45M in September 2024 and rebranded back to SunPower (SPWR on Nasdaq) in April 2025. SunVault cloud features were reduced to basics (alerts, live monitoring, basic management) from April 2025; historical data and richer software went away. New SunVault installs are not happening. | Mention only — do not buy for new projects. |
Worth a one-line each: LG Energy Solution RESU is largely grandfathered installs after the 2021 fire recall. sonnenCore+ has a thin US installer base and a German parent. BYD Battery-Box paired with Sol-Ark or Schneider XW inverters is popular for off-grid and large-system builds, less for net-metered residential.
The control hierarchy
Read this column carefully when shortlisting. Powerwall and Enphase give you the cleanest data picture, but neither lets you write per-15-minute schedules the way GivEnergy does for UK customers. Franklin is improving but still cloud-dependent. Generac is the weakest for live control. If Home Assistant orchestration is a buying criterion, Tesla and Enphase are the safe defaults — both let HA steer with mode changes and load-side control, even if neither lets HA micromanage the inverter.
The three automations that earn the battery back
You do not need twenty automations. You need three that run every day without drama.
Automation 1: dynamic overnight charge based on tomorrow's plan
On a fixed TOU plan, the cheap window never moves and the automation is simple — charge the battery to target SoC inside the super-off-peak block. Where it gets interesting is layering in solar forecast. If tomorrow looks sunny enough that the roof will fill the battery for free by lunchtime, skip the overnight grid charge entirely. On a clear May day in California that is a direct $4–$6 of avoided import that would have been wasted. Forecast.Solar inside Home Assistant gives you a usable tomorrow-kWh estimate based on your panel orientation, tilt and size. "Above or below threshold" is all this automation needs to decide.
See the broader solar setup in Home Assistant guide for the forecast integration, and the time-of-use guide for how to model EV2-A, ConEd Voluntary TOU and similar plans as Home Assistant sensors.
Automation 2: hold for peak, then discharge through the peak window
This is the highest-$/kWh part of the cycle and the single biggest line item in your arbitrage. Whatever your peak window is — PG&E's 4–9pm summer peak, ConEd's 8am–midnight summer peak day rate, or a state utility's narrow 5–8pm spike — Home Assistant holds the battery through the shoulder hours and discharges into household load through the peak itself.
Holding matters as much as discharging. If the battery dribbles itself flat at 2pm chasing the dishwasher and a heat-pump cycle, there is nothing left for the 6pm peak and the entire day's arbitrage collapses. The automation sets a reserve floor (often 70–80%) that the battery cannot drop below before peak start, then releases the floor at peak.
Automation 3: respond to grid-services dispatch signals
If you are enrolled in ConnectedSolutions, DSGS, ELRP, ConEd's Battery Bonus, or your state's equivalent, Home Assistant can listen for the dispatch signal — usually a utility email or API event surfaced via webhook — and command a full discharge during the event window. On a single $2/kWh DSGS event a 13.5 kWh Powerwall delivering ~10 kWh of net discharge is $20. Across the season this is real money, and it's the part of the math that the manufacturer app does poorly because it doesn't know your enrollment.
A fourth automation worth a sentence: coordinate the battery with your EV charging schedule so the car and the battery don't bid against each other for super-off-peak hours. The EV is a 7–11 kW load; left to its own scheduler it will hog the cheapest slot.
NEM 3.0 specifically — why this changed everything
Under NEM 2.0, a kWh exported at noon paid roughly the same as a kWh you'd have imported at 7pm — somewhere around $0.30+/kWh retail-rate. You barely needed a battery; the grid was your battery. Under NEM 3.0 (the Net Billing Tariff that California's IOU customers moved to after April 2023), the export rate is an avoided-cost calculation that averages somewhere around $0.05–$0.08/kWh across the year, with sharp peaks in late-summer evenings and near-zero values in spring middays. The economic value of a midday solar kWh fell by roughly 75%.
A battery is the only way to recapture that gap. Charge from solar at noon when the export credit is near zero, discharge to the house at 7pm when import would otherwise cost $0.45–$0.51. You are arbitraging the spread between your own solar and your own peak import, not between off-peak grid and peak grid. Home Assistant's job is to push the battery to a self-consumption posture during the day, hold reserve for peak, and override the manufacturer's default mode if it's prioritising export.
California's SGIP rebate still subsidises new battery installs, with higher tiers for low-income, medically vulnerable and high-fire-risk-zone customers. The general-market tier currently runs around $150/kWh of installed storage (so roughly $2,000 off a 13.5 kWh Powerwall) but is oversubscribed and steps down in waves, so check fund availability for your utility territory before signing an install contract.
The one-source-of-truth rule
The single biggest failure mode in home battery automation is Home Assistant and the battery's own app fighting each other. They both try to schedule the same asset. The Tesla app thinks it is in charge in Time-Based Control. Home Assistant thinks it is in charge. They overwrite each other five times a day, the battery charges at the wrong time, discharges at the wrong time, and earns a fraction of what it should.
The rule is simple: pick one. If Home Assistant is running the schedule, put the battery's built-in scheduler into Self-Powered or plain Self-Consumption and leave the app alone. If the manufacturer app is running the schedule, let it, and use Home Assistant for observability only. What you cannot do is run both.
For Powerwall owners specifically: Tesla's API rate-limits aggressive mode changes, and the Fleet API's auth flow expires tokens that need refreshing. Don't write an automation that flips modes every five minutes — pick the daily schedule and let it run.
What can break
Batteries live for a decade. Integrations do not. Things to watch over the life of the system:
- Tesla Fleet API auth tokens rotate and refresh tokens expire if unused for long enough. Build a watchdog that re-auths well before the boundary, not after a battery sits in the wrong mode for a week.
- Enphase Envoy firmware updates occasionally change the local API surface. The integration usually catches up within days, but you need to notice the break — add an automation that alerts on stale battery data.
- Utility plan changes mid-year are common. PG&E moved the EV2-A peak hours in past summers, ConEd has reshuffled Voluntary TOU. An automation pinned to the old hours quietly stops earning. Re-validate every spring.
- Cold weather reduces usable lithium capacity. Your "full charge" in January is not the same kWh number as July, especially for batteries installed in unconditioned garages in the Northeast. Automations that assume fixed kWh will quietly mis-shoot.
- Grid-services enrollment signals can fail silently. If you're earning $1,200/yr from ConnectedSolutions and the email-to-webhook hop breaks in May, you lose the whole season before you notice. Test the dispatch path once a quarter.
Where this leaves you
A home battery orchestrated by Home Assistant is one of the few smart home projects where the math is compelling on its own, before you count the grid-services upside. Three automations — solar-aware overnight charge, hold-then-discharge for peak, dispatch-event response — capture most of the available arbitrage on most US utility plans. NEM 3.0 changed the California case from marginal to obvious. ConnectedSolutions and DSGS turn the rest of the country into a real conversation.
Done well, the combined stack can return $1,000–$2,500 a year beyond what the battery's own app would have earned, depending on state, plan and enrollment. The bigger picture sits in the energy savings guide — battery is one lever among several.
Done badly, you end up with two schedulers in a cage fight and a battery that never quite does what you expected. If you have $12,000 of battery committed and you would rather not debug Envoy API tokens on a Sunday morning, habbb's managed Home Assistant service for US customers keeps the integrations patched, the schedules running and the battery earning. You own the kit. We keep it working.