The Solar Ledger

PlugIn

To evaluate the true financial returns of plug-in solar and battery storage, generalized assumptions must be replaced with high-resolution empirical data. Minute-by-minute data would enable excellent modeling, however this requires specialized equipment installed in the breaker box and a dedicated data capture system. Fortunately, most utilities offer 30-minute utility meter interval readings you can download from your account. With this data , plus past bills, meteorological data, and a physics-based photovoltaic (PV) simulation, I was able to create an excellent model of the actual utility power offset and the projected impact to my bill.

1. Data Extraction: Navigating Utility Export Limitations

The utility industry established the Green Button Energy Service Provider Interface (ESPI) XML standard to allow consumers to download energy usage data. However, data collection from my utility revealed two critical limitations in Green Button XML exports:

  • UI Restrictions & Date Limits: The customer portal's XML export tool enforces a restriction limiting downloads strictly to the trailing 13 months, blocking access to historical multi-year data.
  • Low Data Precision: Green Button XML exports round consumption readings to whole integer kilowatt-hours (1 kWh resolution), obscuring subtle household power dynamics.

To overcome this, I chose to build my data pipeline using my utility’s “Download Detailed Data” Excel (.xlsx) export option. This format provides continuous 30-minute interval readings at three decimal places of precision (0.001 kWh). An automated Python ETL script parses these workbooks, aligns intervals chronologically, and ingests them into a local DuckDB time-series database. 

2. Bill Parsing & Tariff Structure Regression

Standard solar calculators assume an average flat electricity rate, but real utility tariffs consist of complex, multi-tiered line items. To model financial savings accurately, I created a Python script to extract the 21 meaningful line items from the monthly PDF bill statements. I used ordinary least squares (OLS) linear regressions with the data to classify fee behavior into three structural categories:

  1. Strictly Proportional Charges: Generation, transmission, fuel, deferred fuel cost, sales/use surcharge, and state/local consumption taxes scale linearly down to zero with lower kWh usage.

  2. Partially Proportional Charges: Distribution service charges consist of a fixed monthly base customer fee of $11.23 plus a variable per-kWh rate.

  3. Capped Non-Proportional Charges: The local utility tax consists of a \$0.60 base fee plus a variable rate capped at a maximum of \$4.00/month.

When solar generation reduces grid energy consumption, fixed customer base fees and tax caps remain untouched while variable supply and distribution rates scale down proportionally.

3. Satellite Solar Irradiance & Performance Modeling

Solar generation potential was derived using historical meteorological data retrieved from the Open-Meteo API for my county. The dataset provides 30-minute resolution Global Horizontal Irradiance (GHI), Direct Normal Irradiance (DNI), Diffuse Horizontal Irradiance (DHI), ambient temperature, and wind speed.

Photovoltaic DC output was calculated using the physics-based PVWatts DC model implemented via Python's pvlib library (utilizing benchmarks established by my favorite National Lab - the National Laboratory of the Rockies, formerly NREL):

  • System DC Rating: 1,200, 1,300, 1,400, and 1,500 W
  • Array Orientation & Tilt: Fixed South-facing (Azimuth \= 180°), 38.85° tilt angle (equal to site latitude)
  • Temperature Coefficient: -0.0047 / °C
  • Inverter Conversion Efficiency: 95.0% DC-to-AC
  • Battery Round-Trip Efficiency: 95.0%

4. Interval Simulation & Split-Phase Logic

For each 30-minute block, AC solar generation is calculated:

$$\text{Solar AC (kWh)} = \left(\frac{\text{DC Power (W)} \times 0.5\text{ hrs}}{1000}\right) \times \text{Inverter Efficiency}$$ Net grid energy draw is then evaluated under an assumed 50/50 split-phase load across two 120 V legs (while this is not an ideal assumption, it’s the the best approximation I can make given the data I have available):

  • Solar-Only Configuration (Single-Phase Injection): Solar offsets Leg 1 only. Any generation exceeding Leg 1's simultaneous load ($0.5 \times \text{Grid Demand}$) cannot cross phases and flows back to the utility grid uncredited. As a result, the maximum possible power offset is limited to 50% of Grid Demand:

$$\text{Grid Draw} = \max(0, 0.5 \times \text{Grid Demand} – \text{Solar AC}) + 0.5 \times \text{Grid Demand}$$

  • Solar + Battery Configuration: A 2.0 kWh modular LiFePO₄ battery buffers excess generation on Leg 1 before it reaches the main service panel, eliminating single-phase export losses and discharging to offset aggregate household demand over time:

$$\text{Grid Draw} = \text{Grid Demand} – (\text{Solar AC} \times \text{Battery Efficiency})$$

Tags: #Solar #PlugIn #Balcony #BatteryStorage #Modeling

Why Online Calculators Lie

Residential solar is undergoing a major structural transformation. Home solar adoption has historically been defined by large-scale rooftop installations requiring steep upfront capital investments, complex municipal permitting, structural engineering assessments, and formal utility interconnection agreements. Today, a new class of accessible technology (plug-in/balcony solar solar) is gaining massive popularity. In Virginia, for example, a recent law will make plug-in solar systems up to 1,200 W DC legal starting January 1, 2027 (the full text of the law can be found on the Virginia Legislative Information System). Rather than requiring hard-wiring into a main breaker panel through a dedicated circuit, these micro-systems plug directly into standard residential AC outlets.

Despite growing consumer interest, evaluating the true financial return of small-scale plug-in systems remains surprisingly difficult. Most web-based solar estimators rely on crude monthly averages and oversimplified financial assumptions that fail to capture the realities of utility rate structures and instantaneous power demand. Standard solar estimators fall victim to three fundamental analytical blind spots:

1. The Naive Proportionality Assumption

Standard calculators typically estimate savings by multiplying total annual solar kWh generation by a single average electricity rate (e.g., $0.18/kWh). In reality, utility bill tariffs are non-linear. Electric bills are composed of fixed monthly customer service charges, fixed administrative fees, step-down tax rates, and capped municipal taxes. Reductions in electricity consumption lower variable energy supply charges, but leave fixed customer base fees entirely untouched.

2. The Interval Simultaneity Problem

Electricity generation and household consumption must match instantaneously in real time. If a 1.2 kW solar array generates 900 Watts of power at 1:00 PM on a sunny afternoon, but household baseload demand is only 300 Watts, the remaining 600 Watts will flow back into the grid. Plug-in solar in the US doesn't allow for net-metering, this excess daytime energy yields zero financial credit.

3. The Split-Phase Injection Blind Spot

Crucially, standard solar models overlook a foundational physical constraint of North American residential electrical architecture: 120V/240V split-phase service. Power is delivered across two separate 120 V legs (Leg 1 and Leg 2). A standard 120 V plug-in solar microinverter connects to a single branch receptacle wired exclusively to one leg. Solar power injected into Leg 1 cannot cross over in real time to offset 120 V loads running on Leg 2. Even if total household demand equals or exceeds instantaneous solar generation, any solar output exceeding Leg 1's isolated load flows straight back through the meter uncredited, while Leg 2 continues drawing full paid power from the grid.

By failing to account for single-phase injection and real-time simultaneity, conventional whole-home analyses severely overestimate the self-consumption of solar-only setups—and consequently drastically undervalue the economic necessity of local battery storage.

Tags: #Solar #PlugIn #Balcony #BatteryStorage