I use multimeter to do the work when charging at current above 2A on both voltage and current. Then set the calibrated value once only. The rest is to keep the charge prolonged to bring the battery voltage as high as 3.45*16 and as low as 3.2*16 while maintaining delta voltage be lower than 150mV by reducing charge/discharge current limit!
Maybe, the approach that I am pursuing is different from yours but it make SOC link as much as possible to cell voltage at 3.2 and 3.4 or 3.45 point.
Charging voltage applied at the inverter is: 3.45*16 or 3.5* 16 depending on case (quality of battery cell)
To give more evidence on this, please see the attached image
View attachment 206865
When min cell is above the set level of 3.2 but soc fall below the EOD level (20% set by user at inverter side to allow inverter to cut off. I made also an automation to sync Inverter EOD SOC with esphome via GuyBW's integration for Luxpower Inverter), ESP32 will report the EOD level + 1.
View attachment 206866
But this one have JK SOC still at 50% when min cell is already 3.2V (discharge current is only 3A). So it should be safe if we stop discharging when SOC is at this high!
Using this approach will leave us not busy with matter of SOC inaccuracy why can still do a little with control on voltage (even this is not quite accurate as well when cell voltage is not open circuit voltage - OCV)