How to Read Growatt Inverter Data Locally (RS485 to MQTT)
Tired of the 5-minute delays and cloud dependency of the official ShineWiFi dongle? Here is the complete guide to polling Growatt Modbus RTU data locally using a Valtoris edge gateway.
1. The Challenge with Growatt Inverters
Growatt solar inverters are incredibly popular, but their default data logging relies entirely on external cloud servers. For industrial SCADA systems, Home Assistant users, or local energy dashboards, you need real-time, local access to the inverter’s metrics without exposing your network to the internet.
Fortunately, almost all Growatt models have a hidden RS485 port (Sys COM) that speaks standard Modbus RTU.
2. Hardware Connection (Wiring Diagram)
You will need a reliable serial-to-ethernet/cellular gateway. Connect the COM port on the bottom of your Growatt inverter to the serial terminals on your Valtoris VT-DTU500 gateway.
| Growatt COM Port (RJ45 or Terminal) | Valtoris VT-DTU500 Terminal | Signal Function |
|---|---|---|
| Pin 3 (or RS485A) | A+ (Data+) | Positive Data Line |
| Pin 4 (or RS485B) | B- (Data-) | Negative Data Line |
| Pin 5 (GND) | GND | Signal Ground (Recommended to prevent noise) |
💡 Pro Tip: Skip the Python & YAML Coding
Reading Modbus RTU via a cheap USB-RS485 stick often leads to bus collisions and requires writing complex Python scripts to decode 32-bit floats.
By using the Valtoris VT-DTU500 Edge Gateway, you can enable its native “Storage Modbus to JSON” feature. The gateway will autonomously poll the registers below and publish clean, pre-formatted JSON directly to your MQTT broker. Zero coding required.
View VT-DTU500 Gateway3. Growatt Modbus Register Map (Key Metrics)
Set your Valtoris gateway to Baud Rate: 9600, Data Bits: 8, Stop Bits: 1, Parity: None. Growatt’s default Slave ID is usually 1. Use the following Input Registers (Read code 0x04) to extract your solar metrics:
| Register (Dec) | Data Type | Description | Multiplier / Unit |
|---|---|---|---|
| 30001 | U16 | Inverter Status (0=Wait, 1=Normal, 3=Fault) | N/A |
| 30002 | U32 | Input Power (PV Power) | 0.1 W |
| 30004 | U16 | PV1 Voltage | 0.1 V |
| 30036 | U32 | Current Active Power (Output) | 0.1 W |
| 30054 | U32 | Total Energy Generated (Lifetime) | 0.1 kWh |
* Note: Because Power and Energy are 32-bit values (U32), they span across two 16-bit registers. Configure your gateway’s byte order to CDAB or ABCD depending on your specific firmware version.
4. Troubleshooting Common RS485 & Modbus Errors
If your Valtoris VT-DTU500 or local MQTT broker is not receiving clean data from the Growatt inverter, check the following common Modbus RTU communication issues:
Timeout Error / No Response
This means the gateway is sending the Modbus read request, but the inverter is completely ignoring it.
- A/B Wires Reversed: RS485 standards often vary between manufacturers. If you are receiving zero data, simply swap the A+ and B- wires at the gateway terminal. It will not damage the hardware.
- Incorrect Slave ID: Most Growatt inverters default to Modbus Slave ID
1. Ensure your edge gateway is polling ID 1, not 0 or 255. - Baud Rate Mismatch: Double-check that both the inverter’s LCD settings and the gateway are locked to
9600 bps(or19200 bpson some newer MAX commercial models).
Checksum Failed / Garbage Values
If you see random connection drops or absurdly high power readings, you are dealing with electrical noise or float decoding issues.
- Float Byte Swapping: Growatt 32-bit registers span across two 16-bit registers. If the reading looks like garbage, toggle the byte order in your Valtoris gateway from
Big-Endian (ABCD)toLittle-Endian Byte Swap (CDAB). - Missing Signal Ground: RS485 is a differential signal, but over long distances, a missing Ground (Pin 5) can cause voltage floating and CRC checksum failures. Always connect the GND wire.
REQUEST A QUOTE
Tell us about your project requirements and get volume pricing.
