VPP Protocol¶
Source documents: Growatt VPP Communication Protocol of Inverter V2.01 / V2.03 (
GI-BK-E060_GROWATT.VPP.COMMUNICATION.PROTOCOL.OF.INVERTER_V2.03.xlsx,growatt_vpp_protocol_v2.01_registers.csv)VPP (Virtual Power Plant) is Growatt's advanced monitoring and control protocol. It uses registers in the 30000+ range and is only supported by newer inverter models. Multiple protocol versions (V2.01, V2.02, V2.03) are in active use - all share the same core register layout described here.
Applicable models: SPH, SPA, MIN TL-XH, MOD TL3-XH, MID TL3-XH, WIT, WIS, and others
Register Ranges¶
| Range | Purpose |
|---|---|
| 30000-30099 | Device identification, rated parameters, system settings |
| 30100-30499 | Control registers (AC power, battery, TOU schedule) |
| 31000-31499 | Real-time data (status, PV, grid, battery, load) |
| 32000+ | Extended / model-specific |
DTC Codes (Table 3-1)¶
The DTC (Device Type Code) is stored at holding register 30000 and uniquely identifies the inverter model. The integration reads this at startup for automatic model detection.
This table is generated from DTC_REGISTRY in auto_detection.py, the single source of
truth, and is checked against it by the test suite.
Profile mapping is a separate question from the DTC itself. The code is read from the device and identifies the model reliably; whether the profile it selects is correct for that model has, for most entries, never been verified against hardware. See DTC Debugging for what that means in practice.
| DTC | Model | Profile to select | Mapping |
|---|---|---|---|
| 3501 | SPH 3000-6000TL BL | SPH (3-6kW) | Unconfirmed |
| 3502 | SPH 3000-6000TL BL-UP | SPH (3-6kW) | Confirmed |
| 3503 | SPH 3000-6000TL HU | SPH (3-6kW) | Unconfirmed |
| 3504 | SPH 3000-6000TL HUB | SPH (3-6kW) | Confirmed |
| 3601 | SPH-TL3 4-10kW | SPH-TL3 (3-10kW) | Confirmed |
| 3701 | SPA 1000-3000TL BL | SPH (3-6kW) | Unconfirmed |
| 3715 | SPA 3000-6000TL AU | SPH (3-6kW) | Unconfirmed |
| 3716 | SPA 3000-6000TL AUB | SPH (3-6kW) | Unconfirmed |
| 3725 | SPA-TL3 4-10kW | SPA-TL3 (AC Storage, 3-Phase) 4-10kW | Confirmed |
| 3735 | SPA 3000TL BL-UP | SPH (3-6kW) | Unconfirmed |
| 5001 | MID 17-25KTL3-X; MID 20-30KTL3-X2; MID 25-30KTL3-X2 Pro/X2 Pro.E; MID 33-50KTL3-X2/X2 Pro/X2 Pro.E; MID 30-40KTL3-X; MID 33-36KTL3-X(Pro.E); MID 3-33KTL3-X3 | MID (15-25kW) | Confirmed |
| 5002 | MOD 3-15KTL3-X; MOD 3-15KTL3-X2(Pro); MOD 12-20KTL3-X2; MOD 12-20KTL3-X2(E); MOD 3-33KTL3-X3 | MID (15-25kW) | Unconfirmed |
| 5003 | MAC 30-70KTL3-X; MAC 15-36KTL3-XL; MAC 50-70KTL3-X2; MAC 30-36KTL3-XL2 | MID (15-25kW) | Unconfirmed |
| 5000 | MAX 50-100KTL3 LV/MV | MID (15-25kW) | Unconfirmed |
| 5500 | MAX 175-253KTL3-X HV | MID (15-25kW) | Unconfirmed |
| 5501 | MAX 80-150KTL3-X LV/MV; MAX 100-150KYL3-X2 LV/MV | MID (15-25kW) | Unconfirmed |
| 5502 | MAX 320-350KTL3-X | MID (15-25kW) | Unconfirmed |
| 5100 | MIN 2500-6000TL-XH/XH2/XHE/XA | TL-XH (3-10kW) | Confirmed |
| 5200 | MIC 600-3300TL-X/X2/X2(Pro); MIN 2500-6000TL-X/X2/X2(Pro)/X2(Pro.E) | MIN (3-6kW) | Unconfirmed |
| 5201 | MIN 7-10KTL-X/X2/X2(E) | MIN (7-10kW) | Confirmed |
| 5400 | MOD 3-10KTL3-XH/BP; MID 11-30KTL3-XH; MID 8-15KTL3-XHL/JP | MOD Hybrid (6-15kW) | Confirmed |
| 5401 | MOD 3-15KTL3-HU; MID 33-50KTL3-HU | MOD Hybrid (6-15kW) | Confirmed |
| 5600 | WIS 100K-AM; WIT 50-100K-H/HE/HU/A/AE/AU (incl. -US); WIT 28-55K-H/HE/HU/A/AE/AU-US L2 | WIT (29.9-50kW XHU) | Unconfirmed |
| 5601 | WIT 29.9-50K-XHU | WIT (29.9-50kW XHU) | Confirmed |
| 5800 | WIS 210K | MID (15-25kW) | Unconfirmed |
| 5801 | WIS 215K-AM | MID (15-25kW) | Unconfirmed |
SPA owners
Every SPA code above resolves to an SPH profile, which is why the profile column reads that way. SPH profiles include PV string sensors, and SPA hardware has no solar DC inputs — so those entities will exist and read zero permanently. A dedicated SPA profile is in progress (#360).
Not in the spec table¶
| DTC | Model | Profile to select | Mapping |
|---|---|---|---|
| 5603 | WIT 4-15kW Hybrid | WIT (4-15kW) | Confirmed |
WIT residential models (4-15KTL3): The VPP V2.03 spec (dated 2025.9.1) does not include the WIT 4-15KTL3 residential series in its DTC table — only commercial WIT (50K-100K) models appear. DTC 5603 was confirmed by a live register read (register 30000 = 5603 on a WIT 15KTL3, Issue #335) with protocol version register 30099 = 203, so the residential range follows V2.03 register structure despite being omitted from the spec's device table.
Non-VPP models are not listed here. Legacy V1.39 devices (MIC 2500-5500MTL-S, TL3-S, SPH/SPM 8000-10000TL-HU), off-grid SPF (3400-3403) and SPE (64541) carry their DTC at holding register 43 rather than 30000. They appear in the full DTC reference.
Holding Registers (93 registers)¶
| Address | Parameter Name | R/W | Type | Unit | Count | Notes |
|---|---|---|---|---|---|---|
| 30000 | Equipment type (DTC) | RO | UINT16 | - | 1 | See Table 3-1 |
| 30001 | SN | RO | UINT16 | - | 15 | - |
| 30016 | Rated power (Pn) | RO | UINT32 | 0.1W | 2 | - |
| 30018 | Maximum active power (Pmax) | RO | UINT32 | 0.1W | 2 | - |
| 30020 | Maximum reactive power (Qmax fed into the grid) | RO | UINT32 | 0.1VAR | 2 | - |
| 30022 | Maximum reactive power (Qmax absorption grid) | RO | UINT32 | 0.1VAR | 2 | - |
| 30024 | Maximum apparent power (Smax) | RO | UINT32 | 0.1VA | 2 | - |
| 30026 | Rated charging and discharging power of BDC | RO | UINT32 | 0.1W | 2 | - |
| 30028 | PV input maximum power | RO | UINT32 | 0.1W | 2 | - |
| 30030 | Battery type | RO | UINT8 | - | 1 | 0: lead acid battery, 1: lithium battery |
| 30031 | Reserve | RO | UINT16 | - | 29 | - |
| 30060 | Machine Model | RO | UINT16 | ASCII | 1 | Example: TL |
| 30061 | Machine Model | RO | UINT16 | ASCII | 1 | Example: AA |
| 30062 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30063 | Version Num 2 | RO | UINT16 | Digit | 1 | - |
| 30064 | Version Num 3 | RO | UINT16 | Digit | 1 | - |
| 30065 | M3 Version Name | RO | UINT16 | ASCII | 1 | Example: ZB |
| 30066 | M3 Version Name | RO | UINT16 | ASCII | 1 | Example: AA |
| 30067 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30068 | Machine Model | RO | UINT16 | ASCII | 1 | Example: VC |
| 30069 | Machine Model | RO | UINT16 | ASCII | 1 | Example: AA |
| 30070 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30071 | DSP2 Software Version Name | RO | UINT16 | ASCII | 1 | Example: VC |
| 30072 | DSP2 Software Version Name | RO | UINT16 | ASCII | 1 | Example: BA |
| 30073 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30074 | BCU Software Version Name | RO | UINT16 | ASCII | 1 | Example: QB |
| 30075 | BCU Software Version Name | RO | UINT16 | ASCII | 1 | Example: AA |
| 30076 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30077 | M3 Software Version Name | RO | UINT16 | ASCII | 1 | Example: ZE |
| 30078 | M3 Software Version Name | RO | UINT16 | ASCII | 1 | Example: BA |
| 30079 | Version Num 1 | RO | UINT16 | Digit | 1 | - |
| 30080 | Machine Model | RO | UINT16 | ASCII | 1 | Example: ZO |
| 30081 | Machine Model | RO | UINT16 | ASCII | 1 | Example: AA |
| 30082 | Version Num 1 | RO | UINT16 | 1 | 1 | - |
| 30083 | Reserved | RO | UINT16 | - | 1 | Reserved |
| 30084 | Reserved | RO | UINT16 | - | 1 | Reserved |
| 30099 | VPP Protocol Version | RO | UINT16 | - | 15 | 200 represents V2.00, 201 represents V2.01 |
| 30100 | Control authority | RW | UINT16 | - | 1 | 0: not enabled, 1: Enable, Default: 0 |
| 30101 | On off command | RW | UINT16 | - | 1 | 0: power off, 1: power on, 9: bypass (V2.03), Default: 1, Not storage |
| 30102 | Country / region number | RO | UINT16 | - | 1 | See Table 3-5 |
| 30103 | Reserve | RW | UINT16 | - | 1 | - |
| 30104 | System time | RW | UINT16 | - | 6 | See table 3-6 |
| 30110 | Reserve | RW | UINT32 | - | 2 | - |
| 30112 | Mailing address | RO | UINT16 | - | 1 | [1, 255], Default: 1 |
| 30113 | Communication baud rate | RO | UINT16 | - | 1 | 0:9600 bps, 1:38400 bps, Default: 0 |
| 30114 | Reserved | RW | UINT16 | - | 1 | - |
| 30115 | SYN enable | RW | UINT16 | - | 1 | Offline box enable, 0: not enabled, 1: enable, Default: 0 |
| 30116 | Reserve | RW | UINT16 | - | 34 | - |
| 30150 | Reserve | RW | UINT16 | - | 1 | - |
| 30151 | Active power percentage derating | RW | UINT16 | % | 1 | Power limit percentage: [0,100], Default: 100 |
| 30152 | Reserve | RW | UINT16 | - | 2 | - |
| 30154 | Static active power limitation | RW | UINT16 | % | 1 | Power limit percent: [0,100], Default: 100, Actual active power is the less one, Not storage |
| 30155 | EPS offline enable | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30156 | EPS offline frequency | RW | UINT16 | 0.01Hz | 1 | 0:50Hz, 1:60Hz, Default: 0 |
| 30157 | EPS offline voltage | RW | UINT16 | - | 1 | Default: 0 — WIT/WIS: 0:230V 1:208V 2:240V 3:220V 4:127V 5:277V 6:254V; MOD-XH/MID-XH/MOD/MID-HU: 0:230V 1:208V 2:240V 3:220V; SPH/SPA: 0:230V 1:208V 2:240V; other models: not used |
| 30158 | Reserve | RW | UINT16 | - | 2 | - |
| 30160 | Fix Q | RW | UINT16 | % | 1 | Power limit percentage: [0,70], Default: 0 |
| 30161 | Reactive power mode | RW | UINT16 | - | 1 | 0: PF=1, 1: Pf value setting, 4: Lagging reactive power (+), 5: Leading reactive power (-), Default: 0 |
| 30162 | Power factor | RW | UINT16 | - | 1 | [0,2000] ∪ [18000,20000], Default: 20000, Actual PF = (set value - 10000) * 0.0001 |
| 30163 | Reserve | RW | INT16 | % | 1 | - |
| 30164 | Reserve (reactive power curve) | RW | UINT16 | - | 36 | - |
| 30200 | Export Limitation Enable | RW | UINT16 | - | 1 | 0: not enabled, 1: single machine enable, Default: 0 |
| 30201 | Export Limitation power Rate | RW | INT16 | % | 1 | [-100,100], Default: 0, Positive=backflow, negative=fair current |
| 30202 | Export Limitation Failure power Rate | RW | UINT16 | % | 1 | [0,100], Default: 0 |
| 30203 | EMS Communicating Failure Time | RW | UINT16 | S | 1 | [1,300], Default: 30 |
| 30204 | EMS Communication Failure Enable | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30205 | Super Export Limitation enable | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30206 | Export Limitation change slope | RW | UINT16 | *0.01%Pn/s | 1 | [1,20000], Default: 27 |
| 30207 | Export Limitation single phase control enable | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30208 | Export Limitation protection mode | RW | UINT16 | - | 1 | 0: Default mode, 1: Combine control, 2: software control, 3: hardware control, Default: 0 — not used by SPH/SPA/WIT/WIS (per spec Note 2) |
| 30209 | Automatic on/off-grid switch enable (V2.03) | RW | UINT16 | - | 1 | 0: Automatic, 1: Manual, Default: 0 |
| 30210 | On/off-grid set (V2.03) | RW | UINT16 | - | 1 | 0: on-grid, 1: off-grid, 2: diesel engine mode, Default: 0 — settable only when 30209=1 (Manual) |
| 30211 | Active power R (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power/3] |
| 30212 | Active power S (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power/3] |
| 30213 | Active power T (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power/3] |
| 30214 | Single phase active power control enable (V2.03) | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30215 | AC charge power max limitation (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power], Default: no limit — active only when 30410 is enabled |
| 30216 | Reserve | RW | UINT16 | - | 34 | - |
| 30250 | Diesel engine rated power (V2.03) | RW | UINT16 | 0.1kW | 1 | [0,10000], Default: inverter rated power |
| 30251 | Diesel engine charge power (V2.03) | RW | UINT16 | 0.1kW | 1 | [0,10000], Default: inverter rated power |
| 30252 | Diesel engine enable (V2.03) | RW | BOOL | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30253 | Off-grid diesel engine start SOC (V2.03) | RW | UINT16 | % | 1 | [0,100], Default: 20 |
| 30254 | Off-grid diesel engine stop SOC (V2.03) | RW | UINT16 | % | 1 | [0,100], Default: 50 |
| 30255 | Diesel engine preheat time (V2.03) | RW | UINT16 | s | 1 | [0,3600], Default: 60 |
| 30256 | Reserve | RW | UINT16 | - | 44 | - |
| 30300 | Battery cluster index | RW | UINT16 | - | 1 | [0,3], Default: 0 |
| 30301 | Demand management enable (V2.03) | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30302 | Demand management export power limitation (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power], Default: no limit |
| 30303 | Demand management import power limitation (V2.03) | RW | UINT16 | 0.1kW | 1 | [0, rated power], Default: no limit |
| 30304 | Peak-shaving backup power SOC (V2.03) | RW | UINT16 | % | 1 | [0,100], Default: 50 |
| 30305 | Peak-shaving enable (V2.03) | RW | UINT16 | - | 1 | 0: not enabled, 1: enable, Default: 0 |
| 30306 | Reserve | RW | UINT16 | - | 94 | - |
| 30400 | Reserve (Battery max charging power) | RW | UINT32 | 0.1W | 2 | Not used |
| 30402 | Reserve (Battery max discharging power) | RW | UINT32 | 0.1W | 2 | Not used |
| 30404 | Charging cut off SOC | RW | UINT8 | % | 1 | [10,100], Default: 100 |
| 30405 | Online discharge cut off SOC | RW | UINT8 | % | 1 | [10,100], Default: 10 |
| 30406 | Load priority discharge cut off SOC | RW | UINT8 | % | 1 | [10,100], Default: 10 |
| 30407 | Remote power control enable | RW | UINT8 | - | 1 | 0: not enabled, 1: Enable, Default: 0, Not storage |
| 30408 | Remote power control charging time | RW | UINT16 | min | 1 | 0: unlimited, 1~1440min, Default: 0, Not storage |
| 30409 | Remote charge and discharge power | RW | INT16 | - | 1 | [-100,100], Positive=charging, Negative=discharge, Default: 0, Not storage |
| 30410 | AC charging enable | RW | UINT8 | - | 1 | 0: not enabled, 1: Enable AC charge (PV charging first), 2: Enable AC charge (AC charging first) (V2.03), Default: 0 |
| 30411 | Charging and discharging in different periods (20 sections) | RW | UINT16 | - | 61 | See Table 3-2, 30412~30471 default: 0 |
| 30472 | Reserve | RO | UINT16 | - | 2 | - |
| 30474 | Actual control value of charging and discharging power | RO | UINT16 | - | 1 | [-100,100], Positive=charging, Negative=discharge |
| 30475 | Offline discharge cut off SOC | RW | UINT16 | % | 1 | [10,100], Default: 10 |
| 30476 | TOU default mode (V2.03) | RW | UINT8 | - | 1 | Mode outside configured TOU periods: 0: load first, 1: battery first, 2: grid first, Default: 0 |
| 30477 | TOU reset enable (V2.03) | RW | UINT8 | - | 1 | [0,1] — when enabled, all existing TOU period data is cleared on next period write, Default: 0 |
| 30478 | Reserve | RW | UINT16 | - | 18 | - |
| 30496 | Battery charge stop voltage | RW | UINT16 | 0.1V | 1 | Lead-acid only, [0,15000] |
| 30497 | Battery discharge stop voltage | RW | UINT16 | 0.1V | 1 | Lead-acid only, [0,15000] |
| 30498 | Battery max charge current | RW | UINT16 | 0.1A | 1 | Lead-acid only, [0,2000], Default: 1500 |
| 30499 | Battery max discharge current | RW | UINT16 | 0.1A | 1 | Lead-acid only, [0,2000], Default: 1500 |
| 30500 | Safety Information | RW | UINT16 | - | 500 | See GROWATT INVERTER VPP COMMUNICATION PROTOCOL & SAFETY PARAMETERS |
| 32000 | Reserve | RW | UINT16 | - | 100 | - |
Field-established registers (not in any public document)¶
Everything above is transcribed from Growatt's protocol documents. The registers below are not: they appear in no public revision we have, and were established by measurement on real hardware. They are recorded here because the alternative is losing them in an issue thread.
Treat them as narrower evidence than the tables above — one machine, one firmware line — and say so in anything derived from them.
MOD TL3-XH peak shaving / demand management (holding 3307–3312)¶
protocol-v139.md carries no holding-register semantics above 3282; Modbus RTU Protocol II
V1.24 declares the TL-XH ranges to 3374 but its tables stop around 3280. This is consistent
with Growatt's own position that peak shaving on the MOD 3-10KTL3-XH needs a firmware
upgrade obtained from them — a later addition, documented in a revision that is not public.
Established on a MOD 10KTL3-XH (DN1.0, DTC 5400) by changing each value in the Growatt web portal and reading the register back, with peak shaving disabled throughout so the changes were inert (#372).
| Address | Meaning | Cloud field | Scale | How established |
|---|---|---|---|---|
| 3307 | Import limit | uw_demand_mgt_downstrm_power_limit |
0.1 kW | Portal 7.5 → 7.0 kW, register 75 → 70 |
| 3308 | Export limit | uw_demand_mgt_revse_power_limit |
0.1 kW | Portal 7.5 → 7.0 kW, register 75 → 70 |
| 3310 | Peak shaving reserved SOC | ub_peak_shaving_backup_soc |
1 % | Portal 50 → 45, register 50 → 45 |
| 3311 | AC charging max power limit | uw_ac_charging_max_power_limit |
0.1 kW | Elimination; write verified |
| 3312 | Grid charging stop SOC | ub_ac_charging_stop_soc |
1 % | Reverse: wrote 85 over Modbus, cloud reported 85 ~12 min later |
3309, 3313 and 3314 are not mapped. 3314 reads 10, which coincides with two other discharge-stop SOCs, and is settable nowhere — so it could not be confirmed in either direction. Value correlation alone is not sufficient here: 100 occurs in six cloud settings and seventeen registers.
3312 is distinct from 3048. 3048 is the general charge stop; 3312 caps charging from the grid specifically, and the lower of the two wins. Growatt exposes 3312 in neither the app nor the portal, which is how it silently capped one system's grid charging at 55 % for two days while the general stop read 100 %.
VPP remote power control on MOD TL3-XH¶
Remote power control works on this family, contrary to the assumption behind the WIT-only gate in the integration. Three findings from measurement (#373) that any implementation needs:
-
The commanded power (30409) is a target, not a limit — and it overrides
allow_grid_charge(3049). At 100 % with insufficient PV the inverter climbed toward the setpoint and drew from the grid while 3049 was 0. At 5/10/20 % only downward limiting is visible, which gives a misleading impression of a cap.The often-quoted 912 W is a single sample five seconds in, from a run an abort threshold stopped immediately — charge power was still climbing, 2592 → 4767 W in those five seconds. Treat it as a lower bound on what this does, not a characteristic value.
-
The duration is not reliable in either direction. With 30408 = 2 minutes the constraint released at ~128 s. With 30408 = 5 minutes it had not released at 390 s and only did so when 30407 and 30100 were written back to 0 by hand. In both runs 30407, 30409 and 30100 stayed set throughout.
Two consequences. Active state cannot be inferred from the register values — that holds either way. And an implementation must clear the registers itself; the timer is not a safety net that will release the inverter on its own.
-
30407 alone does nothing — 30100 (control authority) must also be set. This is presumably why the capability was assumed absent on non-WIT families.
On the transfer function. Three charge points fit a line — 77.6 W per percentage point, offset −86 W, full scale ≈7.25 kW on a 15 kWh battery — and predicted a fourth within 2 %. A fifth measurement does not fit: a repeat of the 20 % point produced 0 W rather than ~1466 W, with the battery at zero and the PV surplus going to the grid instead. Conditions differed on two axes at once (PV 4.9 → 3.0 kW, house load low → 1.9 kW, SoC ~60 → 83 %), and which of them matters has not been tested.
So the linear fit describes some regime, not the device. A clamp that assumes commanded power is delivered will meet the case where it is not. The discharge side (−10 % → 832 W, −20 % → 1569 W) is two points fitted to two parameters and therefore has no residual by construction — indicative only.
30474 mirrors the last commanded setpoint. It retains the last command after remote control is disabled — confirmed ten hours later still reading −33, raw 65503, with 30100/30407/30409 all zero — and a direct write is accepted and ignored, the echo returning the written value while the read-back keeps the old one. An earlier report that it returns to 100 on its own has since failed to reproduce and should not be relied on.
Input Registers (87 registers)¶
| Address | Parameter Name | R/W | Type | Unit | Count | Notes |
|---|---|---|---|---|---|---|
| 31000 | Working state of inverter | RO | UINT16 | 1 | 1 | 0:standby, 1:self-test, 2:reserved, 3:fault, 4:upgrade, 5:PV online & battery offline & on-grid, 6:PV online (or offline) & battery online & on-grid, 7:PV online & battery online & off-grid, 8:PV offline & battery online & off-grid, 9:bypass |
| 31001 | Battery working status | RO | UINT16 | 1 | 1 | 0:standby,1:disconnected,2:charging,3:discharge,4:fault,5:upgrade |
| 31002 | Priority of work | RO | UINT16 | 1 | 1 | 0:load first,1:Battery first,2:grid first |
| 31003 | Reserve | RO | UINT16 | - | 2 | - |
| 31005 | Fault code | RO | UINT16 | - | 1 | See Table 3-3 |
| 31006 | Fault sub code | RO | UINT16 | - | 1 | See Table 3-3 |
| 31007 | Alarm code | RO | UINT16 | - | 1 | See Table 3-4 |
| 31008 | Alarm sub code | RO | UINT16 | - | 1 | See Table 3-4 |
| 31009 | Reserve | RO | UINT16 | - | 1 | - |
| 31010 | PV1 voltage | RO | INT16 | 0.1V | 1 | - |
| 31011 | PV1 current | RO | INT16 | 0.1A | 1 | - |
| 31012 | PV2 voltage | RO | INT16 | 0.1V | 1 | - |
| 31013 | PV2 current | RO | INT16 | 0.1A | 1 | - |
| 31014 | PV3 voltage | RO | INT32 | 0.1W | 1 | - |
| 31015 | PV3 current | RO | INT16 | 0.1A | 1 | - |
| 31016 | PV4 voltage | RO | INT16 | 0.1V | 1 | - |
| 31017 | PV4 current | RO | INT16 | 0.1A | 1 | - |
| 31018 | PV5 voltage | RO | INT16 | 0.1V | 1 | - |
| 31019 | PV5 current | RO | INT16 | 0.1A | 1 | - |
| 31020 | PV6 voltage | RO | INT16 | 0.1V | 1 | - |
| 31021 | PV6 current | RO | INT16 | 0.1A | 1 | - |
| 31022 | PV7 voltage | RO | INT16 | 0.1V | 1 | - |
| 31023 | PV7 current | RO | INT16 | 0.1A | 1 | - |
| 31024 | PV8 voltage | RO | INT16 | 0.1V | 1 | - |
| 31025 | PV8 current | RO | INT16 | 0.1A | 1 | - |
| 31026 | PV9 voltage | RO | INT16 | 0.1V | 1 | - |
| 31027 | PV9 current | RO | INT16 | 0.1A | 1 | - |
| 31028 | PV10 voltage | RO | INT16 | 0.1V | 1 | - |
| 31029 | PV10 current | RO | INT16 | 0.1A | 1 | - |
| 31030 | PV11 voltage | RO | INT16 | 0.1V | 1 | - |
| 31031 | PV11 current | RO | INT16 | 0.1A | 1 | - |
| 31032 | PV12 voltage | RO | INT16 | 0.1V | 1 | - |
| 31033 | PV12 current | RO | INT16 | 0.1A | 1 | - |
| 31034 | PV13 voltage | RO | INT16 | 0.1V | 1 | - |
| 31035 | PV13 current | RO | INT16 | 0.1A | 1 | - |
| 31036 | PV14 voltage | RO | INT16 | 0.1V | 1 | - |
| 31037 | PV14 current | RO | INT16 | 0.1A | 1 | - |
| 31038 | PV15 voltage | RO | INT16 | 0.1V | 1 | - |
| 31039 | PV15 current | RO | INT16 | 0.1A | 1 | - |
| 31040 | PV16 voltage | RO | INT16 | 0.1V | 1 | - |
| 31041 | PV16 current | RO | INT16 | 0.1A | 1 | - |
| 31042 | Reserve | RO | INT16 | - | 16 | - |
| 31058 | PV input power | RO | INT32 | 0.1W | 2 | - |
| 31060 | Reserve | RO | UINT32 | - | 40 | - |
| 31100 | Active power | RO | INT32 | 0.1W | 2 | Positive:export to grid, Negative:import from grid — grid-tied MID models: this is inverter AC output only; use Meter Power (31112) for actual grid exchange |
| 31102 | Reactive power | RO | INT32 | 0.1VAR | 2 | - |
| 31104 | Reserve | RO | INT16 | - | 1 | - |
| 31105 | Grid frequency | RO | UINT16 | 0.01Hz | 1 | - |
| 31106 | Grid voltage / line AB voltage | RO | UINT16 | 0.1V | 1 | When output mode is L/N |
| 31107 | BC line voltage of power grid | RO | UINT16 | 0.1V | 1 | - |
| 31108 | CA line voltage of power grid | RO | UINT16 | 0.1V | 1 | - |
| 31109 | Grid current / A phase current of grid | RO | INT16 | 0.1A | 1 | - |
| 31110 | Phase B current of grid | RO | INT16 | 0.1A | 1 | - |
| 31111 | Phase C current of grid | RO | INT16 | 0.1A | 1 | - |
| 31112 | Meter power | RO | INT32 | 0.1W | 2 | Positive:import from grid, Negative:export to grid |
| 31114 | Inverter temperature | RO | INT16 | 0.1℃ | 1 | [-400,1250] |
| 31115 | Reserve | RO | INT16 | - | 1 | - |
| 31116 | Reserve | RO | INT16 | - | 1 | - |
| 31117 | Reserve | RO | INT16 | - | 1 | - |
| 31118 | Power to user daily | RO | UINT32 | 0.1KWH | 2 | - |
| 31120 | Total power to user | RO | UINT32 | 0.1KWH | 2 | - |
| 31122 | Power to grid daily | RO | UINT32 | 0.1KWH | 2 | - |
| 31124 | Total power to grid | RO | UINT32 | 0.1KWH | 2 | - |
| 31126 | Reserved | RO | INT16 | - | 74 | - |
| 31200 | Charge/discharge power | RO | INT32 | 0.1W | 2 | Positive:charging, Negative:discharge |
| 31202 | Daily charge of battery | RO | UINT32 | 0.1KWH | 2 | - |
| 31204 | Cumulative charge of battery | RO | UINT32 | 0.1KWH | 2 | - |
| 31206 | Daily discharge capacity of battery | RO | UINT32 | 0.1KWH | 2 | - |
| 31208 | Cumulative discharge of battery | RO | UINT32 | 0.1KWH | 2 | - |
| 31210 | Maximum allowable charging power of battery | RO | UINT32 | 0.1W | 2 | - |
| 31212 | Maximum allowable discharge power of battery | RO | UINT32 | 0.1W | 2 | - |
| 31214 | Battery voltage | RO | INT16 | 0.1V | 1 | - |
| 31215 | Battery current | RO | INT32 | 0.1A | 2 | Positive:charging, Negative:discharge |
| 31217 | SOC | RO | UINT8 | - | 1 | [0,100] |
| 31218 | SOH | RO | UINT8 | - | 1 | [0,100] |
| 31219 | Battery capacity rating (FCC) | RO | UINT32 | AH | 2 | - |
| 31221 | Reserved | RO | UINT32 | AH | 2 | Reserved for Battery remaining capacity (RM) |
| 31223 | Battery environmental temperature | RO | INT16 | 0.1℃ | 1 | [-400,1250] |
| 31224 | Reserved | RO | INT16 | 0.1℃ | 1 | Reserved for Maximum battery temperature |
| 31225 | Cluster Sum | RO | UINT16 | 1 | 1 | - |
| 31226 | Single Cluster Module Number | RO | UINT16 | 1 | 1 | - |
| 31227 | Module Rated Voltage | RO | UINT16 | 0.1V | 1 | - |
| 31228 | Module Rated Cap | RO | UINT16 | 0.1AH | 1 | - |
| 31229 | Reserve | RO | UINT16 | - | 71 | - |
| 31300 | Battery Information 2 | RO | - | - | 100 | Refer to 31200~31299 |
| 31400 | Battery Information 3 | RO | - | - | 100 | Refer to 31200~31299 |
| 31500 | Battery Information 4 | RO | - | - | 100 | Refer to 31200~31299 |