PowerPilot is built for people who built their own battery. It integrates your inverters, your batteries, the solar forecast, the weather and your energy tariff into one plan — pricing every half hour, so you're never guessing what the battery should be doing.
Most battery controllers run a handful of rules: charge below a price, discharge above it. PowerPilot instead solves an optimisation problem over every half-hourly slot in the next day or two — your tariff, your measured load profile, the solar forecast — and picks the sequence of charge, hold and discharge that gets the house through for the least money. It re-solves every half hour, so a forecast that changes, or a price you didn't expect, gets folded into the plan before it costs you anything.
Each feature exists because getting it wrong is expensive, or dangerous, or both.
Every hour is charged at the rate that applied during it, never a period average. On a time-of-use tariff that's the difference between a bill and a guess.
Each candidate tariff is re-optimised over the energy your house really used, standing charges included on every side — the best time to charge is a property of the tariff.
A severe-weather forecast raises the reserve for the window; the planner buys that energy at the cheapest point before it and reports what the insurance cost.
Cycle counts, cell balance and per-cell internal resistance where the BMS reports them. Capacity comes from a real deep discharge, or is reported unknown — never inferred from a cycle count.
Per-bank voltage, cell and temperature limits, translated into the current limits the inverter is actually told to obey.
Animated flow between solar, battery, house and grid over WebSocket, with history and reports by day, week and month.
Site, per-bank and per-inverter state published to MQTT with discovery, so entities just appear. MQTT is an input too — a meter or price feed on your broker becomes a source like any other.
Every alert carries the reason it fired attached to it — not just that something changed, but why it mattered.
Configure a battery source per bank and an inverter per output, and PowerPilot links them so two ways of measuring one battery are never counted as two batteries. The optimiser plans for the site as a whole, then splits the result across inverters in proportion to the capacity each is responsible for — so banks track each other's state of charge instead of drifting apart.
These protocols are documented unevenly, and a wrong decode is worse than none — it's plausible, and it gets acted on. Verified means checked field by field against the device's own display. Needs verification means written from documentation and never run against the real thing.
| JK BMS (PB series) | RS485 | Verified |
| DiyBatteryBMS node | WiFi / MQTT | Verified |
| JK BMS (native protocol) | RS485 | Needs verification |
| JK BMS (Modbus variant) | Modbus RTU | Unverified |
| Daly Smart BMS | RS485 / UART | Documented, untested |
| Seplos / Mason | RS485 | Needs verification |
| Victron SmartShunt / BMV | VE.Direct | Needs verification |
| Pylontech v1.2 / v1.3 to the inverter | CAN / WiFi node | Verified |
| Solis hybrid (RHI, S5-EH, S6) from the inverter | Modbus RTU | Verified |
| Solis string inverters | Modbus RTU / TCP | Needs verification |
| Growatt | Modbus RTU / TCP | Unverified |
Prices — Octopus Energy (UK), ENTSO-E day-ahead (Europe), Tibber (Nordics, DE, NL), aWATTar (DE, AT), Amber Electric (Australia), any MQTT feed, or a manual tariff typed in by hand. Forecasts — Solcast for solar, per roof plane; Open-Meteo or the Met Office's blended probabilistic forecast for weather.
History and configuration stay on the Pi. The only outbound calls are the ones you configure — a price feed, a forecast, your MQTT broker. Nothing about your battery leaves your network unless you wire it there yourself. Install is a single download-and-run script — no repo checkout required.
Needs a Raspberry Pi 3B+ or 4 (or any Debian host), and at least one way to reach your hardware — a CAN interface, an RS485 adapter, or an MQTT broker / DiyBatteryBMS node on your WiFi.