# 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](https://github.com/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. ## CHARGER block (start at 15201) | Addr | RO/RW | Name | Unit | Notes | |------|-------|------|------|-------| | 15201 | RO | Charger workstate | — | 0=Init, 1=Standby, 2=Charging, 3=Fault, 4=Flash | | 15202 | RO | MPPT state | — | 0=Stop, 1=Start, 2=Normal, 3=MPPT limit, 4=Float | | 15203 | RO | Charging state | — | 0=Stop, 1=Precharge, 2=CC, 3=CV, 4=Float, 5=Current derating | | 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 | | When you ask for register 15201 with `count=1` the inverter dumps the entire block (49 registers, addresses 15201..15249). The registers listed here are 15201..15208. ## INVERTER block (start at 25201) | Addr | RO/RW | Name | Unit | Notes | |------|-------|------|------|-------| | 25201 | RO | Work state | — | 0=PowerOn, 1=SelfTest, 2=OffGrid, 3=GridTie, 4=ByPass, 5=Stop, 6=GridCharging | | 25202 | RO | AC voltage grade | V | 230=230V variant, 120=120V variant | | 25203 | RO | Rated power | VA | | | 25204 | RO | reserved | | | | 25205 | RO | Battery voltage | 0.1 V | | | 25206 | RO | Inverter voltage | 0.1 V | | | 25207 | RO | Grid voltage | 0.1 V | | | 25208 | RO | BUS voltage | 0.1 V | | | 25209 | RO | Control current | 0.1 A | | | 25210 | RO | Inverter current | 0.1 A | | | 25211 | RO | Grid current | 0.1 A | | | 25212 | RO | Load current | 0.1 A | | | 25213 | RO | PInverter | W | **signed** in this script; protocol says unsigned 1W | | 25214 | RO | PGrid | W | signed (negative = exporting to grid) | | 25215 | RO | PLoad | W | signed (negative = ??? on this firmware) | | 25216 | RO | Load percent | % | unit is percent (raw integer, NOT ×0.01) | | 25217 | RO | SInverter | VA | | | ... | | (more S/Q regs, frequencies, temps, relays, accumulators) | | | | 25233 | RO | AC radiator temperature | °C | | | 25234 | RO | Transformer temperature | °C | | | 25235 | RO | DC radiator temperature | °C | often 0 on units without that sensor | | ... | | | | | | 25273 | RO | Batt power | W | signed | | 25274 | RO | Batt current | 0.1 A | signed | | 25275 | RO | Batt voltage grade | V | 12, 24, or 48 | This monitor polls 25201..25274 (74 registers). The inverter returns all of them in one response when asked. ## SETTINGS blocks (split into two ranges) ### 10103..10104 | Addr | RO/RW | Name | Unit | |------|-------|------|------| | 10103 | RW | Float voltage | 0.1 V | | 10104 | RW | Absorb 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](https://github.com/taHC81/MUST-ESPhome) repo against the same document uploaded to [Scribd](https://www.scribd.com/document/881604771/) (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 | > **Note:** Earlier versions of this file and the monitor script had > incorrect values for 15201–15203. They were originally derived from > a misreading of the protocol document. If you ran the script before > the 2026-09-10 fix, you may have seen "Standby", "Charging", > "Float" etc. where the correct values are "SelfTest mode", "Work > mode", "Float charge". The protocol doc and the live readings agree; > the old decode tables did not. ## 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.7 V`, `Grid voltage = 117.0 V`.