Most people hear "100kWh home battery" and think I'm joking. I'm not. I've got 100 kilowatt-hours of lithium iron phosphate sitting in my garage, integrated with Home Assistant, and monitored down to the individual cell level. Here's how I did it, what I learned, and how you can do something similar — even if you start smaller.
Why 100kWh? Because Half-Measures Are for Quitters
Let me back up. I've got a 16.1 kWh solar array on my roof in Coastal Georgia. When I first installed solar, I was grid-tied with no battery. That meant I was exporting power during the day when my panels were cranking and buying it back at night when rates were higher. I was essentially subsidizing the utility company's margins.
The math was simple: if I could store what I generated during the day and use it at night, I'd slash my bill. But I didn't want a tiny 10kWh battery that would run out by 9 PM. I wanted enough capacity to run my entire house — HVAC, home lab servers, EV charging, everything — through the night and into the next morning. That meant going big.
I settled on a mixed-battery setup that gets me exactly to 100kWh of usable capacity, with plenty of headroom.
The Hardware
Here's what the physical setup looks like:
Battery Configuration
Primary Battery Bank:
- Eleven Eco-worthy 51.2V/100A rack batteries (51.2V × 100A × 11 = ~56kWh)
- Three EG4 Indoor Wall Mount batteries (48V/280Ah) wired in parallel (48V × 280Ah × 3 = ~40kWh)
- Total usable capacity: ~96kWh (close enough to 100kWh for marketing purposes)
Safety Features:
- Each battery has its own over/under current breaker
- LiFePO4 chemistry ensures safety and longevity — chosen for its superior cycle life and thermal stability over NMC
- Climate-controlled garage installation
Inverter System
I'm running EG4 inverters with WiFi dongles that communicate directly with Solar-Assistant software:
- Each EG4 inverter has a WiFi dongle providing real-time monitoring
- The system prioritizes solar/battery power before using any grid power
- No peak shaving logic — we simply use battery power instead of grid when available
Solar Array
- Capacity: 16.1 kWh DC (63 × 250W panels)
- Panels: Mounted on a south-facing roof with minimal shading
- Connection: DC-coupled to the hybrid inverter system
HVAC System
- Carrier HVAC/HP unit with built-in soft start functionality
- The soft start allows smooth operation even during battery-only mode
- More efficient power draw during grid-down situations
Utility Rate Structure
My utility has time-of-use pricing:
- Peak: $0.21/kWh (2 PM - 7 PM)
- Off-peak: $0.11/kWh (7 PM - 11 PM, 6 AM - 2 PM)
- Super off-peak: $0.06/kWh (11 PM - 6 AM)
This structure heavily incentivizes using battery power during peak hours.
Solar-Assistant: The Real-Time Monitoring Platform
Before we dive into Home Assistant integration, let me introduce Solar-Assistant — the software that makes this whole setup shine.
Solar-Assistant runs on a Raspberry Pi and provides:
Key Features:
- Real-time analytics via Web, Android and iPhone apps (metrics update every 2 seconds)
- Remote inverter settings adjustment — perfect for installers to avoid costly site visits
- Role-based, multi-site access via single login with view-only or administrator permissions
- Open Data with MQTT integration for Home Assistant and custom projects
- Standalone operation without internet, with full remote access features when online
I chose Solar-Assistant specifically for its EG4 integration and the WiFi dongles that communicate directly with each inverter. This gives me granular visibility that I couldn't get from most other monitoring platforms.
Integrating with Home Assistant
This is where it gets fun. Hardware is hardware — it sits there and does its job. But without visibility and control, you're flying blind. Home Assistant turned my battery system from a dumb box into an intelligent energy management platform.
Getting the Data In
Solar-Assistant exposes comprehensive data via MQTT, which Home Assistant automatically discovers:
# configuration.yaml - MQTT sensor example for Solar-Assistant
mqtt:
sensor:
- name: "Battery State of Charge"
state_topic: "solar-assistant/battery/soc"
unit_of_measurement: "%"
value_template: "{{ value }}"
- name: "Battery Power"
state_topic: "solar-assistant/battery/power"
unit_of_measurement: "W"
value_template: "{{ value }}"
- name: "Solar Production"
state_topic: "solar-assistant/solar/production"
unit_of_measurement: "W"
value_template: "{{ value }}"
- name: "Grid Import"
state_topic: "solar-assistant/grid/import"
unit_of_measurement: "W"
value_template: "{{ value }}"
The critical sensor is sensor.battery_state_of_charge — this gives me the combined SOC across all batteries, not just individual ones. That's the number I use for all my automations.
The Dashboard
I built a dedicated Energy dashboard in Home Assistant using a combination of built-in energy cards and custom cards:
- Gauge card for real-time battery SOC (color-coded: green above 60%, yellow 30-60%, red below 30%)
- History graph showing SOC over the past 24 hours
- Power flow card showing real-time watts moving between solar → battery → house → grid
- Statistics cards for daily solar production, battery cycles, and grid import/export totals
# Lovelace card example - Battery SOC gauge
type: gauge
entity: sensor.battery_state_of_charge
name: Battery
unit: "%"
min: 0
max: 100
severity:
green: 60
yellow: 30
red: 0
Key Automations
Here's where Home Assistant earns its keep. I've set up several automations that manage the battery intelligently:
1. Storm Preparation Mode
When the weather forecast shows a hurricane or severe storm approaching (I pull this from my local weather entity weather.forecast_spartina_landing), the system switches to "storm prep" mode — it charges the battery to 100% from grid if needed, and holds it there until the threat passes.
automation:
- alias: "Storm Prep - Full Charge"
trigger:
- platform: state
entity_id: weather.forecast_spartina_landing
to: "hurricane"
action:
- service: mqtt.publish
data:
topic: "solar-assistant/inverter/charge_mode"
payload: "grid_charge"
- service: notify.mobile_app
data:
title: "⛈️ Storm Prep Activated"
message: "Battery charging to 100% from grid. Current SOC: {{ states('sensor.battery_state_of_charge') }}%"
2. Low Battery Alert
If the battery drops below 20% SOC, I get a notification. Below 10%, the system automatically reduces non-essential loads by turning off the home lab servers and pausing EV charging.
automation:
- alias: "Low Battery - Shed Loads"
trigger:
- platform: numeric_state
entity_id: sensor.battery_state_of_charge
below: 10
action:
- service: switch.turn_off
target:
entity_id:
- switch.home_lab_servers
- switch.tesla_wall_connector
- service: notify.mobile_app
data:
title: "🔋 Battery Critical"
message: "SOC at {{ states('sensor.battery_state_of_charge') }}%. Non-essential loads shed."
3. Rate-Based Optimization
The battery automatically optimizes based on my utility's time-of-use rates:
- Super off-peak (11 PM - 6 AM): Allow grid charging if SOC < 50% and tomorrow's forecast is cloudy
- Off-peak (6 AM - 2 PM, 7 PM - 11 PM): Solar charges battery, excess powers home loads
- Peak (2 PM - 7 PM): Battery discharge only, zero grid import at $0.21/kWh
This simple automation saves me hundreds of dollars annually by avoiding peak-rate electricity usage.
Monitoring with Grafana
Solar-Assistant provides excellent built-in dashboards, but for long-term trend analysis I push everything to Grafana. This gives me:
- Long-term trends: Battery degradation and solar performance over months/years
- Detailed energy accounting: Exact kWh generated, stored, consumed, and exported daily
- Anomaly detection: If a battery or panel starts underperforming, I can see it before it becomes a problem
Solar-Assistant's MQTT data feeds directly into Grafana for comprehensive visualization.
Lessons Learned
1. Mixed Battery Brands Can Work Well
The Eco-worthy and EG4 batteries play nicely together. The key is ensuring they have similar voltage characteristics and proper breaker protection for each battery. Don't mix incompatible chemistries or voltage ranges.
2. WiFi Dongles Eliminate Wiring Hassles
The EG4 WiFi dongles were a game-changer. No more RS-485 wiring runs — just configure each inverter wirelessly and Solar-Assistant handles the communication automatically.
3. Solar-Assistant Is Worth Every Penny
Compared to proprietary monitoring systems, Solar-Assistant's one-time fee provides lifetime value. The Raspberry Pi hardware costs peanuts, and the software outperforms systems costing thousands.
4. Soft Start HVAC Is Essential
The Carrier unit's soft start capability prevents massive power spikes that could overload the inverter system during battery-only operation.
5. Rate Optimization Pays Dividends
Even a simple peak/off-peak optimization strategy delivers significant savings. The $0.15/kWh spread between peak and super off-peak rates makes every avoided peak kWh valuable.
What It Costs
I'm not going to pretend this was cheap. A 100kWh battery system is a serious investment — we're talking five figures. But here's the math:
My monthly electric bill went from $250-400 (Coastal Georgia summers are brutal) to consistently under $100.
At my current savings rate, the battery system pays for itself in about 7-8 years. The batteries are rated for 15+ years. That's 7+ years of nearly free electricity after payback.
And that doesn't account for the value of backup power during hurricanes and storms. When my neighbors are sitting in the dark after a storm knocks out the grid, my house is running like nothing happened. You can't put a dollar figure on that.
Getting Started
You don't need 100kWh to get started. Here's my advice for anyone considering a home battery:
- Start with Solar-Assistant. Even if you just have solar panels, get visibility into your system first.
- Right-size your system. Calculate your nighttime consumption. That's your minimum battery size.
- Go LiFePO4. The upfront cost difference has narrowed, and the longevity makes it cheaper per cycle.
- Demand WiFi/MQTT access. Modern inverters should support WiFi dongles and open protocols.
- Integrate with Home Assistant. The automation possibilities are what make this worthwhile.
What's Next
In upcoming posts, I'll dive deeper into:
- EG4 inverter configuration — getting the most from Solar-Assistant's remote control features
- Battery balancing automation — keeping the Eco-worthy and EG4 batteries working harmoniously
- Generator integration — adding a backup generator for extended grid outages
If you've got questions about home battery setups, drop them in the comments or find me on the Home Assistant community forums. This stuff isn't rocket science — it just takes planning, patience, and a willingness to embrace open-source monitoring.
Big Kel writes about home automation, solar energy, and trying to never pay a utility bill again. Follow along at bigkel.tech.