Marstek · Home battery
Venus A / Venus D Modbus register map
Default configuration
- Protocol
- RS485
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- High word first
- Baud rate
- 115200
- Parity
- None
- Data bits
- 8
- Stop bits
- 1
This device has an RS-485 interface. Reach it through a Modbus RTU-to-TCP gateway, configured with the factory serial settings above.
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 30001 | 1 | Battery power AC-side battery charge/discharge power; per evcc, this register covers only the AC-side charge/discharge transaction. The cited sources do not document the sign convention. | Int16 | W | 1 | R |
| 30006 | 1 | AC power AC-side power; positive = discharging. | Int16 | W | 1 | R |
| 30100 | 1 | Battery voltage | UInt16 | V | 0.01 | R |
| 30101 | 1 | Battery current | Int16 | A | 0.1 | R |
| 31000 | 10 | Device name 20-character device name. | Ascii | - | 1 | R |
| 32104 | 1 | Battery state of charge | UInt16 | % | 1 | R |
| 32105 | 1 | Battery stored energy | UInt16 | kWh | 0.001 | R |
| 32200 | 1 | AC voltage | UInt16 | V | 0.1 | R |
| 32204 | 1 | AC frequency | Int16 | Hz | 0.1 | R |
| 33000 | 2 | Total charging energy | UInt32 | kWh | 0.01 | R |
| 33002 | 2 | Total discharging energy | Int32 | kWh | 0.01 | R |
| 33004 | 2 | Daily charging energy | UInt32 | kWh | 0.01 | R |
| 33006 | 2 | Daily discharging energy | Int32 | kWh | 0.01 | R |
| 33008 | 2 | Monthly charging energy | UInt32 | kWh | 0.01 | R |
| 33010 | 2 | Monthly discharging energy | Int32 | kWh | 0.01 | R |
| 34003 | 1 | Battery cycle count | UInt16 | - | 1 | R |
| 35000 | 1 | Internal temperature | Int16 | °C | 0.1 | R |
| 35001 | 1 | MOS1 temperature | Int16 | °C | 0.1 | R |
| 35002 | 1 | MOS2 temperature | Int16 | °C | 0.1 | R |
| 35010 | 1 | Maximum cell temperature | Int16 | °C | 0.1 | R |
| 35100 | 1 | Inverter state 0 = sleep, 1 = standby, 2 = charge, 3 = discharge, 4 = backup mode, 5 = OTA upgrade, 6 = bypass. | UInt16 | - | 1 | R |
| 37007 | 1 | Maximum cell voltage | Int16 | V | 0.001 | R |
| 37008 | 1 | Minimum cell voltage | Int16 | V | 0.001 | R |
| 42000 | 1 | RS-485 control mode Enables control over Modbus (write commands). 21930 = on, 21947 = off. | UInt16 | - | 1 | RW |
| 42010 | 1 | Force mode 0 = none, 1 = charge, 2 = discharge. | UInt16 | - | 1 | RW |
| 42011 | 1 | Charge/discharge target SoC SoC at which a forced charge or discharge stops. | UInt16 | % | 1 | RW |
| 42020 | 1 | Forced charge power setpoint | UInt16 | W | 1 | RW |
| 42021 | 1 | Forced discharge power setpoint | UInt16 | W | 1 | RW |
| 43000 | 1 | User work mode 0 = manual, 1 = anti-feed (self-consumption), 2 = trade mode. | UInt16 | - | 1 | RW |
| 44002 | 1 | Maximum charge power | UInt16 | W | 1 | RW |
| 44003 | 1 | Maximum discharge power | UInt16 | W | 1 | RW |
Notes
Register map from the Marstek Venus Modbus integration for Home Assistant (ViperRNMC/marstek_venus_modbus, registers/a.yaml and d.yaml plus the README register table, retrieved 2026-10-24), cross-checked against evcc's marstek-venus-a.yaml, which reads AC power (30006) and the MPPT powers from the same map. The source itself opens with this caveat, quoted verbatim: "Venus A/D registers are untested. Base register map generated from CSV (v3 Description). Verify all addresses, names, and mappings on real hardware before use. Some entries may be incorrect, duplicated, or unmatched." This map is therefore machine-generated and not validated on hardware - unlike the Venus E Gen 3 file. Venus A and Venus D share the layout; addresses and scale factors are identical in both files. The discharging counters (33002, 33006, 33010) are signed in the definitions and unsigned in evcc's template; the signed form is kept. RS-485 device at 115200 8N1 (Venus A/D also answer on Ethernet where the firmware serves Modbus TCP; evcc offers both transports), so use a Modbus RTU-to-TCP gateway with these serial settings; unit ID 1 is the integration's default and can be changed on the device (register 41100 reports it). 32-bit energy counters are big-endian, high word first, as the integration decodes them. Left out: the PV MPPT input registers (30020-30027, 30037-30040), because they only exist on units with PV inputs and the source does not say which models have them; the per-pack cell voltage blocks, because pack 1 SoC at 34002 collides with the cycle counter block on some firmware and they are cell-level diagnostics only; and the alarm/fault bit fields (36000, 36100), whose bit meanings the source does not document.