Marstek Marstek Venus E (battery) Modbus RTU template

Marstek Venus E (battery)

The Marstek Venus E is a plug-and-play AC-coupled residential battery storage system built around LFP cells. Available as the Venus E, Venus E Gen 2.0, and Venus C, it installs alongside any existing PV inverter without replacement. Via Modbus RTU over an RS485 serial connection, this template reads instantaneous AC power, cumulative energy, and state of charge, and writes four control registers that govern RS485 control mode, work mode, force charge/discharge command, and charge power setpoint. Connecting a ModbusCloud Gateway to the RS485 port gives installers and building owners continuous cloud visibility and remote control of the Marstek Venus E without relying on the vendor app.

Protocol
Modbus RTU
Connection
RS485
Registers
7, read and write
Brand
Marstek
Compatible models
Venus E · Venus E Gen 2.0 · Venus C
Last updated

Registers (7)

3 read, 4 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
powerWRead
energyWhRead
soc%Read
batterymode_aWrite
batterymode_bWrite
batterymode_eWrite
batterymode_hWWrite

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.

Number of installations (optional)

Use cases

  • Monitor state of charge continuously to detect unusual capacity loss between charge cycles.
  • Track cumulative energy throughput to estimate remaining cycle life over the battery's lifetime.
  • Alert on sustained negative power readings indicating the battery is charging when it should not be.
  • Verify that force charge power setpoint commands are accepted and reflected in live AC power readings.
  • Compare daily discharge energy against solar generation to report actual self-consumption rates per site.

Installation

  1. Connect the Marstek Venus E RS485 port to an RS485-to-Ethernet bridge (such as an Elfin EW11 or PUSR DR-134), matching the A(+) and B(-) terminals exactly. Swapped wires are the most common cause of communication failure.

  2. Configure the RS485 bridge with baud rate 115200, 8 data bits, no parity, 1 stop bit, and set it to TCP server mode on port 502.

  3. In the ModbusCloud portal, add a new ModbusCloud Gateway entry pointing to the bridge IP address and port 502. Import the Marstek Venus E template and set the unit ID to match the battery's Modbus slave address (default 1).

  4. Spot-check the connection by reading register 32104 (soc) in the portal live view. A value between 0 and 100 confirms a working link. If the value is missing, verify A/B polarity and that no other Modbus client is connected simultaneously.

Things to watch for

All registers return errors or no data appears. What is wrong?

The most likely cause is swapped RS485 A and B wires. Reverse the two signal conductors on the bridge terminal block and retry. Also confirm only one Modbus TCP client is connected at a time, as the Venus E rejects additional connections while one session is active.

Power and SOC read correctly but write registers do nothing.

Control registers in the 42000-42999 range are only active when RS485 control mode is enabled. Write value 21930 (0x55AA) to register 42000 (batterymode_a) first. This enable state is not persistent: the battery reverts to autonomous mode if 42000 is not refreshed periodically. It needs a keepalive write every 20 to 30 seconds. ModbusCloud writes registers at most once per minute, so controlling this battery through ModbusCloud is not possible, while reading its values works.

The battery reverts to its default mode after a few minutes.

The RS485 control enable at register 42000 times out on the Venus E. Without a regular refresh write of 0x55AA, the device returns to its own autonomous charging logic. The enable command must be resent within the timeout. ModbusCloud writes registers at most once per minute and cannot do this, while reading values works.

Can I write charge setpoints without risk to the battery or warranty?

Write registers batterymode_e (42010) and batterymode_h (42020) override the battery management system's own scheduling. Sending an out-of-range power value or leaving force-charge mode active unattended can cause unintended deep cycles. Always write batterymode_e to 0 (stop) before deactivating RS485 control, and stay within the device's rated power limits.

Want to see how it works?

Electrician working in an open distribution board