Victron Victron Ess Modbus TCP template

Victron Ess

Victron Ess is the VE.Bus-based Energy Storage System integrating a Victron MultiPlus or Quattro inverter/charger with a GX device and battery, enabling grid-parallel and off-grid operation with solar. This Modbus TCP template reads the full VE.Bus register set: per-phase AC input and output voltage, current, frequency, and power; battery voltage, current, state of charge, temperature, and charge state; plus a comprehensive alarm set covering overload, low battery, ripple, grid loss, and BMS status. It also exposes per-phase ESS power setpoints and energy flow counters across all AC paths. Use it to monitor and control a Victron ESS installation from the ModbusCloud portal without writing any custom code.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
94, read and write
Brand
Victron
Last updated

Registers (94)

89 read, 5 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
voltage_input_l1VRead
voltage_input_l2VRead
voltage_input_l3VRead
current_input_l1ARead
current_input_l2ARead
current_input_l3ARead
frequency_input_l1HzRead
frequency_input_l2HzRead
frequency_input_l3HzRead
active_power_input_l1WRead
active_power_input_l2WRead
active_power_input_l3WRead
voltage_output_l1VRead
voltage_output_l2VRead
voltage_output_l3VRead
current_output_l1ARead
current_output_l2ARead
current_output_l3ARead
frequency_outputHzRead
current_input_limitARead
active_power_output_l1WRead
active_power_output_l2WRead
active_power_output_l3WRead
battery_voltageVRead
battery_currentARead
phase_countRead
active_inputRead
soc%Read
ve_bus_stateRead
ve_bus_errorRead
switch_positionRead
temperature_alarmRead
low_battery_alarmRead
overload_alarmRead
ess_power_setpoint_phase_1WRead
ess_disable_charge_flag_aRead
ess_disable_feedback_flag_aRead
ess_power_setpoint_phase_2WRead
ess_power_setpoint_phase_3WRead
temperature_sensor_alarmRead
voltage_sensor_alarmRead
temperature_alarm_l1Read
low_battery_alarm_l1Read
overload_alarm_l1Read
ripple_alarm_l1Read
temperature_alarm_l2Read
low_battery_alarm_l2Read
overload_alarm_l2Read
ripple_alarm_l2Read
temperature_alarm_l3Read
low_battery_alarm_l3Read
overload_alarm_l3Read
ripple_alarm_l3Read
disable_pv_inverterRead
ve_bus_bms_allow_battery_chargeRead
ve_bus_bms_allow_battery_dischargeRead
ve_bus_bms_expectedRead
ve_bus_bms_errorRead
battery_temperature°CRead
ve_bus_resetRead
phase_rotation_warningRead
grid_lost_alarmRead
feed_dc_overvoltage_to_gridRead
max_dc_overvoltage_power_to_grid_l1WRead
max_dc_overvoltage_power_to_grid_l2WRead
max_dc_overvoltage_power_to_grid_l3WRead
ac_input1_ignoredRead
ac_input2_ignoredRead
ac_power_setpoint_as_feed_in_limitRead
solar_offset_voltageVRead
sustain_activeRead
energy_from_ac_in_1_to_ac_outWhRead
energy_from_ac_in_1_to_batteryWhRead
energy_from_ac_in_2_to_ac_outWhRead
energy_from_ac_in_2_to_batteryWhRead
energy_from_ac_out_to_ac_in_1WhRead
energy_from_ac_out_to_ac_in_2WhRead
energy_from_battery_to_ac_in_1WhRead
energy_from_battery_to_ac_in_2WhRead
energy_from_battery_to_ac_outWhRead
energy_from_ac_out_to_batteryWhRead
low_cell_voltage_imminentRead
charge_stateRead
int32_ess_power_setpoint_phase_1WRead
int32_ess_power_setpoint_phase_2WRead
int32_ess_power_setpoint_phase_3WRead
prefer_renewable_energyWhRead
select_remote_generatorRead
remote_generator_selectedRead
set_active_power_l1WWrite
ess_disable_charge_flag_bWrite
ess_disable_feedback_flag_bWrite
set_active_power_l2WWrite
set_active_power_l3WWrite

Loading registers…

Send your device list

If a device is not in the library yet, we build the template for free as soon as we have the register data.

Use cases

  • Monitor battery state of charge and temperature in real time to verify BatteryLife operation across seasons.
  • Track per-phase AC input and output power to detect load imbalances in three-phase residential installations.
  • Alert on grid_lost_alarm or overload_alarm triggers to dispatch field engineers before a site goes dark.
  • Compare energy_from_battery_to_ac_out against energy_from_ac_in_1_to_battery to verify round-trip efficiency over time.
  • Verify ESS power setpoints written to set_active_power_l1 through L3 are reflected in the read-back registers.

Installation

  1. Enable Modbus TCP on the GX device (Cerbo GX, Venus GX, or compatible) by navigating to Settings, then Services, and switching Modbus TCP to Enabled.

  2. Connect the ModbusCloud Gateway to the same LAN as the GX device. The GX device exposes Modbus TCP on port 502; no additional wiring is needed for TCP.

  3. In the ModbusCloud portal, add the Gateway, import the Victron Ess template, and set the unit ID to 246 for the VE.Bus device connected to the GX device's VE.Bus port.

  4. Verify the connection by checking that register 30 (soc) returns a value between 0 and 100 and register 26 (battery_voltage) shows a plausible DC voltage.

Things to watch for

Voltage and current registers return values that seem ten times too high. Why?

Victron VE.Bus Modbus registers for AC voltage and DC battery voltage use a scale factor of 10: divide the raw register value by 10 to obtain the actual reading in volts. Similarly, current registers for the battery use a scale factor of 10. Always apply the scale factor listed in the Victron Modbus TCP register list spreadsheet before interpreting any value.

The Gateway connects but all VE.Bus registers return errors. What now?

The most common cause is an incorrect unit ID. The VE.Bus system connected to the GX device's VE.Bus port uses unit ID 246 by default. Check the actual unit ID under Settings in the GX device's Modbus TCP menu, then update the unit ID in the ModbusCloud portal to match.

Energy counter registers reset to zero unexpectedly. Is this a fault?

This is expected VE.Bus behaviour. The energy flow counters (energy_from_ac_in_1_to_ac_out and similar) are volatile: they reset to zero whenever the Multi or Quattro is switched off, and also whenever the GX device reboots. Use the ModbusCloud portal's historical logging to preserve cumulative data across resets.

I wrote a value to set_active_power_l1 but the inverter behaved unexpectedly. What should I check?

Write registers set_active_power_l1, set_active_power_l2, and set_active_power_l3 directly command the ESS control loop. Incorrect setpoints can push the inverter beyond its rated capacity, trigger protection shutdowns, or cause unintended grid export. Always test setpoint writes in small increments, confirm the ESS assistant is installed and active, and do not write setpoints while ess_disable_charge_flag_b or ess_disable_feedback_flag_b are set unless that is intentional.

Want to see how it works?

Electrician working in an open distribution board