Yeah, getBatteryVoltage() is the real voltage.
Unless Im missundertanding something that doesnt represent the actual SoC no?, you get a voltage drop from the batterys internal resistance. Once motors stop running the voltage goes back up to the floating battery voltage.
I dont know if this just happens to me, but I had to set the charging voltage cutoff to 28.6 for it to actually be at 28 when the current gets disconnected, for example. Same for the docking voltage.