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.

⚠️ Model disclaimer: register maps differ between Growatt series (MIC, MIN, TL-X, SPH…). The parameters on this page were verified on an SPH10000TL3 BH-UP; always confirm against your own model’s documentation before trusting an address.
☀️ Solar DIY purchase #1: if you don’t have a way to reach the RS485 bus yet, a USB-to-RS485 adapter is where every Growatt Modbus project starts — get one here.

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)ValueTypeScale
1Total PV poweruint32×0.1 → W
3PV1 voltageuint16×0.1 → V
5PV1 poweruint32×0.1 → W
7PV2 voltageuint16×0.1 → V
9PV2 poweruint32×0.1 → W
1009Battery discharging poweruint32×0.1 → W
1011Battery charging poweruint32×0.1 → W
1014Battery SOCuint16% (no scale)
1021Grid import poweruint32×0.1 → W
1029Grid export poweruint32×0.1 → W
1037Local load poweruint32×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.

Related Guides

Similar Posts