Read Your Growatt Inverter with QModMaster via Modbus
This is a first-read walkthrough for Growatt solar inverters using QModMaster, the free open-source (LGPLv3) Modbus master simulator from the upstream project. The settings below come from a community-tested setup — a Growatt SPH10000TL3 BH-UP read through a PUSR gateway, with function code 0x04 starting at address 1000 — not from a manual, and that is the point: these are values someone actually got data back with.
What You Need
- A Growatt inverter with an RS485/Modbus port. Community reports cover the SPH10000TL3 BH-UP and the MIN 4600 TL-XH; older TLS units have been reported as not answering Modbus at all.
- One connection path: a USB-to-RS485 adapter wired from your PC to the inverter, or a serial-to-TCP gateway on your LAN (community members used the PUSR USR-TCP232-410S and the USR-DR164).
- QModMaster from the upstream project, installed on a computer that can reach the adapter or gateway.
Wire It Up
- SPH series: use the RS485-1 port and set the port mode to VPP in the inverter settings — this is the configuration the community-tested setup used. (One SPH owner found the usable A/B pair inside the SYS COM connector on pins 3/4. Always power everything off before opening connectors.)
- Keep the RS485 run short and properly shielded; 9600 baud is the forgiving starting point — higher baud rates get picky about cable quality fast.
- Gateway path: set the PUSR to working mode TCP Server / ModbusTCP and note the IP address your router assigns it (pin it with a DHCP reservation so it doesn’t move).
QModMaster Settings: The Verified First Read
These are the exact settings a community member used to verify the link before writing any Home Assistant config (“Verify the connection with qModMaster… read with function code 0x04 address 1000 decimal and try to read”):
- 1. Options → Modbus TCP. IP address = your gateway’s IP, port = 502.
- 2. Set Unit ID = 1.
- 3. Press Connect.
- 4. Function Code = Read Input Registers (0x04).
- 5. Start Address = 1000 (decimal). Number of Registers: start with 10 and expand once it works.
- 6. Press Scan. If values come back, you are reading the inverter. If you get timeouts instead, see the no-response fix guide.
Community-Tested Registers (SPH10000TL3 BH-UP)
Once the first read works, these addresses were verified in a working Home Assistant configuration against the same inverter — all read with function code 04, slave 1. Probe each one in QModMaster before trusting it:
| Address (FC04) | Value | Type | Scale |
|---|---|---|---|
1 | Total PV power | uint32 | ×0.1 → W |
3 | PV1 voltage | uint16 | ×0.1 → V |
5 | PV1 power | uint32 | ×0.1 → W |
7 | PV2 voltage | uint16 | ×0.1 → V |
9 | PV2 power | uint32 | ×0.1 → W |
1009 | Battery discharging power | uint32 | ×0.1 → W |
1011 | Battery charging power | uint32 | ×0.1 → W |
1014 | Battery SOC | uint16 | % (no scale) |
1021 | Grid import power | uint32 | ×0.1 → W |
1029 | Grid export power | uint32 | ×0.1 → W |
1037 | Local load power | uint32 | ×0.1 → W |
Again: these held true for an SPH10000TL3 BH-UP. MIC, MIN, and TL-X series may use different maps — your model’s manual is the authority, QModMaster is the lie detector.
Carry It Into Home Assistant
Once an address returns sane data in QModMaster, copy it straight into your Modbus config: type: tcp, host: your gateway IP, port: 502, slave: 1, input_type: input, address: the verified address, data_type per the table above. This “QModMaster first” method — the bisection framework plus the complete field-to-YAML mapping — is documented on the hub page: Test Modbus with QModMaster Before Home Assistant.
Gotchas
- The inverter has to be producing — expect data to flow when the sun is shining, not at midnight.
- On SPH models the RS485 port must be in VPP mode (not Battery) for Modbus to answer.
- A MIN 4600 TL-XH was reported working with a sub-€2 USB-to-RS485 adapter — you don’t need expensive hardware for a first read.
- If QModMaster times out too, the problem is the link, not your config: check A/B wiring, gateway mode (TCP Server / ModbusTCP), and Unit ID 1.
FAQ
Which Growatt models does this work for?
Community reports confirm the SPH10000TL3 BH-UP (via PUSR gateway) and the MIN 4600 TL-XH (via USB-to-RS485 adapter). Older TLS units have been reported as not answering Modbus at all. Register maps differ by series — check your model’s manual.
Direct USB adapter or TCP gateway?
Both work. A cheap USB-to-RS485 adapter is enough for a first read from a PC; a PUSR gateway puts the inverter on your LAN so Home Assistant can poll it continuously.
What serial parameters should I use for a direct RTU connection?
The community-tested path used a TCP gateway, so baud rate never entered the picture. For direct RS485, start at 9600 8N1 and match whatever your inverter’s port is configured for — your model’s manual is the authority here.
QModMaster connects but reads return timeouts. Now what?
Work the physical layer: swap A/B, confirm the gateway is in TCP Server / ModbusTCP mode, confirm Unit ID 1, and on SPH models confirm the port is in VPP mode. The timeout fix guide walks through this systematically.
