Marstek Marstek Venus D (battery) Modbus TCP template

Marstek Venus D (battery)

The Marstek Venus D is an all-in-one AC-coupled home battery system combining an integrated inverter, four MPPT inputs, and modular LFP storage scalable to 15.36 kWh. Designed for residential and small-commercial sites, it charges from solar or the grid and delivers up to 2.2 kW bidirectionally, with an EPS backup function. This Modbus TCP template reads AC power flow, cumulative energy, and state of charge, and exposes four write registers for RS485 control mode, user work mode, force charge/discharge mode, and charge power setpoint. Connecting the Marstek Venus D to the ModbusCloud Gateway gives installers continuous visibility and control from a single portal.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
7, read and write
Brand
Marstek
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 battery state of charge over time to detect capacity degradation across seasonal cycles.
  • Track AC power flow to verify the Marstek Venus D is discharging during expected evening peak hours.
  • Alert on state of charge dropping below a configured minimum to catch unexpected overnight drain.
  • Compare cumulative energy throughput against expected cycle count to evaluate battery health.
  • Verify user work mode register to confirm anti-feed-in or trade mode is active after a configuration change.

Installation

  1. Connect an RS485-to-TCP bridge (such as an Elfin EW11 or PUSR DR134) to the RS485 port on the Marstek Venus D using the included cable: pin 1 to A+, pin 2 to B-, pin 3 to GND. Configure the bridge for baud rate 115200, 8N1, Modbus TCP gateway mode on port 502.

  2. Connect the RS485-to-TCP bridge to the same LAN segment as the ModbusCloud Gateway, and note its assigned IP address.

  3. In the ModbusCloud portal, add a new device, select the Marstek Venus D template, enter the bridge IP address, port 502, and set the Modbus unit ID to match the slave ID configured on the bridge (default 1).

  4. Spot-check the connection by reading the soc register (address 32104): a value between 0 and 100 confirms the link is active and the register map is aligned.

Things to watch for

Write registers 42000 to 42020 have no effect. What is wrong?

The Marstek Venus D requires RS485 control mode to be active before any register in the 42000 to 42999 range accepts writes. Write the value 21930 (0x55AA) to register 42000 first. After finishing, write 21947 (0x55BB) to release control. Without this unlock step, all force-mode and setpoint writes are silently ignored.

The gateway connects but the soc and power registers return zero or errors.

Confirm the RS485 bridge is in Modbus TCP gateway mode, not transparent serial mode. Also verify the unit ID (slave ID) on the bridge matches what is configured in the ModbusCloud portal. The Marstek Venus D uses a single RS485 connection that supports only one simultaneous Modbus TCP client: disconnect any other tool (Home Assistant, evcc) before testing.

Why does the power register read unexpected negative values at midday?

Register 30001 uses signed int16 convention: positive values indicate discharge (battery feeding the AC side), negative values indicate charging. A negative reading at midday is normal if excess solar production is filling the battery. Confirm your portal dashboard is applying the correct sign interpretation for charge versus discharge.

Is it safe to write to the force mode and charge power setpoint registers remotely?

Use caution when writing to batterymode_e (42010) and batterymode_h (42020) via the ModbusCloud portal. Setting a charge power value that exceeds the device rating or writing conflicting mode sequences can cause unexpected charge or discharge behavior. Always release RS485 control (write 21947 to register 42000) after automated sequences complete, and test setpoint changes during attended commissioning first.

Want to see how it works?

Electrician working in an open distribution board