[APP][Pro] Huawei FusionSolar Manager

Hi everyone :wave:

I’m excited to share my Homey app for Huawei FusionSolar solar energy systems. If you own a Huawei SUN2000 inverter, LUNA2000 battery, DTSU666/EMMA power meter or an EMMA-based Smart Charger — this app is for you.


:sun_with_face: What is this app?

The Huawei FusionSolar Manager connects your solar installation to Homey — with three different connection methods depending on your setup:

  • Modbus TCP — direct local communication with inverter, battery, meter and charger (no cloud, no internet required –> preferred method!)

  • Kiosk — read-only plant overview via the public FusionSolar Kiosk URL (cloud, no credentials required)

  • OpenAPI — full device data via the FusionSolar OpenAPI (cloud, requires account credentials)

:backhand_index_pointing_right: Install from the Homey App Store

Test Version: Huawei FusionSolar Manager | TEST

Live Version: Huawei FusionSolar Manager | LIVE


:electric_plug: Supported devices (11 drivers)

Driver Connection Description
FusionSolar Kiosk Cloud (Kiosk URL) Plant overview — power, daily & total yield
SUN2000 Modbus Local Modbus TCP Inverter — full sensor + control data
SUN2000 EMMA Modbus Local Modbus TCP Inverter via EMMA gateway
LUNA2000 Modbus Local Modbus TCP Battery — SoC, power, working modes
LUNA2000 EMMA Modbus Local Modbus TCP Battery via EMMA gateway
DTSU666 Modbus Local Modbus TCP Grid meter — power, energy, per-phase data
Power Meter EMMA Modbus Local Modbus TCP Grid meter via EMMA — full phase data + load
Smart Charger EMMA Modbus Local Modbus TCP EV charger via EMMA
SUN2000 OpenAPI Cloud (OpenAPI) Inverter data via FusionSolar OpenAPI
LUNA2000 OpenAPI Cloud (OpenAPI) Battery data via FusionSolar OpenAPI
Power Meter OpenAPI Cloud (OpenAPI) Meter data via FusionSolar OpenAPI

:bar_chart: What can it read?

SUN2000 Inverter (Modbus)

  • Active power output (W) and total/daily yield (kWh)

  • PV string voltages and currents (String 1 & 2)

  • Inverter temperature (°C)

  • Inverter operating status with full 28-state label (Standby, On-grid, On-grid: power limited, Shutdown: fault, Grid scheduling, AFCI check, I-V scanning, Off-grid, …)

  • Active power control mode

  • Grid power data — import/export power, accumulated energy (when DTSU666 is connected)

LUNA2000 Battery (Modbus)

  • Battery power (W) — positive = charging, negative = discharging

  • State of charge (%)

  • Lifetime charged / discharged energy (kWh)

  • Charge and discharge power (W, separate values)

  • Max charge / discharge power settings (W)

  • Today’s charged / discharged energy (kWh)

  • Battery unit status — Offline · Standby · Running · Fault · Sleep mode

  • Storage working mode, force charge/discharge, excess PV use, remote control mode

DTSU666 / Power Meter EMMA (Modbus)

  • Grid active power (W): positive = import, negative = export

  • Total imported / exported energy (kWh)

  • Today’s imported / exported energy (kWh)

  • Per-phase voltage, current and active power (A / B / C)

  • House consumption (W) and today’s consumption (kWh) — EMMA only

  • Meter online/offline status — DTSU666 only

EMMA Smart Charger (Modbus)

  • Real-time charging power (W)

  • Total energy charged (kWh)

  • Per-phase voltages (V)

  • Charger temperature (°C)

  • Charging state (Charging / Idle)

  • Rated power and product name (read from device)

LUNA2000 EMMA Battery (additional)

  • Backup SoC (%)

  • ESS chargeable and dischargeable capacity (kWh)

  • Max grid charging power setting (kW)


:counterclockwise_arrows_button: What can it control?

SUN2000 Inverter

  • Active power control mode: Unlimited · DI Active Scheduling · Zero Power Grid Connection

LUNA2000 Battery (Modbus)

  • Storage working mode: Adaptive · Fixed Charge/Discharge · Maximise Self-Consumption · Time of Use (LG/LUNA2000) · Fully Fed to Grid · Third-party Scheduling

  • Force charge/discharge: Stop · Force Charge · Force Discharge

  • Excess PV energy use in TOU: Feed to Grid · Charge Battery

  • Remote charge/discharge mode: Local Control · Remote Max Self-Consumption · Remote Fully Fed to Grid · Remote TOU · Remote AI Control · Remote Third-party Scheduling

