HA add-on for Sungrow iSolarCloud with managed dashboards

GoSungrow: Home Assistant add-on for Sungrow iSolarCloud with managed dashboards

Hi everyone,

I wanted a Sungrow setup in Home Assistant that is easy to install, easy to keep running, and gives you a clean dashboard out of the box.

So I turned my fork into a proper Home Assistant add-on.

GitHub / custom repository:

Screenshots

Why this exists

This project is based on the original MickMake/GoSungrow work, and that reverse-engineering effort is the reason this add-on exists at all.

But in my own setup, the original project no longer worked reliably enough to be a practical Home Assistant solution. I wanted something that works cleanly with current Sungrow login behavior, Home Assistant OS, MQTT discovery, and a normal add-on workflow.

The goal of this fork is simple:

  • install it like a normal Home Assistant add-on

  • enter your iSolarCloud username and password

  • start it

  • get entities and dashboards automatically

What it does

GoSungrow:

  • logs in to Sungrow iSolarCloud

  • publishes entities to Home Assistant through MQTT discovery

  • creates a managed Overview dashboard with live energy flow and key daily charts

  • creates a managed Trends dashboard with deeper energy plots

  • works on aarch64 and amd64

Why it is easy to use

For most people, setup is basically:

  1. Install and start the Mosquitto broker add-on.

  2. Confirm the Home Assistant MQTT integration is working.

  3. Add this repository as a custom add-on repository.

  4. Install GoSungrow.

  5. Enter your gosungrow_user and gosungrow_password.

  6. Start the add-on.

That is it.

You do not need to manually configure API hosts, app keys, custom dashboard URLs, or a separate MQTT connection for a normal installation.

Requirements

  • Home Assistant with add-on support

  • working MQTT in Home Assistant

  • iSolarCloud account

  • outbound internet access from Home Assistant to iSolarCloud

Current focus of this fork

I intentionally focused this repository on one use case:

  • Home Assistant add-on first

  • clean install path

  • automatic dashboard setup

  • minimal settings for first-time users

Feedback welcome

If you have a Sungrow system and want a simpler way to get the data into Home Assistant, give it a try.

If something breaks for your particular inverter / plant / region combination, please open an issue with logs and details.

Credit

  • Original reverse engineering and codebase: MickMake

  • Home Assistant add-on packaging and maintenance of this fork: @roth-andreas

1 Like

Feedback, Add-ons have been renamed to Apps several months ago.

Thanks Andreas,
this works just great. You saved me from total despair.

Hi Andreas

Thank you for your work!

I’ve some troubles with the installation of the dashboard and getting data.

I’m located in Switzerland and part of a SCC with the neighbourhood.

The log says:


[20:39:49] INFO: Installing managed Home Assistant dashboard at gosungrow-flow.
Error: no Sungrow devices with a valid ps_key were discovered
Usage:
GoSungrow ha install-dashboard [ps_id …] [flags]
Aliases:
install-dashboard, dashboard-install
Flags: Use “GoSungrow help flags” for more info.
Additional help topics:
ERROR: no Sungrow devices with a valid ps_key were discovered
[20:39:54] WARNING: Managed dashboard installation failed; continuing without changing Home Assistant dashboards.
[20:39:54] INFO: Starting GoSungrow against MQTT broker core-mosquitto:1883.

2026/04/06 20:39:54 INFO: Connecting to MQTT HASSIO Service…

2026/04/06 20:39:54 INFO: Connecting to SunGrow…

2026/04/06 20:39:54 INFO: Found SunGrow 0 devices

2026/04/06 20:39:55 INFO: Caching Sungrow metadata…

2026/04/06 20:39:55 INFO: Cached 0 Sungrow data points…

No results found.

No results found.

Hi, thanks for sharing the logs.

Login works, but iSolarCloud returns no devices (Found SunGrow 0 devices).
Unfortunately, only the owner of the plant can access the data via the GoSungrow API, so member accounts won’t work.

If possible, please try with the plant owner account and restart the app. If it still shows 0 devices, send the new logs and I’ll check with you.

Hi. Nice effort. Any idea why it can’t find the custom card gosungrow-energy-flow-card-v2? The error is * Custom element not found: gosungrow-energy-flow-card-v2, even though the card exists in /config/www/gosungrow.
Thanks for you efforts. :slight_smile:

Thanks for reporting this. The card file was being copied, but Home Assistant could still fail to load/register the custom card resource, which causes Custom element not found.

I pushed a fix in 3.0.27 so the app now always registers the local module resource directly. Please update to 3.0.27, restart the app, and hard-refresh the Home Assistant frontend if needed.

