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.