LUNA2000 EMMA Battery

  • Storage working mode: Maximise Self-Consumption · Fully Fed to Grid · Time of Use · Third-party Scheduling

  • Excess PV energy use in TOU: Feed to Grid · Charge Battery

  • Max grid charging power (kW) — written via device settings


:repeat_button: Flow Cards

17 Triggers

Card Description
Power output changed Kiosk or Modbus/OpenAPI inverter — token: Power (W)
Daily energy updated Kiosk — token: Daily energy (kWh)
Inverter status changed to [status] SUN2000 — dropdown with 28 states + token
Battery SoC changed Modbus or OpenAPI — token: SoC (%)
Battery charging state changed Modbus or OpenAPI — token: State
Battery started charging LUNA2000 — transition to charging
Battery started discharging LUNA2000 — transition to discharging
Battery unit status changed to [status] LUNA2000 — dropdown: Offline/Standby/Running/Fault/Sleep
Grid export started Meter — token: Power (W)
Grid import started Meter — token: Power (W)
Meter status changed to [status] DTSU666 — dropdown: Offline/Normal
EV charging started Smart Charger
EV charging stopped Smart Charger

8 Conditions

Card Description
Battery is charging / not charging Power > 50 W
Battery is discharging / not discharging Power > 50 W
Grid is exporting / importing Negative active power = export
Inverter status is / is not [status] 28-state dropdown
Battery unit status is / is not [status] 5-state dropdown
Meter status is / is not [status] Offline / Normal
Is producing / not producing Kiosk or Modbus inverter

7 Actions

Card Description
Set active power control mode SUN2000 — 3 modes
Set storage working mode LUNA2000 Modbus (7 modes) or EMMA (4 modes)
Set excess PV energy use LUNA2000 Modbus or EMMA — Feed to Grid / Charge Battery
Set remote charge/discharge mode LUNA2000 Modbus — 6 modes
Set force charge/discharge LUNA2000 Modbus — Stop / Force Charge / Force Discharge

:gear: Setup

Requirements:

  • Modbus: SUN2000/LUNA2000/DTSU666/EMMA reachable on local network, Modbus TCP enabled, static IP recommended

  • OpenAPI: FusionSolar account with API access enabled

  • Kiosk: FusionSolar Kiosk URL

Installation:

  1. Install the app from the Homey App Store

  2. Add device: Devices → + → Huawei FusionSolar Manager

  3. Select the driver matching your setup (Modbus / EMMA Modbus / OpenAPI / Kiosk)

  4. Enter IP address, port and Modbus unit ID (Modbus) — or API credentials and station code (OpenAPI)

  5. Done — all values are immediately available

Device settings (Modbus drivers):

Setting Default Description
IP Address Device IP address
Port 502 Modbus TCP port
Modbus Unit ID 1 (0 for EMMA) Modbus slave ID
Poll interval 60 s How often values are read (min. 10 s)

:robot: About this app

This app was developed with the help of Claude (Anthropic AI). All code, configuration and documentation were generated and iteratively refined through AI-assisted development.

The app is open source: :backhand_index_pointing_right: GitHub – com.huawei.fusionsolar

If you find this app useful, I’d appreciate a beer: :backhand_index_pointing_right: PayPal – Support development


:balloon: Feedback welcome!

I’m happy to hear from you:

  • Does it work with your SUN2000 / LUNA2000 model?

  • Which Modbus registers are you missing?

  • Any bugs or unexpected behaviour?

Drop a comment below or open an issue on GitHub.

3 Likes

I just installed it. Connected through Modbus. Looks good so far. I like the fact that I finally have a full view on my battery in the Homey Energy tab.

I’ll keep an eye on it for a few days. If everything works out, this will probably end up replacing my custom solution built on the Modbus and Device Capabilities apps.

1 Like

Installed it. Realy nice work. Running modbus devices all 3 types. It have everything you can want so far in term of abilities i gues the people with emma devices will ask you for a additional device for that. Love the battery in energy tab :slight_smile: now i can remove my workaround solution for that.

Awesome! Installed and tested, wasn’t able to connect to the battery though - will test again. If it works, I’ll ditch Modbus fix to manage inverter.

I noticed when i added 2 of my deviced i had to try connect 2 times. First failed and right after it worked.

Thank you for all the feedback so far — it really helps to improve the app.
If you run into any error messages, it would be very helpful if you could share a screenshot along with details about the devices you’ve added.

I’m currently testing with my own setup (SUN2000 inverter, DTSU666 power meter and LUNA2000 battery), so I can only validate everything on these devices.
If anyone is willing to help test additional or different devices, I’d be more than happy to collaborate and support the process.

Andi

1 Like

Thanks for reporting this! This is a known quirk with Huawei inverters and SDongles — they occasionally reject the first incoming TCP connection when their internal connection slot is busy or recovering. A second attempt right after always works because the slot is free again by then.

