Growatt Modbus
0xAHA/Growatt_ModbusTCP · vv2.0.5
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.
| Entity | Shows up as | Note |
|---|---|---|
switch | Switch or outlet | |
binary_sensor | Sensor (motion, contact, leak, smoke…) | |
sensor | Sensor (temperature, humidity, air quality…) | |
button | Button (as a switch) | |
select | Mode 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
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| Growatt MIN 4600TL-XH | Works Local | Discharge power rate and battery controls exposed after firmware upgradeSaved copySummary 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 battery | Works Local | Wake APX Battery button added for VPP 2.01 firmwareSaved copySummary - 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-UP | Works Local | TOU writes fixed with atomic FC16 write; confirmed by usersSaved copySame 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 EW11 | Works Local | Works over RS485-to-TCP; socket warning is expectedSaved copy1. 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 hybrid | Works Local | Sensors mapped against real hardwareSaved copy49 - 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-XH | Partly works Local | DTC reads 0 giving misleading unsupported warning; owner says integration bugSaved 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-XH | Partly works Local | Used for dongle sniffing tests; SOC limit and on/off registers still being researchedSaved 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-30kW | Requested | PR adding support was closedSaved copyCloses #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 stars | 70 |
| Latest version | v2.0.5 (2026-10-22) |
| Set up in the UI | Yes |
| Maintainers | @0xAHA |
| License | MIT |
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.
Sources
- Documentation: https://github.com/0xAHA/Growatt_ModbusTCP
- Source code: https://github.com/0xAHA/Growatt_ModbusTCP
- Issues: https://github.com/0xAHA/Growatt_ModbusTCP/issues
- HACS: https://hacs.xyz