Skip to content
Home Assistant TestFlight
Energy

Growatt Modbus

0xAHA/Growatt_ModbusTCP · vv2.0.5

HACSLocal polling

Growatt Solar Inverter Modbus TCP integration for Home Assistant

In Apple Home through HomeKit Bridge

What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.

EntityShows up asNote
switchSwitch or outlet
binary_sensorSensor (motion, contact, leak, smoke…)
sensorSensor (temperature, humidity, air quality…)
buttonButton (as a switch)
selectMode picker (as switches)

What people report

Local Modbus integration for Growatt inverters with auto-detected models. The ShineWiFi cloud dongle can overwrite writes; atomic multi-register writes fixed time-of-use control on SPH models.

  • Works5
  • Partly works2
  • Requested1
DeviceIn Home AssistantIn Apple HomeWhat they saidSource
Growatt MIN 4600TL-XHWorks LocalDischarge power rate and battery controls exposed after firmware upgrade
Saved copy
Summary Expose the remaining battery settings confirmed on a Growatt MIN 4600TL-XH (DTC 5100) after Growatt upgraded its firmware from ALBA130101 to ALBA18010122: - Discharge Power Rate, holding register 3066, 0–100% - On-Grid Discharge Stop SOC, existing register 3067, clearer MIN-specific display name - Off-Grid Discharge Stop SOC, VPP V2.01 register 30475, 10–100% ## Hardware evidence On the updated inverter, direct local reads returned: - 3066 = 0, matching ShinePhone “Discharge Power” - 3067 = 20, matching “On-grid discharge stop SOC” - 30475 = 16, while ShinePhone still showed 10 …

Excerpt saved from GitHub on 2026-10-23.

PR #460 · 2026-09
Growatt MIN TL-XH with APX batteryWorks LocalWake APX Battery button added for VPP 2.01 firmware
Saved copy
Summary - add a disabled-by-default `Wake APX Battery` button for `MIN_TL_XH_3000_10000_V201` - use the VPP 2.01 value accepted by this firmware (`30410 = 1`) instead of the VPP 2.03-only value `2` - briefly deselect and then restore an already-active VPP direct branch instead of refusing the wake request - keep the pulse bounded to 5% for one minute / 12 seconds and restore authority, selector and parameters in a safe order ## Hardware validation Tested on a Growatt MIN 4600TL-XH, DTC 5100, APX S0. - baseline: `30100 = 1`, `30407..30410 = [1, 0, 65436, 1]` - writing `30410 = 2` read back as …

Excerpt saved from GitHub on 2026-10-23.

PR #456 · 2026-09
Growatt SPH 3600TL BL-UPWorks LocalTOU writes fixed with atomic FC16 write; confirmed by users
Saved copy
Same inverter and symptom here (SPH 3600TL BL-UP), and I can confirm your hypothesis #1, the firmware requires an atomic multi-register (FC16) write for a TOU period's time window, with a reproducible test, plus narrow down *which* writes are affected and rule out the cloud-override and EEPROM-dropout theories. Setup: SPH 3600TL BL-UP, profile `sph_3000_6000_v201` (DTC 30000 = 3502, protocol 30099 = 201), ShineWiLan-X2 datalogger (fw 7.6.1.3, TCP 502), integration `0.9.8`. On V2.01 the AC-charge periods are `[start, end, enable]` triples at holding 1100-1102 / 1103-1105 / 1106-1108 …

Excerpt saved from GitHub on 2026-10-23.

Issue #333 · 2026-06
Growatt WIT 15000TL3-HU via Elfin EW11Works LocalWorks over RS485-to-TCP; socket warning is expected
Saved copy
1. Integration Version `0.9.3` ## 2. Inverter Model and Profile - Inverter model: WIT 15000TL3-HU (WIT 15K) - Profile selected: WIT (4-15kW) - Phase: Three-phase - Battery: Yes, 2× LiFePO4 16S packs, JK BMS (~32 kWh total) ## 3. Connection Type - TCP via serial-to-TCP adapter - Adapter model: Elfin EW11 (RS485 → WiFi/TCP), firmware 1.44.1 - ShineWiFi dongle physically disconnected; cloud remote control disabled ## 4. What Happened vs. What You Expected What I was doing: Running normal scheduled automations that write to the VPP control registers (30100 / 30407 / 30408 / 30409), e.g. …

Excerpt saved from GitHub on 2026-10-23.

Issue #327 · 2026-06
Growatt WIT 4-15K-HU hybridWorks LocalSensors mapped against real hardware
Saved copy
49 - Main changes are in wit.py - mapped some missing basic sensors by checking against real hardware, so all the useful basic sensors are available and working; - added handling of two more ranges to growatt_modbus.py (has_875_range and has_8000_range); - Added missing string & translation for WIT inverters; - Added 8000-8124 range scanning to diagnostic.py.

Excerpt saved from GitHub on 2026-10-23.

PR #50 · 2025-11
Growatt MIN 5000TL-XHPartly works LocalDTC reads 0 giving misleading unsupported warning; owner says integration bug
Saved copy
… code. The check then treated that zero as if it were a device type code, failed to find it, and announced your model as unsupported. For the record, the MIN 5000TL-XH is supported and its code is known: DTC 5100, confirmed on

Excerpt saved from GitHub on 2026-10-23.

Issue #449 · 2026-09
Growatt MIN 6000TL-XHPartly works LocalUsed for dongle sniffing tests; SOC limit and on/off registers still being researched
Saved copy
… moment, but I did a read from the portal: AI reported result: # Shine inverter on/off read capture Date: 2026-09-27 Evidence status: `PROVEN_LIVE` Hardware: Growatt MIN 6000TL-XH, current firmware profile `ALBA18010122`, ShineWiLan-X2 firmware `7.6.2.5` Transport: PiITM `cache+shine-predictive`, Shine JSONL stream on TCP port 5700 ## Scope The Growatt portal was used to read the single Set Inverter On/Off setting. The purpose was to determine whether Shine requests one register

Excerpt saved from GitHub on 2026-10-23.

Issue #458 · 2026-09
Growatt MID Hybrid 11-30kWRequestedPR adding support was closed
Saved copy
Closes #313 Assisted-by: gemini-cli using Gemini 2.5

Excerpt saved from GitHub on 2026-10-23.

PR #314 · 2026-05

Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.

How it connects

Local polling

Talks to the device on your network, asking it for updates every so often.

Details

Installs (analytics)358 (0.05%)
GitHub stars70
Latest versionv2.0.5 (2026-10-22)
Set up in the UIYes
Maintainers@0xAHA
LicenseMIT

In ReReHome

Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.

Bridges get their own settings page listing the accessories behind them.