I’ve pushed a fix in the next version: the app now automatically retries once (after a short pause) when the first connection attempt fails during pairing. You shouldn’t need to hit “Connect” twice anymore.

1 Like

This is great. Have been asking for it for some weeks now. I will install Huawei FusionSolar system on the next weeks, so it’s an excellent timing.

I will be installing the following:

SUN2000-10K

SMARTGUARD-63A

LUNA2000-14-S1

Huawei AC Charger 3Phase type 2 22kW

and the smart meter

Any chance of supporting the EV charger as well?

Thank you

Goede avond,

Wat dien ik in te geven om deze app te kunnen zoeken?

Dan kan ik deze ook uittesten.

Merci al

You can use this Link: Huawei FusionSolar Manager | Homey**

Goede morgen,

Ik heb thuis 1 omvormer van SMA en 1 van Huawei met een batterij van huawei.

Wat dien ik aan te klikken om deze te installeren.

Ik zie dat er een apart batterij en een apart omvormer staat, ook zie ik dat er “fusion solar plant” is. Is dit dan het beste om deze 2 samen te nemen ( batterij en huawei omvoermer?)

Wat is het beste om te doen => API of Modbus?

We hebben ook een energie meter tussen de beide omvormers staan. zo dat de huawei de stroom van de SMA niet als “vreemd” bekijkt. Graag had ik deze gelinkt met huawei batterij zodat de stroom die over is van de sma naar de batterij kan gaan. Welke meter dien ik dan te installeren?

MVG

(attachments)

Could you please write in english?

Just installed it and works great with EMMA (Unit ID 0) and LUNA2000 S1 (Unit ID 2) via Modbus TCP port 502!
However I can’t get any data from the SUN2000-M (3-phase) inverter. It connects without error but all values show “56 years ago”. Tried Unit ID 0-11, ports 502 and 6607 — no luck.
My setup: EMMA-A0x → SUN2000-M (3-phase) connected via RS485. EMMA is on WiFi.
Any idea what Unit ID or settings I should use for the inverter via EMMA?

Dear Andi. I have a Huawei Solar Inverter SUN2000-8KTL-M1. I also have a profile on the Fusion Solar via web + smartphone app. On this profile, the inverter is connected. The inverter itself, is connected to my Deco mesh wifi network via a Dongle. The dongle type: SDongleA-05. I tried to connect to the inverter in the app you created.

  1. I tried via OpenAPI. There I entered my Username and Password, the same I use accessing Fusion Solar webapp. However, I get the following notification: ‘Login failed (20400): Invalid username or password’. This is not possible as I do get access to the Fusion Solar webapp using exactly the same credentials.

  2. I also tried to login via Modbus. I found the IP address on the Deco mesh app. I entered the IP address, tried both the port nr. (502 and 6607), left modbus unit id on 1. After clicking on connect, I get the following notification: ‘Socket error: connect ECONNREFUSED 192. (..ip adress).

Do you know what the reason is for the inverter not being able to connect?

Good morning,

I have one SMA inverter and one Huawei inverter with a Huawei battery at home.

What do I need to click to install these?

I see that there is a separate battery and a separate inverter listed, and I also see “fusion solar plant”. Is it best to combine these two (battery and Huawei inverter)?

What is the best option => API or Modbus?

We also have an energy meter placed between the two inverters so that the Huawei does not view the current from the SMA as “foreign”. I would like to link this to the Huawei battery so that any remaining current from the SMA can go to the battery. Which meter should I install then?

Kind regards

Small update. After installing the app, my battery is no longer charging. It was a very sunny day today. Are there any settings I need to adjust?

you generally need full rights on your installation:

  1. OpenAPI is not you normal account on FusionSolar. That’s called Nortbound Account: FusionSolar SmartPVMS-Creating a Northbound API Account - Huawei (if you do not have access to these settings - ask your installer)

  2. You have to configure your S-Dongle to allow Modbus connections from homey: Manual –> Huawei Sun2000

Bug on battery device trying to set remote charging control to local control. Sent a diag to you @Andi

@Teddy

I’ve received your diag: There is no error but i found the source of the problem –> Control registers written back on every app start

Fix: A flag _updatingFromModbus was introduced in both drivers. It is set to true before any setCapabilityValue() calls originating from a poll read, and reset to false afterwards in a finally block. All write listeners check this flag and return immediately if it is set, ensuring that only explicit user actions (UI or Flow) trigger Modbus writes.

@peter7

Version 1.0.6 released: Huawei FusionSolar Manager | Homey

1 Like

Doesnt seam to have fixed itself it does a timeout when changing the setting.