[Custom Integration] Growatt SPH Hybrid Inverter (Native Modbus Integration)

Hi everyone,

I've been running a Growatt SPH 4600 hybrid inverter for a while now and wanted a clean, native Home Assistant integration instead of relying on the built-in modbus: YAML platform with hand-rolled register maps.

I'm happy to share my native Home Assistant Custom Integration for Growatt SPH hybrid inverters. It talks directly via Modbus — either serial RTU (RS485/USB) or Modbus TCP (RS485-to-Ethernet gateways) — so there's no cloud, no ShineServer account, and no polling delay.

Development Background: This integration was built from the ground up against the official Growatt Modbus RTU protocol documents (V1.20 and V3.05), cross-checked against real hardware since Growatt's own documentation is only partially accurate. A significant part of the architecture — the profile system, efficient register-block polling, and async structure.

Key Features:

  • 100% Local: Serial RTU or Modbus TCP, no cloud, no ShineServer.
  • Automatic Inverter Detection: Device type and phase/tracker count are read from the inverter itself, so the correct profile (1-phase SPH vs. 3-phase SPH TL3) is selected automatically.
  • Multiple Inverters: One config entry per inverter; several slave IDs can safely share the same RS485 bus or TCP gateway.
  • Efficient Polling: Registers are read in blocks (6 transactions per cycle instead of ~90 single reads).
  • Comprehensive Monitoring: 65+ entities per inverter — PV, grid (per-phase on TL3), battery, EPS, energy counters, temperatures, and fault registers.
  • Writable Settings: Power on/off, priority (Load/Battery/Grid), minimum discharge SoC, and maximum active power.
  • Multilingual: Full English and German UI.
  • HACS Ready: Easy to install via HACS as a custom repository.

GitHub Repository: GitHub - Lu-Fi/ha-growatt-modbus

The register maps live in a single registers.py, so adding another Growatt series (MIN, MOD, SPA, MAX, ...) should mostly be a matter of defining a new device profile. I've only been able to test this against my own SPH 4600; if you have an SPH TL3 (3-phase) unit or a different Growatt series.

Any feedback, suggestions, or PRs are highly appreciated!

Best regards, Lu-Fi