Thanks, Roth,
All good now.
Love your work. :slight_smile:

Hi again:
Just wondering how I would add a second inverter to the Live Flow. Both show up in iSolarCloud, but only the smaller 5kW is found in the addon. I have 2 phases, one with a 10kW inverter and one with a 5kW inverter. Both SunGrow and, as I said, the outputs are combined in iSolarCloud. Any assistance would be greatly appreciated.
Thank you again. :slight_smile:

Thanks for sharing this. I haven’t yet considered multi-inverter setups, so this is really helpful.

I opened an issue for this here so we can track it properly:

I added better dashboard diagnostics with the newest update, so it should now be much easier to see which devices and sensors the app finds. Once you updated, it would be super helpful if you could paste the Dashboard diagnostics: block into the issue.

Update: Shift+Ctrl+R (i.e. forced cache refresh) fixed this. Weird in this day & age to need to do this.

Installed today and I get a similar error too. Says “Configuration error” and “Custom element does not exist: gosungrow-energy-flow-card-v2.”. Code has “type: custom:gosungrow-energy-flow-card-v2”. I don’t have a battery in case that’s a factor.

I guess writing in German is against some forum rules, so I’ll answer in English here. Feel free to open an issue on GitHub in German.

Could you please check which Home Assistant sensor contains those 7 kWh of grid import?

Please post the exact entity name, for example sensor.xyz.

It would also help to know which sensor the GoSungrow dashboard currently uses for “Grid Import”. You can find that by editing the dashboard card, or possibly in the GoSungrow add-on log under “Dashboard diagnostics”, especially in remapped refs or unresolved refs.

If you send me both entity names, I can check whether the dashboard points to the wrong sensor or whether GoSungrow does not yet auto-detect your grid import sensor correctly.

*hi, first of all, thank you for providing such a solution!

So far, I can‘t get it to connect correctly and revieve data from the sungrow cloud.

Attached is my log. Hope you can tell me what I‘m doing wrong.

(The Mosquitto MQTT is running)

Log:
12:02:37] ERROR: Got unexpected response from the API: Service not enabled

[12:02:37] ERROR: Failed to get services from Supervisor API

[12:02:37] ERROR: Got unexpected response from the API: Service not enabled

[12:02:37] ERROR: Failed to get services from Supervisor API

[12:02:38] ERROR: Got unexpected response from the API: Service not enabled

[12:02:38] ERROR: Failed to get services from Supervisor API

[12:02:38] ERROR: Got unexpected response from the API: Service not enabled

[12:02:38] ERROR: Failed to get services from Supervisor API

[12:02:38] FATAL: No MQTT broker configured. Set mqtt_host in the app config or install/start the Home Assistant Mosquitto broker app.

[12:02:38] INFO: Using Home Assistant MQTT service settings.

Using config file '/data/.GoSungrow/config.json'

[12:02:38] INFO: Refreshing iSolarCloud session.

Logging in again

[12:02:48] INFO: Installing managed Home Assistant dashboard at gosungrow-flow.

Managed GoSungrow custom card resource ready at /local/gosungrow/gosungrow-energy-flow-card-v2.js?v=f6cfdf15ae91. If Home Assistant still shows "Custom element not found", hard-refresh the browser or reload the Home Assistant frontend.

Error: dashboard "gosungrow-flow" was modified outside GoSungrow; set dashboard_force_update to true to replace it

Usage:

GoSungrow ha install-dashboard [ps_id ...] [flags]

Aliases:

install-dashboard, dashboard-install

Flags: Use "GoSungrow help flags" for more info.

Additional help topics:

ERROR: dashboard "gosungrow-flow" was modified outside GoSungrow; set dashboard_force_update to true to replace it

[12:02:55] WARNING: Managed dashboard Installing failed; continuing without changing Home Assistant dashboards.

[12:02:55] INFO: Starting GoSungrow against MQTT broker :1883.

2026/05/13 12:02:55 INFO: Connecting to MQTT HASSIO Service...

Error: HASSIO mqtt host not defined

Usage:

GoSungrow mqtt run [flags]

Aliases:

run,

Examples:

GoSungrow mqtt run

Flags: Use "GoSungrow help flags" for more info.

Additional help topics:

ERROR: HASSIO mqtt host not defined

s6-rc: info: service legacy-services: stopping

s6-rc: info: service legacy-services successfully stopped

s6-rc: info: service legacy-cont-init: stopping

s6-rc: info: service legacy-cont-init successfully stopped

s6-rc: info: service fix-attrs: stopping

