Hi everyone ![]()
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.
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)
Install from the Homey App Store
Test Version: Huawei FusionSolar Manager | TEST
Live Version: Huawei FusionSolar Manager | LIVE
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 |
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)
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
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 |
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:
-
Install the app from the Homey App Store
-
Add device: Devices → + → Huawei FusionSolar Manager
-
Select the driver matching your setup (Modbus / EMMA Modbus / OpenAPI / Kiosk)
-
Enter IP address, port and Modbus unit ID (Modbus) — or API credentials and station code (OpenAPI)
-
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) |
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:
GitHub – com.huawei.fusionsolar
If you find this app useful, I’d appreciate a beer:
PayPal – Support development
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.
