Home / Support / Integration Hub / Growatt Guide
Protocol Deep Dive

How to Read Growatt Inverter Data Locally (RS485 to MQTT)

No 5-minute cloud delays like the official ShineWiFi dongle. Here is the full engineering guide on how to poll Growatt Modbus RTU data locally for real-time SCADA or home automation dashboards.

Heading to the inverter site?

Download the official Application Note (PDF) for offline wiring diagrams and U32 Hex payload analysis.

Download PDF

1. The Challenge with Growatt Inverters

Growatt solar inverters are super popular and reliable in hardware. But their default data logging is entirely dependent on external cloud servers. If you’re looking at industrial SCADA systems or more sophisticated-energy dashboards, you want real-time, local, subsecond access to the inverter’s metrics without opening your OT network to the internet.

Fortunately, almost all Growatt models have a standard RS485 physical layer that talks Modbus RTU on the ShineWiFi dongle port.

2. Universal RS485 Pinout

Depending on your inverter model (MIN, MAC or MAX series) the COM port is either a standard RJ45 jack or a multi-pin circular connector. You only need three wires to connect your RS485 Master (USB adapter, PLC or Edge Gateway) to create a serial link.

Growatt COM Port (RJ45 / SYS)RS485 Master TerminalSignal Function
Pin 3 (or labeled RS485A)A+ (Data+)Positive Data Line
Pin 4 (or labeled RS485B)B- (Data-)Negative Data Line
Pin 5 (GND)GNDSignal Ground (Crucial for preventing CRC noise)

3. Growatt Modbus Register Map (Key Metrics)

Configure your serial polling device as follows: Baud Rate: 9600, Data Bits: 8, Stop Bits: 1, Parity: None. Growatt’s default Slave ID is usually 1. Use the following Input Registers (Function Code 0x04) to extract your solar metrics:

Register (Dec)Data TypeDescriptionMultiplier / Unit
30001U16Inverter Status (0=Wait, 1=Normal, 3=Fault)N/A
30002U32Input Power (PV Power)0.1 W
30004U16PV1 Voltage0.1 V
30036U32Current Active Power (Grid Output)0.1 W
30054U32Total Energy Generated (Lifetime)0.1 kWh

The 32-Bit Integer (U32) Trap

Notice that Power and Energy are 32-bit integer values (U32). Modbus RTU is inherently a 16-bit protocol. This means a single metric spans across two consecutive registers. If you just read them sequentially without decoding, you will get garbage numbers. You must parse them using proper byte swapping (usually Big-Endian or CDAB order) to reconstruct the correct value.

4. Integration Architecture: DIY Coding vs. Edge Gateway

Retrieving raw hex frames from a multi-register layout requires an architecture capable of translating 32-bit data types without losing timing accuracy.

Option A: Software Parsing (Python Scripts)

If deploying a generic USB-RS485 dongle on a Raspberry Pi, your software loop must explicitly cast the two 16-bit registers into a single U32 value.

Python U32 Decode Example:
import struct

# Growatt returns High Word first (Big-Endian)
high_word = 0x0001
low_word = 0x86A0

# Pack as two unsigned shorts (H),
# unpack as a 32-bit unsigned int (I)
raw_val = struct.unpack(‘>I’, struct.pack(‘>HH’, high_word, low_word))[0]

power_watts = raw_val * 0.1
print(f”Grid Power: {power_watts} W”)

Option B: Hardware Normalization (Edge Gateway)

For commercial scale, deploying a dedicated protocol bridge removes the scripting and OS-level maintenance layer.

  • Native 4-Byte Support: The Valtoris gateway firmware natively processes the 4-Byte (U32) recombination and applies the 0.1 scaling factor automatically.
  • Cloud Ready JSON: The hardware automatically converts the Modbus raw hex into clean, structured JSON payloads and pushes them directly to your MQTT broker.
  • Reliability: Hardware watchdogs ensure continuous 24/7 telemetry streams without script maintenance.

Deploying multiple solar sites?

Stop supporting custom python scripts and flaky USB connections. Securely tunnel Modbus data from your Growatt inverters directly into your cloud MQTT broker over Ethernet or 4G LTE using a Valtoris Edge Gateway.

View Edge Gateways or visit valtoris.com