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.

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.

By understanding the native Growatt RS485 protocol, engineers can establish a stable, local data pipeline and bypass the cloud completely.

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

🔓 Open-Source Engineering Resource

Growatt RS485 Pinout & Register Map

License: Automation engineers and DIYers are free to bookmark, print, or share this reference on technical forums (please attribute this guide as the source).

Part A: 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. For stable industrial deployment, always use shielded twisted pair (STP) cables and install a 120Ω termination resistor at the last inverter on the bus.

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)

🔌 Quick Wiring Reference (Growatt -> Valtoris)

Growatt RJ45 Pin 3
Pin 4
Pin 5
——- Data+ ——->

——- Data- ——->

——- GND ——->
Valtoris Gateway T+ (RS485 A)
T- (RS485 B)
GND

Part B: Modbus Register Map (Key Metrics)

To successfully extract telemetry, you must query the correct Growatt Modbus registers.

Configure your serial polling device as follows: Baud Rate: 9600, Data Bits: 8, Stop Bits: 1, Parity: None. The default Slave ID for Growatt is usually 1. Your solar metrics can be extracted with the following Input Registers (Function Code 0x04):

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 CDAB order) to reconstruct the correct value.

Pro Tip: Dealing with custom Python scripts or PLC byte-swapping logic can take hours of debugging. If you want to skip the coding, the Valtoris Edge Gateway automatically parses U32 registers into clean MQTT JSON out-of-the-box.

Part C: Control Commands & Advanced Setup

For advanced SCADA control (e.g., curtailment, battery scheduling), you must write to Holding Registers (Function Code 0x06 for Single Write, 0x10 for Multiple). Note: The exact holding registers vary by model. Below is a generic example for Grid-Tied models.

Register (Dec)Data TypeDescriptionWrite Value Example
00000U16Inverter Switch (ON/OFF)0 = Turn Off, 1 = Turn On
00003U16Active Power Rate Limit (%)0-100 (e.g., 50 = Limit output to 50%)

Field Deployment Notes: Cascading & Compatibility

  • RS485 Daisy-Chaining: To connect multiple inverters to a single Valtoris Gateway, wire them in parallel (A+ to A+, B- to B-). You must manually assign a unique Slave ID (1, 2, 3…) to each inverter via its built-in LCD menu.
  • Protocol Compatibility (SPF/SPH vs MIN/MAX): The Input Registers listed in Part B apply primarily to Grid-Tied series (MIN/MAC/MAX). Hybrid/Off-Grid series (like SPF and SPH) use a completely different register map to accommodate Battery SOC, Charge/Discharge times, and Off-grid loads. Always consult the exact Modbus protocol PDF for your specific series.

4. Integration Architecture: Two Paths to Home Assistant

To get raw hex frames out of a multi-register layout, you can choose between our native MQTT JSON engine or leveraging community-built HACS integrations via Modbus TCP.

🏢 Path A: Native MQTT JSON (Valtoris Recommended)

Commercial Scale

Stop wasting hours debugging PyModbus scripts or YAML byte-swapping errors. For maximum stability, let a dedicated hardware gateway handle the polling natively. Paste the JSON mapping into the Valtoris Web UI, and the gateway automatically handles the U32 byte math, pushing clean JSON payloads directly to your local or cloud MQTT broker.

{ “device_id”: “Growatt_01”, “slave_id”: 1, “function_code”: 4, “registers”: [ { “address”: 30001, “type”: “U16”, “name”: “inverter_status” }, { “address”: 30002, “type”: “U32_CDAB”, “name”: “pv_power_watts”, “multiplier”: 0.1 }, { “address”: 30004, “type”: “U16”, “name”: “pv1_voltage”, “multiplier”: 0.1 }, { “address”: 30036, “type”: “U32_CDAB”, “name”: “grid_active_power_watts”, “multiplier”: 0.1 } ] }
  • Zero Scripting: Select U32 in the Web UI. The gateway recombines the bytes automatically and applies the 0.1 scaling factor.
  • Cloud Ready JSON: Converts Modbus raw hex into clean JSON payloads pushed directly to your MQTT broker via Ethernet or 4G LTE.
  • Industrial Reliability: Hardware watchdogs and DIN-rail mounting ensure continuous 24/7 telemetry streams.

⚙️ Path B: Modbus TCP via HACS Plugin

Community Driven

If you prefer using existing Home Assistant Custom Components (HACS), you can set the Valtoris Gateway to Modbus TCP Server mode (Port 502). The gateway acts as a transparent bridge, allowing HA plugins to poll the inverter over your local network.

📺 Community Tutorial: Growatt SPF5000ES Setup

Watch how to wire the RJ45 port and configure the Modbus TCP integration in Home Assistant.

💻 Code Snippet: configuration.yaml

Copy this block into your Home Assistant config to read the U32 Active Power correctly using the Valtoris Gateway.

modbus:
  - name: "valtoris_growatt_hub"
    type: tcp
    host: 192.168.1.200
    port: 502
    sensors:
      - name: "Growatt PV Power"
        address: 30002
        input_type: input
        count: 2
        data_type: int32
        swap: word
        scale: 0.1
        precision: 1
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement

5. Frequently Asked Questions (Field Troubleshooting)

Common issues encountered during field deployment and how to resolve them.

Can I use a generic USB-to-RS485 adapter instead of an industrial gateway?
Yes, for bench testing. However, cheap adapters (often using cloned CH340 chips) lack galvanic isolation. Inverters handle high voltages and ground loops are common. If you use a non-isolated USB dongle, a ground fault could fry your Raspberry Pi or PC. For permanent setups, always use an isolated RS485 interface.
I am getting Modbus CRC errors or timeout dropping frames. What is wrong?
This is almost always caused by one of three issues:
  • Polling rate is too aggressive: Growatt’s internal Modbus processor is relatively slow. Do not poll faster than once every 1 to 2 seconds.
  • Missing Ground: You only connected Pins 3 and 4. You must connect Pin 5 (GND) to equalize the potential between the inverter and your master device.
  • No Termination Resistor: If your cable run exceeds 50 meters, or if you are daisy-chaining multiple inverters, you need to install a 120-ohm termination resistor at the far end of the RS485 bus.
Can I keep the official Growatt ShineWiFi dongle plugged in while polling locally via RS485?
On most Growatt models (MIN, MAX, SPF), the answer is No. The RJ45/USB port acts as a single UART serial interface. If you plug in a third-party RS485 cable, you must remove the official Shine dongle, meaning you will lose connection to the Growatt ShinePhone Cloud.
Does this Modbus register map apply to Growatt SPF (Off-Grid) models?
Only partially. While the physical pinout (Pins 3, 4, 5) remains identical across almost the entire Growatt lineup, the SPF/SPH hybrid and off-grid inverters use a vastly different register map to account for battery SOC, grid charging limits, and generator dry-contacts. Always verify against the specific protocol manual for your series.

Heading to the inverter site? Take the Cheat Sheet.

Save the official Application Note (PDF) to your tablet for offline access to the wiring diagrams and U32 Hex payload analysis.

Download Free PDF

Deploying multiple solar sites?

End flaky usb connections and custom python scripts. Securely tunnel Modbus data from your Growatt inverters to your cloud MQTT broker with a Valtoris Edge Gateway over Ethernet or 4G LTE.