s6-rc: info: service fix-attrs successfully stopped

s6-rc: warning: service s6rc-oneshot-runner is marked as essential, not stopping it

[12:02:55] INFO: Starting GoSungrow against MQTT broker :1883.

2026/05/13 12:02:55 INFO: Connecting to MQTT HASSIO Service...

Error: HASSIO mqtt host not defined

Usage:

GoSungrow mqtt run [flags]

Aliases:

run,

Examples:

GoSungrow mqtt run

Flags: Use "GoSungrow help flags" for more info.

Additional help topics:

ERROR: HASSIO mqtt host not defined

s6-rc: info: service legacy-services: stopping

s6-rc: info: service legacy-services successfully stopped

s6-rc: info: service legacy-cont-init: stopping

s6-rc: info: service legacy-cont-init successfully stopped

s6-rc: info: service fix-attrs: stopping

s6-rc: info: service fix-attrs successfully stopped

s6-rc: warning: service s6rc-oneshot-runner is marked as essential, not stopping it

Hi, thanks a lot for the report and for including the full log.

Please check that the MQTT integration is enabled in Home Assistant under Settings > Devices & services, not only that the Mosquitto add-on is running.

If you use an external MQTT broker, please set mqtt_host, mqtt_port, mqtt_username, and mqtt_password directly in the GoSungrow add-on configuration.

The dashboard warning is separate and should not block data collection.

2026/06/03 11:10:56 INFO: Connecting to MQTT HASSIO Service...

2026/06/03 11:10:56 INFO: Connecting to SunGrow...

2026/06/03 11:10:56 INFO: Found SunGrow 8 devices

2026/06/03 11:10:56 INFO: SunGrow device types: 1=6, 7=1, 9=1

2026/06/03 11:10:56 INFO: Realtime source selections: 1 plant: ps_id=5238227 ps_key=5238227_7_7_1 device_type=7 source=device-type-7

2026/06/03 11:10:56 INFO: Realtime source target: ps_id=5238227 ps_key=5238227_7_7_1 device_type=7 source=device-type-7

2026/06/03 11:10:56 INFO: Caching Sungrow metadata...

2026/06/03 11:10:56 INFO: Loaded MQTT endpoints: getPsDetail, getPsList, queryDeviceList, queryDeviceRealTimeDataByPsKeys

2026/06/03 11:10:57 INFO: Cached 2084 Sungrow data points...

2026/06/03 11:10:58 INFO: Token expired/invalid. Re-authenticating...

PsId: required

JSON request: {"ps_id":5238227}

2026/06/03 11:11:06 ERROR: strconv.Atoi: parsing "null": invalid syntax

Error: strconv.Atoi: parsing "null": invalid syntax

Usage:

GoSungrow mqtt run [flags]

Aliases:

run,

Examples:

GoSungrow mqtt run

Flags: Use "GoSungrow help flags" for more info.

Additional help topics:

ERROR: strconv.Atoi: parsing "null": invalid syntax

s6-rc: info: service legacy-services: stopping

s6-rc: info: service legacy-services successfully stopped

s6-rc: info: service legacy-cont-init: stopping

s6-rc: info: service legacy-cont-init successfully stopped

s6-rc: info: service fix-attrs: stopping

s6-rc: info: service fix-attrs successfully stopped

s6-rc: warning: service s6rc-oneshot-runner is marked as essential, not stopping it

There is a problem w authentification any ideas how to fix it ?

Absolutely loving it so far! Would you happen to know if there are controls available in the API? I have a Sungrow battery, and have to manually set modes for Self-consumption and Forced (dis)charge via their app. Would be great if I could automate that via HA. GO really isn't my forte, and I've no idea whether or not that's been reverse engineered already.

Thanks for the log. This looks like a GoSungrow bug triggered after token refresh, not a problem with your username or password.

I’ve pushed a fix for the PsId: required / strconv.Atoi: parsing "null" crash and bumped the app to 3.1.8. Please update to the new version. Let me know if it still happens after that.

That’s a really interesting idea, and I can definitely see a lot of people wanting this for battery automation in Home Assistant.
I’ve checked a bit more deeply: Sungrow’s newer API does appear to support battery/grid-control commands. The current app only exposes read-only monitoring data, so I’d need to add a new control layer with proper safety checks before HA can automate forced charge/discharge. I can see this being very useful, so I’ll add it to the roadmap and start looking at it soon.

