Test Sungrow Inverter Modbus with QModMaster
If you’re wiring a Sungrow SH-series inverter into Home Assistant and the sensors come up empty, don’t start by rewriting your YAML. The troubleshooting guide of the popular Sungrow Modbus integration (mkaiser) recommends the same first step: check whether the Modbus connection works at all, using QModMaster — their Check #3. This page walks you through that pre-check so you can tell a hardware problem from a configuration problem in five minutes.
Step 0: Ping the inverter before you touch Modbus
Before opening QModMaster, confirm the inverter is actually on your network. Find its IP in your router’s DHCP client list (or set a DHCP reservation so it doesn’t move), then ping it:
ping 192.168.1.50 # replace with your inverter's IP
If the ping fails, stop — no Modbus client can reach a host the PC can’t see. Fix the network first (cable, switch, Wi-Fi credentials on the dongle), then come back.
Step 1: Use the internal LAN port, not the WiNet-S dongle
This is the single most common Sungrow gotcha. Recent Sungrow inverters ship with a WiNet-S dongle whose main job is talking to Sungrow’s iSolarCloud servers — its local Modbus access is a low-priority side feature, and some registers available on the internal LAN port simply aren’t exposed through it. The integration’s troubleshooting guide (Check #1) strongly recommends the inverter’s internal LAN port and treats the WiNet-S as a usual suspect for flaky Modbus. Connect the cable directly to the internal port, then make sure the inverter picks up an IP — some units only get an address on a cold boot, so a full power cycle (AC off, wait, battery/DC off, wait, then back on) can be necessary.
Step 2: Set the QModMaster TCP parameters
In QModMaster, go to Options → Modbus TCP and set the TCP options, then fill in these connection parameters. Each one must match your own setup — the integration’s guide maps them directly to your Home Assistant secrets.yaml values:
| QModMaster field | Value to use | Where it comes from |
|---|---|---|
| Slave IP | Your inverter’s LAN IP | Your router / inverter display |
| TCP Port | 502 | Standard Modbus TCP port |
| Unit ID | Your Modbus slave number | Your inverter config (e.g. sungrow_modbus_slave in secrets.yaml) |
Note: 502 is the standard Modbus TCP port. If your setup routes Modbus through a gateway or bridge on a different port, use that port instead — always confirm against your own device manual and configuration.
Step 3: Read a register and sanity-check the value
With the TCP settings in place, request a read (function code 0x04, Read Input Registers) of a register your inverter actually supports and compare the result with what the inverter display shows. A sensible number means the link is healthy and the problem is in your Home Assistant configuration (entity mapping, scan interval, wrong Unit ID there). A timeout or an exception response means the problem is below Home Assistant — go back to Steps 0–2.
Two Sungrow-specific notes from the integration’s guide: users with single-phase inverters (SH3.RS style) report that only a subset of the documented registers answer — register availability is decided by Sungrow’s firmware, and no client-side tweak can unlock more. And if nothing answers at all after a firmware update, power-cycle the inverter as described in Step 1.
Do you need an adapter at all?
This pre-check runs over your LAN (Modbus TCP) — no serial hardware needed. If instead you plan to reach the inverter over its RS485 terminals, you’ll need a USB-to-RS485 adapter on the PC side:
USB-to-RS485 adapter (Amazon) — grab a reliable FTDI-based adapter before you start debugging; flaky adapters cause half the “mystery timeouts” in Modbus troubleshooting.
FAQ
QModMaster times out but the inverter pings fine. What now?
Check three things: you’re on the internal LAN port (not WiNet-S), the Unit ID matches your inverter’s slave number, and the inverter actually has an IP (cold-boot it if it was only recently plugged in). A ping only proves the network stack is up, not that Modbus TCP is listening.
I can read some registers but not others. Is my setup broken?
Probably not. Sungrow’s firmware decides which registers exist — single-phase models expose fewer than three-phase ones. Match your expectations to your model’s register table, not the other way round.
QModMaster reads fine, but Home Assistant shows nothing. What’s the difference?
Then the link is healthy and the bug is in your HA config: wrong Unit ID there, wrong register addresses, or a scan interval the inverter can’t keep up with. Fix it in the YAML, not on the wire.
Related Guides
Connection parameters here are adapted from the mkaiser Sungrow-SHx Modbus Home Assistant integration troubleshooting doc (Check #3). Exact Unit IDs and register availability vary by model and firmware — always confirm against your inverter’s manual and your own configuration. qmodmaster.com is an independent community resource for the upstream QModMaster project (LGPLv3) and is not affiliated with Sungrow or the integration’s authors.
