Had this exact headache last summer in my shepherd's hut build. Short answer — trust neither blindly, but lean on the BMS for lithium.
The BMV-712 is brilliant but it's coulomb counting, so any calibration drift or peukert settings being slightly off will compound over time. Mine was reading 67% when the BMS was screaming low voltage protection at around 45%. Took me ages to figure out the BMV just hadn't seen a proper full charge cycle to resync itself.
Few things worth checking:
- Charged voltage setting in the BMV — needs to match what your BMS considers "full"
- Tail current — if it's too high it'll call the battery full too early
- Peukert exponent — for LiFePO4 this should be really close to 1.05, not the default lead-acid value
Once I sorted those the two readings came within about 3% of each other and have stayed there.
The BMS has actual cell-level data so it knows when things are genuinely low. The BMV is more of an educated estimate. That said, the BMV is far better for day-to-day trend watching — the history screen is gold for spotting problems early.
What BMS are you running? Some of the cheaper ones have dodgy SOC algorithms themselves which complicates things further. Would be useful to know your battery brand too — Fogstar cells tend to behave quite differently to some of the grey import packs.
Anyone else had persistent drift between the two even after recalibration?