Dashboard diagnostics:

  • context: Installing
  • HA states loaded: 714
  • GoSungrow states found: 1
  • dashboard entity refs found: 0
  • remapped refs: 0
  • unresolved refs: 0
  • battery detected: false
  • dashboard saved: yes (force update)
    Dashboard targets:
  • target[1]: plant="Breg - Berkel en Rodenrijs" device="Breg - Berkel en Rodenrijs" ps_id=5238227 ps_key=5238227_11_0_0 device_type=11 selection=preferred-device-type-11 view=5238227-11-0-0 gosungrow_states=1 virtual_states=0
    warning: selected non-ESS device_type=11; some dashboard metrics may be unavailable
    warning: multiple inverter-like devices found for this plant (7); aggregation may be needed
    warning: no target-specific gosungrow_virtual states were found
    example gosungrow states: sensor.gosungrow_service_gosungrow
    plant devices:
    • available ps_id=5238227 ps_key=5238227_17_1_1 device="1#unit" device_type=17 selection=fallback-first-valid-ps-key
    • selected ps_id=5238227 ps_key=5238227_11_0_0 device="Breg - Berkel en Rodenrijs" device_type=11 selection=preferred-device-type-11
    • available ps_id=5238227 ps_key=5238227_9_247_1 device="Communication Device1" device_type=9 selection=fallback-first-valid-ps-key
    • available ps_id=5238227 ps_key=5238227_3_1_0 device="Grid-connected point 1" device_type=3 selection=fallback-first-valid-ps-key
    • available ps_id=5238227 ps_key=5238227_1_1_1 device="Inverter1" device_type=1 selection=preferred-device-type-1
    • available ps_id=5238227 ps_key=5238227_1_2_1 device="Inverter2" device_type=1 selection=preferred-device-type-1
    • available ps_id=5238227 ps_key=5238227_1_3_1 device="Inverter3" device_type=1 selection=preferred-device-type-1
    • available ps_id=5238227 ps_key=5238227_1_8_1 device="Inverter4" device_type=1 selection=preferred-device-type-1
    • available ps_id=5238227 ps_key=5238227_1_5_1 device="Inverter5" device_type=1 selection=preferred-device-type-1
    • available ps_id=5238227 ps_key=5238227_7_7_1 device="Meter2" device_type=7 selection=preferred-device-type-7
    • available ps_id=5238227 ps_key=5238227_1_4_1 device="Vervangenomvormer4" device_type=1 selection=preferred-device-type-1
      Managed GoSungrow dashboard ready at /gosungrow-flow with 3 view(s).
      [06:58:12] INFO: Starting GoSungrow against MQTT broker core-mosquitto:1883.
      2026/06/09 06:58:12 INFO: Connecting to MQTT HASSIO Service...
      2026/06/09 06:58:12 INFO: Connecting to SunGrow...
      2026/06/09 06:58:12 INFO: Found SunGrow 8 devices
      2026/06/09 06:58:12 INFO: SunGrow device types: 1=6, 7=1, 9=1
      2026/06/09 06:58:12 INFO: Realtime source selections: 1 plant: ps_id=5238227 ps_key=5238227_7_7_1 device_type=7 source=device-type-7
      2026/06/09 06:58:12 INFO: Realtime source target: ps_id=5238227 ps_key=5238227_7_7_1 device_type=7 source=device-type-7
      2026/06/09 06:58:12 INFO: Option[loglevel] set to 'error'
      PsId: required
      JSON request: {"ps_id":5238227}
      2026/06/09 06:58:22 ERROR: strconv.Atoi: parsing "3109704_3109705": invalid syntax
      Error: strconv.Atoi: parsing "3109704_3109705": invalid syntax
      Usage:
      GoSungrow mqtt run [flags]
      Aliases:
      run,
      Examples:
      GoSungrow mqtt run
      Flags: Use "GoSungrow help flags" for more info.
      Additional help topics:
      ERROR: strconv.Atoi: parsing "3109704_3109705": invalid syntax
      s6-rc: info: service legacy-services: stopping
      s6-rc: info: service legacy-services successfully stopped
      s6-rc: info: service legacy-cont-init: stopping
      s6-rc: info: service legacy-cont-init successfully stopped
      s6-rc: info: service fix-attrs: stopping
      s6-rc: info: service fix-attrs successfully stopped
      s6-rc: warning: service s6rc-oneshot-runner is marked as essential, not stopping it
      Hi. It looks like there is still a problem with it parsing

Thanks, this exposed another parsing edge case. Your system returns a composite value like 3109704_3109705 where GoSungrow expected a number.

I’ve pushed a fix in 3.1.9 so this should no longer crash MQTT. Please update, restart the app, and let me know if anything still fails.