register-map.md 7.5 KB

MUST PV1800 register map

Derived from the manufacturer protocol document PH1800 PV1800 EP1800 PV3500 EP3500 RS485 Modbus RTU communication Protocol 1.4.15.xlsx shipped in the taHC81/MUST-ESPhome GitHub repo. Only the registers this monitor reads are listed here; the full document covers hundreds more.

All values are Modbus RTU holding registers (function code 0x03), unless otherwise noted. RO = read-only, RW = read/write.

The monitor reads everything below as contiguous blocks:

  • CHARGER block: 15201..15221 (with gaps at 15204, 15213, 15214)
  • INVERTER block: 25201..25275 (with gaps at 25204, 25220, 25224, 25227, 25228, 25232, 25236, 25243, 25244, 25262..25272, 25276)
  • SETTINGS: two short contiguous reads at 10103..10104 and 20118..20132

The firmware ignores the count field and dumps the entire block regardless, so the monitor always asks for the widest range that covers what we care about.


CHARGER block (start at 15201)

Addr RO/RW Name Unit Notes
15201 RO Charger workstate — decoded: Init / SelfTest / Work / Stop
15202 RO MPPT state — decoded: Stop / MPPT / Current limiting
15203 RO Charging state — decoded: Stop / Absorb / Float / EQ
15204 RO reserved
15205 RO PV voltage 0.1 V
15206 RO Battery voltage (charger side) 0.1 V
15207 RO Charger current 0.1 A
15208 RO Charger power W
15209 RO Charger radiator temperature 1 °C
15210 RO External temperature 1 °C
15211 RO Battery Relay bool 0=Open, 1=Closed
15212 RO PV Relay bool 0=Open, 1=Closed
15213 RO reserved
15214 RO reserved
15215 RO Battery voltage grade V 12, 24, or 48
15216 RO Charger rated current 0.1 A
15217 RO Accumulated PV energy MWh part MWh combine with 15218 for total kWh
15218 RO Accumulated PV energy kWh part 0.1 kWh combine with 15217 for total kWh
15219 RO Accumulated runtime days days
15220 RO Accumulated runtime hours hours
15221 RO Accumulated runtime minutes minutes

The accumulated energy at 15217+15218 combines as total_kWh = 15217 * 1000 + 15218 * 0.1.


INVERTER block (start at 25201)

Operating state & configuration

Addr RO/RW Name Unit Notes
25201 RO Work state — decoded: PowerOn / SelfTest / OffGrid / GridTie / ByPass / Stop / GridCharging
25202 RO AC voltage grade V 230 or 120
25203 RO Rated power VA
25204 RO reserved

Voltages

Addr Name Unit
25205 Battery voltage (inverter side) 0.1 V
25206 Inverter voltage 0.1 V
25207 Grid voltage 0.1 V
25208 BUS voltage 0.1 V

Currents

Addr Name Unit
25209 Control current 0.1 A
25210 Inverter current 0.1 A
25211 Grid current 0.1 A
25212 Load current 0.1 A

Power (real / apparent / reactive)

Addr Name Unit
25213 PInverter W (signed in our script)
25214 PGrid W (signed; negative = exporting)
25215 PLoad W (signed)
25216 Load percent %
25217 SInverter VA (signed)
25218 SGrid VA (signed)
25219 SLoad VA (signed)
25220 reserved
25221 Qinverter var (signed)
25222 Qgrid var (signed)
25223 Qload var (signed)

Frequencies

Addr Name Unit
25225 Inverter frequency 0.01 Hz
25226 Grid frequency 0.01 Hz

Temperatures

Addr Name Unit
25233 AC radiator temperature 1 °C
25234 Transformer temperature 1 °C
25235 DC radiator temperature 1 °C

Relays

Addr Name Notes
25237 Inverter relay 0=Disconnect, 1=Connect
25238 Grid relay
25239 Load relay
25240 N_Line relay
25241 DC relay
25242 Earth relay

Energy accumulators (each is a HIGH+LOW pair)

Addr Name Scale
25245 Acc charger MWh part 1000 kWh
25246 Acc charger kWh part 0.1 kWh
25247 Acc discharger MWh part 1000 kWh
25248 Acc discharger kWh part 0.1 kWh
25249 Acc grid-buy MWh part 1000 kWh
25250 Acc grid-buy kWh part 0.1 kWh
25251 Acc grid-sell MWh part 1000 kWh
25252 Acc grid-sell kWh part 0.1 kWh
25253 Acc load MWh part 1000 kWh
25254 Acc load kWh part 0.1 kWh
25255 Acc self-use MWh part 1000 kWh
25256 Acc self-use kWh part 0.1 kWh
25257 Acc PV-sell MWh part 1000 kWh
25258 Acc PV-sell kWh part 0.1 kWh
25259 Acc grid-charge MWh part 1000 kWh
25260 Acc grid-charge kWh part 0.1 kWh

Each accumulator combines as total_kWh = HIGH * 1000 + LOW * 0.1. The monitor does this combination in _combine_accumulators() and displays each as a single Acc <name> (total) = X.X kWh line.

Alarm / warning / status bits

Registers 25261..25268 hold error/warning bits. Not currently polled.

Battery telemetry

Addr Name Unit
25273 Battery power W (signed)
25274 Battery current 0.1 A (signed)
25275 Battery voltage grade V (12, 24, or 48)

SETTINGS blocks (split into two ranges)

10103..10104

Addr RO/RW Name Unit
10103 RW Float voltage 0.1 V
10104 RW Absorption voltage 0.1 V

20118..20132

Addr RO/RW Name Unit
20118 RW Battery stop discharging voltage 0.1 V
20119 RW Battery stop charging voltage 0.1 V
20127 RW Battery low voltage 0.1 V
20128 RW Battery high voltage 0.1 V
20132 RW Max combine charger current 0.1 A

Decoded state values

These are the canonical values from protocol v1.4.15, verified by cross-checking the XLSX shipped with the taHC81/MUST-ESPhome repo against the same document uploaded to Scribd (document 881604771).

Charger workstate (15201)

Value Meaning
0 Initialization mode
1 SelfTest mode
2 Work mode
3 Stop mode

MPPT state (15202)

Value Meaning
0 Stop
1 MPPT
2 Current limiting

Charging state (15203)

Value Meaning
0 Stop
1 Absorb charge
2 Float charge
3 EQ charge (equalization)

Inverter workstate (25201)

Value Meaning
0 PowerOn
1 SelfTest
2 OffGrid
3 Grid-Tie
4 ByPass
5 Stop
6 GridCharging

Notes on this unit

  • Battery voltage grade is 24 V (24V battery system).
  • AC voltage grade is 120 V (120V variant, not the 230V default).
  • Confirmed against live readings: Battery voltage = 28.2 V, Inverter voltage = 115.5 V, Grid voltage = 117.0 V.
  • Frequencies are 60 Hz (US-style).
  • The Acc grid-charge (total) = 1.0 kWh reading shows the inverter has charged the battery from grid once for a total of ~1 kWh.
  • The Acc grid-buy (total) = 17.0 kWh reading shows the inverter has bought 17 kWh from the grid over its lifetime.
  • These lifetime counters survive power cycles.