I build software and data systems for a living, so I came to my home solar and battery project with a habit from work: don’t trust a status display until you have checked it against something independent. The project gave me more reasons to keep that habit than I expected.
First, a clear note. This is my own home system, and nothing here is licensed electrical or HVAC work. I am a homeowner who learns by building, not a licensed electrician, solar installer, or HVAC technician, and this article is not a set of instructions. Solar, battery, electrical panel, and HVAC work is code-regulated and can be dangerous. If you are doing a project like this, use licensed professionals for that work.
The system
The build is designed around a time-of-use electric rate plan. The main hardware:
- an EG4 FlexBoss 21 hybrid inverter;
- an EG4 GridBoss for AC distribution;
- six 51.2 V, 100 Ah LiFePO4 batteries, about 30.7 kWh of storage;
- Canadian Solar 450 W panels.
The goals are straightforward. Charge the batteries during super-off-peak overnight hours. Use that stored energy to peak-shave through the expensive morning rate window. Provide whole-home backup when the grid goes down, for a house with two HVAC systems, electric heat strips, and electric water heating. Those are large loads, which is exactly why accurate numbers matter.
The system is live and peak shaving today. Part of the panel array is waiting on site clearing, and generator integration and more storage are on the roadmap.
The step the manual left out
The first lesson came during setup. The inverter and the GridBoss have to communicate with each other, and getting them there required a “Parallel Sync” step that the manufacturer’s documentation did not mention.
That was not the only critical step missing from the documentation, just the most memorable one. My approach since then is to cross-reference the specs and manuals against each other, test incrementally, and write down every undocumented procedure as soon as I confirm it. The next person, or a future version of me, should not have to rediscover it.
Reported 99 percent, actually 50 to 70
The most instructive surprise was state of charge. The system reported the battery bank at 99 percent. In reality the batteries were sitting somewhere around 50 to 70 percent.
That is not a rounding error. If you plan backup runtime or a peak-shaving strategy around a full bank and you actually have roughly half of one, you find out at the worst possible moment.
The reported number did not become trustworthy until the batteries had been properly cycled and balanced. Some general background explains how this can happen, although it is not a diagnosis of any specific product. LiFePO4 cells hold a very flat voltage across most of their range, so voltage alone says little about charge in the middle of that range. A battery management system typically estimates charge by counting current in and out, and that estimate drifts unless it is periodically re-anchored, usually at a full charge. Individual cells can also drift apart and need balancing. Until those things happen, the percentage on the screen is a calculation, not a measurement.
The dashboard was not lying on purpose. It was reporting an estimate with more confidence than the estimate deserved.
Settings that don’t mean what their labels say
Peak shaving is driven by threshold settings. I learned that those thresholds do not necessarily mean what their labels suggest.
A setting label is a claim about behavior, the same way a function name is a claim about what code does. The dependable way to learn what a threshold really does is to change one value at a time, let the system run through the rate window it is meant to affect, and look at what it actually did.
The fault that cost hundreds of dollars a month
The most expensive discovery was not in the solar equipment at all. A diagnostic pass on the home’s electrical system showed the HVAC heat strips running when they should not have been.
Heat strips are resistive electric heating elements, and they draw a lot of power when they run. They are meant to run only under specific conditions. When they run at the wrong times, the house is still comfortable and nothing looks obviously wrong. The main symptom is the bill.
This fault had been quietly costing hundreds of dollars a month. It surfaced because someone was measuring what the electrical system was actually doing, not because anything had raised an alert.
I am deliberately not describing a repair. Diagnosing and correcting HVAC controls and wiring is work for a licensed HVAC technician, and anything involving refrigerant requires EPA certification in the United States. The useful part for a homeowner comes before the repair: notice that something does not add up, gather evidence, and bring the right professional in with that evidence in hand.
Measure with a meter, not the app
Every one of these lessons comes down to the same rule: when the app and reality might disagree, measure reality.
- Use an independent instrument. A multimeter reading, taken safely, is a second opinion that does not share the dashboard’s assumptions.
- Treat displayed percentages as estimates. Especially after installation, after configuration changes, and before the batteries have been cycled and balanced.
- Change one thing at a time. Then watch what the system actually does across a full rate window or charge cycle.
- Write down what the manual left out. Undocumented steps are the ones everyone has to rediscover.
The same lesson I use at work
None of this is really about batteries. It is the same thing I run into with backups that report success, deployments that turn green, and AI agents that say “done.” A dashboard shows what the software believes. Sometimes that matches reality and sometimes it does not, and the only way to know which is to check from outside the software.
I have also been exploring reading battery management system data directly over CAN and RS485 with a small Linux computer, so battery telemetry can flow into the same kind of logging and monitoring I would use for any other system. More of those experiments live in my lab. The goal is not a prettier percentage. It is data I can check against a meter.
The system is doing its job now, peak shaving on the schedule it was designed around. Getting there took measuring, not just reading the screen.