Been down this rabbit hole myself recently with my cabin setup — pulling data from the Cerbo GX via Modbus TCP to feed into a Home Assistant dashboard, and the register values were consistently showing nonsense compared to what VRM and the Victron Connect app were displaying.
The issue I kept hitting was around scaling factors. A lot of the Victron registers return values in tenths or hundredths — so if you're reading a raw value of 2450 for battery voltage, that's actually 245.0V once you apply the /10 scaling. Easy to miss if you're just grabbing the raw integer.
The other gotcha is signed vs unsigned integers. Some registers — particularly around grid power (registers in the 820s range for the Multi/Quattro) — use signed 16-bit integers to represent import/export direction. If your code is treating them as unsigned, you'll get wildly incorrect figures, especially when the system is exporting.
Worth double-checking:
- The Victron Modbus TCP register list PDF — make sure you're on the latest version, they do update it
- The unit ID for each device on the Cerbo — the inverter, MPPT, and BMS all sit on different unit IDs, easy to accidentally cross-read
- Whether you're summing L1/L2/L3 registers correctly for three-phase, or just single-phase
Has anyone else found the register documentation a bit inconsistent between firmware versions? I updated the Cerbo to the latest release and a couple of offsets shifted slightly, which broke my Node-RED flow for a few days before I noticed.