Monthly Savings Report
On the 1st of each month, Grid Getter crunches the previous month’s data and emails you a savings report. It covers what your battery earned by discharging during peak hours, what your solar saved you, what you got paid for excess export, and — for SRP and APS demand-plan customers — how much the battery shaved off your peak demand charge.
What’s in the email
Section titled “What’s in the email”The report breaks down into:
- Total estimated savings for the month
- Per-kWh savings from battery discharge
- Solar savings (self-consumption value plus net metering credits)
- Demand savings, if your plan charges demand (SRP and APS only)
- Energy totals: solar produced, battery discharged, grid imported
- How many times your automations fired
- A shareable link to a public report card
Shareable report card
Section titled “Shareable report card”Each report includes a unique link at gridgetter.com/r/<token>. Anyone with it can see your savings summary — no login needed. If you have a referral link, it gets embedded automatically; when someone signs up through it, you both get a free month.
Requirements
Section titled “Requirements”- An active, connected Tesla Powerwall site
- An energy plan set up in Settings → Energy Plan
No energy plan means no report. The calculations need your rate schedule to mean anything.
How the calculations work
Section titled “How the calculations work”Grid Getter works from a counterfactual: what would you have paid without the battery and solar, versus what you actually paid? Every data point gets priced at the TOU rate in effect at that exact hour.
Time-of-use period resolution
Section titled “Time-of-use period resolution”Every kWh record gets assigned a TOU period (ON_PEAK, OFF_PEAK, SUPER_OFF_PEAK, etc.) and a rate. The lookup works like this:
- Convert the UTC timestamp to your local timezone
- Find the season (Summer, Winter, etc.) based on the month
- Walk that season’s TOU windows to find one whose day-of-week and time-of-day range contains the timestamp
- Pull the import rate from
energy_chargesand the export rate fromsell_tariff.energy_chargesfor that season + period
If no window matches — which shouldn’t happen with a well-formed tariff — the calculator falls back to OFF_PEAK rates and logs a warning.
Per-kWh energy savings (battery)
Section titled “Per-kWh energy savings (battery)”For each hourly bucket, Grid Getter computes:
discharge_value = battery_kWh_discharged × import_rate_at_that_hourcharge_cost = battery_kWh_charged × import_rate_at_that_hourEvery kWh the battery discharged is a kWh you didn’t buy from the grid, valued at whatever rate was in effect that hour. Every kWh that went into charging is a cost, because without the battery you wouldn’t have pulled that energy. Net savings:
per_kWh_savings = max(sum(discharge_value) − sum(charge_cost), 0)The max(..., 0) floor handles edge cases where the battery charges and discharges mostly off-peak, making the cycle net-zero or slightly negative. That shouldn’t count against you.
Solar savings
Section titled “Solar savings”Two things roll into solar savings.
Self-consumption is the solar your home used directly — energy that didn’t touch the grid in either direction:
solar_self_consumed_kWh = max(solar_kWh − exported_kWh, 0)self_consumption_value = solar_self_consumed_kWh × import_rateYou didn’t buy it, so it’s valued at what you would have paid for grid power at that hour.
Export credits are what the utility paid you for the excess:
export_credit = exported_kWh × export_rateExport rates come from sell_tariff.energy_charges — your net metering or buyback rate, which is usually lower than your import rate.
solar_savings = self_consumption_value + export_creditsDemand savings (SRP and APS customers only)
Section titled “Demand savings (SRP and APS customers only)”Demand charges are based on your single highest average power draw during any billing interval in on-peak hours — not your total consumption for the month, just your worst moment. The battery helps by covering that spike with stored energy so your grid draw stays lower.
Demand interval: 30 minutes for SRP, 60 minutes for APS.
For each raw telemetry sample during on-peak hours:
- Assign it to a demand interval bucket, aligned to clock time in your timezone
- Track two values per sample: actual grid kW, and counterfactual grid kW (actual + battery discharge kW)
- Average all samples within each bucket
- The highest bucket average across the month is your peak demand for that season/period
Savings are then calculated as:
For flat-rate demand plans:
demand_savings = (peak_without_battery − peak_with_battery) × demand_rateFor tiered plans, where the rate itself changes as demand crosses thresholds:
demand_savings = tiered_charge(peak_without_battery) − tiered_charge(peak_with_battery)Only periods with a demand charge entry in your tariff count. If the battery produced zero reduction, demand savings are omitted from the report.
The report card shows both the actual and counterfactual peak in kW so you can see exactly how much the battery shaved.
Total estimated savings
Section titled “Total estimated savings”total = per_kWh_savings + solar_savings + demand_savingsdemand_savings is 0 for energy-only plans or any month where the battery didn’t reduce the peak.
Data sources
Section titled “Data sources”| Component | Source |
|---|---|
| Energy savings + solar | Hourly rollups (HistoricalPowerHistoryHourlyRollup) |
| Demand savings | Raw 1-minute telemetry (HistoricalPowerHistory) |
| Automation count | AutomationActionLog, scoped to the calendar month |
| TOU rates | Your saved energy plan (SiteTariffTable) |
The cron fires on the 1st of each month. It queries a ±1 day UTC window to handle timezone edge cases, then filters down to records that fall within your local calendar month.
Why is demand savings missing from my report? Demand savings only appear for SRP and APS plans with demand charges configured. Energy-only plans don’t generate this section.
My kWh numbers are lower than what the Tesla app shows. Why? Grid Getter’s pipeline starts collecting data when you connect your account. Anything before that date isn’t in the system.
Can I pull up an old report? Yes — every email has a permanent shareable link. The report card stays live as long as your account is active.
The numbers look wrong. What should I check? Start with Settings → Energy Plan. If the TOU periods or rates are misconfigured, all three savings components will be off.