Features Compatibility Gateway Docs News Download Українська

LiFePO4 SOC without a BMS link: the inverter was 40–60 points off

One station’s inverter showed 35 % on a nearly full battery. It could not see the BMS, so it guessed the charge from voltage. We stopped trusting that figure. Svitgrid now works out the charge of such a battery itself, and rules, the calendar and alerts run on the right number.

The battery screen in Svitgrid: 51 %, 48.7 V, discharging 780 W, and the charge chart for 21 October
Svitgrid at 16:25 on 21 October: 51 % at 48.7 V, discharging 780 W. The inverter showed 25 % at the same moment.

Where the inverter’s figure comes from

The station: an Edecoa EM-624A inverter and two Dyness B4850 batteries, together a 15S LiFePO4 pack of 4.8 kWh. An ED-1 board reads the inverter over RS-232 using the PI30 protocol. There is no BMS cable, and program 05 sets the battery type to USE, which means by voltage.

In that mode the inverter computes the SOC field of its QPIGS reply (field 10) from battery voltage on a straight line: 46.2 V is 0 %, then about 10 % per volt. That is acceptable for lead-acid. It is not for LiFePO4: between 20 % and 90 % the resting voltage stays within 3.25–3.35 V per cell, which is 48.8–50.3 V per pack, and it sags further under discharge current. On the morning of 20 October the inverter showed 34–42 % while the pack LEDs showed 75–100 %.

Rules, calendar events and low-battery alerts run on that figure. An error of 40–60 points makes them useless: a condition at 40 % and below fires on a full battery.

What changed

For these stations Svitgrid no longer takes the SOC from the inverter. It determines the battery’s charge itself, on the server, from data the ED-1 board already sends, and refines it at every full charge. There is nothing to update in the app or the firmware.

Every part of Svitgrid sees the computed SOC: the home screen, the charge chart, rules, calendar events, and alerts. We keep the inverter’s figure for comparison, but the app no longer makes decisions from it.

Inverter against Svitgrid
InverterSvitgrid
20 October, morning (trial run; LEDs 75–100 %)34–42 %90–98 %
21 October, 16:25, discharging 780 W25 %51 %
Daily error, 19 October—+2.2 pts
Daily error, 20 October—+0.3 pts

The first cycle

The calculation was switched on at 17:35 on 20 October, mid-day, with no history. Its first value was 9 points above the real charge: on the flat part of the LiFePO4 curve, voltage says little about charge. Overnight the station charged from the grid, at 01:55 the battery was full, and the error was gone. We reconstructed the real charge afterwards from the energy the battery gave in the evening and took overnight.

Every change in the app and the firmware, line by line.

Open the changelog →