Most roundups of the "best energy management software" for Powerwall owners are feature checklists: device count, price, whether there's a dark mode. That works if you're shopping for a smart home hub. It doesn't help much if you're shopping because last July's SRP bill had a $176 demand charge on it.
I built Grid Getter because of that charge, so I'm biased. Below is where Grid Getter does things the Tesla app and Netzero (the other big third-party option) don't, and where it doesn't try to compete at all.
DemandGuard: watching the meter, not the clock
The Tesla app gives you Self-Powered and Time-Based Control, plus a backup reserve (and a Backup-only mode on some installs). Self-Powered is a preference and Time-Based Control is a schedule. You can enter a demand-charge tariff, but you can't give either mode a kW target, and neither one protects the end of a billing interval.
That matters a lot on a plan like SRP E-27. Your demand charge comes from your single highest 30-minute average draw during on-peak hours. In summer that's 2–8 PM on weekdays. The intervals line up with the clock: 5:00–5:30, 5:30–6:00, and so on. In July and August the tiers on SRP's E-27 price sheet (at the time of writing) are:
- First 3 kW: $11.98/kW
- Next 7 kW: $20.05/kW
- Anything above 10 kW: $36.13/kW
SRP adjusts its prices from time to time (these went up in November 2025), so check the current price sheet before you plug in your own numbers. SRP also plans to retire E-27 in November 2029 and move the customers still on it to E-16.
One half-hour at 10 kW costs you $176.29 for the month. Push it to 12 kW and you're at $248.55. Hold it at 6 kW and it's $96.09. That's about $150 between a 12 kW spike and a 6 kW cap in a single month, all from one interval you probably never noticed.
Time-Based Control will discharge through the peak window, and on most days that's enough. It falls short when the battery gets low at 6:40 PM, when Tesla's own logic decides to hold charge, or when the AC and the oven overlap in the same half-hour.
DemandGuard checks your grid draw every minute during the window you set and compares it to a kW target you choose. It tracks where you are in the current billing interval. That lets it tell a short spike that averages out from sustained draw that will set your demand for the month. If you're heading over, it hands the load to the Powerwall. If you have headroom, it can save the battery for later in the evening instead of spending it at 2:15 PM.
A few details that took a lot of bill-watching to get right:
- Hold strategy. Advanced, the recommended option, pauses the battery entirely while you're under target, so the house runs on the grid and the charge is saved for later. Classic switches between self-powered and autonomous the way my original script did. Either way, DemandGuard checks that Tesla actually made the switch and sends the command again if it didn't.
- Demand Floor. This optional setting lets DemandGuard go below your normal reserve during the window, down to a floor you pick (never below 5%), then restores the reserve afterward. Weather Guard skips that extra drop when Storm Watch is active or there's a severe weather alert.
- The 81–99% reserve trap. Reserves in that range don't behave reliably through Tesla's cloud API. In my testing I've seen them land at 80% while the API still reports the value as saved. Setting 100% instead can make the Powerwall pull from the grid to fill up (if grid charging is allowed), which can cause the very demand spike you were trying to avoid. Grid Getter snaps those values to 80% and holds a full battery by switching modes instead.
SRP and APS come pre-configured (more on that for Phoenix-area owners). For other supported utilities, Grid Getter reads the tariff set in your Tesla account and uses its time-of-use windows. Netzero handles time-of-use and dynamic pricing well, but it doesn't have an active demand cap. If demand charges are your biggest line item, that gap shows up directly on your bill.
Anomaly Checks: catching the bad day before peak does
This is the least flashy feature, and I use it more than I expected to.
Anomaly Checks compare your battery percentage at a given time of day to what it usually is at that time. Grid Getter looks at the same time on the same weekday, or at every day if there isn't enough weekday history yet. It pulls up to 10 days of history and won't judge anything until it has at least 5. It calculates the average and standard deviation, then alerts you if today's number is too far off. You pick the sensitivity:
- High: alert at 2 standard deviations
- Medium: 3 standard deviations
- Low: 4 standard deviations
Here's an example. At 1:30 PM your Powerwall has been between 88% and 94% all week. That's an average of 91% with a standard deviation of about 2. Today it's at 72%, which is roughly 9.5 standard deviations out, so every sensitivity level fires. You get a push notification 30 minutes before E-27 on-peak starts, which gives you time to figure out what happened.
The cause is usually boring:
- a cloudy morning
- a firmware update that reset your operating mode
- someone changing the reserve in the Tesla app
- a pool pump schedule that drifted
What matters is that you find out at 1:30 and not when the bill shows up. On a demand plan, starting peak at 72% instead of 91% can decide whether you hold 6 kW or eat a 10 kW interval at 7:15 PM.
You can limit the hours it watches, so normal overnight discharge doesn't set it off. The Tesla app shows your current percentage but won't tell you when that percentage is unusual. Netzero's Pro plan has health monitoring and alerts, but as far as I can tell it doesn't compare today's charge to your usual level at the same time of day. I go through the math in more detail in how anomaly detection saves costs.
Automation rules: fewer knobs, better ones
For a deeper look at the Tesla app on its own, see Tesla app vs Grid Getter.
Calling this a "rule engine" oversells it if you're picturing IFTTT with a thousand triggers. Netzero has more trigger types than we do, including charge-level, weather-forecast, energy-flow and price triggers, across 500+ devices from 50+ brands. If you want your thermostat, EV charger and Powerwall in one app, that's what Netzero is good at, and you should use it.
Grid Getter's automations only control the Powerwall. They're built around the things that actually move a rate-plan bill:
- Custom Schedule: at a set time on the days and months you choose, it switches operating mode, toggles Storm Watch, sets a battery reserve, and can optionally force grid charging on or off.
- Peak Time: sets your reserve when the peak window opens. When it closes, it either sets a value you pick or restores whatever the reserve was before. You can also turn off Storm Watch during peak so a storm alert doesn't start pulling from the grid mid-window.
- Battery Threshold: when charge drops below a floor, it grid-charges to a target, can optionally hold there, and then steps back. It runs either in windows you define or automatically in the gaps between your other automations. It defers to DemandGuard while a DemandGuard window is active, so the two don't work against each other.
- DemandGuard: the real-time cap described above.
Every automation is scoped by day of week and month. That sounds minor until you're on E-27, where summer, summer peak and winter each have their own windows. Grid Getter can also read your Tesla tariff and suggest a starter set of automations that match it. You review them and confirm.
A realistic E-27 summer setup looks like this (more ideas in advanced custom rules):
- Battery Threshold keeps you above 30% overnight at off-peak rates.
- Peak Time sets the reserve for the peak window at 2 PM.
- DemandGuard holds 6 kW until 8 PM.
- At 8 PM, Peak Time puts the reserve back where it was.
The Tesla app can roughly handle one of those.
Side by side
Competitor details are as of October 2026.
| Tesla App | Grid Getter | Netzero | |
|---|---|---|---|
| Price | Included | Free tier; Scheduled $4.99/mo; Adaptive $10.99/mo (includes DemandGuard) | Free dashboard tier; Pro $6.99/mo |
| Active demand charge cap | No | Yes (DemandGuard) | No |
| Aware of utility billing intervals | No | Yes | No (price-based) |
| Alerts when charge is unusual for the time of day | No | Yes | Health alerts |
| Scheduled mode/reserve changes | Time-Based Control | Yes, by day and month | Yes |
| Threshold-based grid charging | No | Yes | Yes (charge-level trigger) |
| Supported devices | Tesla products | Powerwall only | 500+ devices |
| EV "Charge on Solar" | Basic | No | Yes |
| Weather-based automation | Storm Watch | Limited (Weather Guard) | Yes (forecast triggers) |
| Storm Watch setup and firmware notices | Yes | Toggles Storm Watch on a schedule | No |
Keep the Tesla app installed no matter what you pick. It's where you turn Storm Watch on in the first place, and where Tesla tells you about firmware updates. For a longer breakdown, including where each app falls short, see the full comparison page.
Where to start
If demand charges are a big part of your bill, Grid Getter's free tier gets you a report on your recent Powerwall data, the live dashboard, and an automation to start with. No credit card needed. DemandGuard is on the $10.99 Adaptive plan, and you can turn it on once the free report shows you where your peaks are landing.
Before you do any of that, pull out last July's or August's bill and find the on-peak demand figure in kW. If you're on E-27, run it through the tiers above and see what a 6 kW cap would have saved you. Then open the Tesla app and check your backup reserve against the trap described earlier.
Take control of your demand charge today
Free to start. No credit card. Your utility's rate plan preconfigured and ready.