
The Huawei SUN2000 3-10KTL series are single-phase and three-phase string inverters for residential PV systems, with rated power from 3 kW to 10 kW. TapHome connects to the inverter via Modbus TCP — either through a Huawei Smart Dongle (WLAN-FE or 4G) plugged into the inverter’s USB port, or directly to the inverter’s built-in WiFi access point.
The template provides active grid power monitoring, daily and lifetime energy counters, PV string current readings for up to 4 strings, individual phase voltage sensors, grid frequency, aggregated DC production, battery state of charge (for LUNA2000), inverter operating state with detailed sub-state decoding, and writable export power limitation. Module-level service actions allow reactive power compensation (PF and Q/S) and active power derating.
Enabling Modbus communication
The SUN2000 inverter supports Modbus TCP over its built-in WiFi access point and through the Smart Dongle. For a permanent connection with TapHome, the recommended approach is using a Huawei Smart Dongle-WLAN-FE (or Smart Dongle-4G) plugged into the inverter’s USB port.
Connection options
| Method | Interface | Notes |
|---|---|---|
| Smart Dongle (recommended) | Ethernet / WiFi | Connects the inverter to the local LAN. Allows simultaneous Modbus TCP and FusionSolar app access. |
| WiFi Access Point | WiFi | Direct connection to the inverter AP (SSID: SUN2000-<serial>). Only one client at a time. |
| RS-485 (Modbus RTU) | COM port pins RS485A1/B1 | Not used by this template. Cannot run simultaneously with FusionSolar monitoring. |
When using the WiFi Access Point method, the FusionSolar app cannot connect at the same time. For production installations, always use the Smart Dongle so that both TapHome and FusionSolar can operate in parallel.
Smart Dongle setup
- Plug the Smart Dongle-WLAN-FE into the USB port on the bottom of the inverter
- Connect the Smart Dongle to the local WiFi network using the FusionSolar app (initial setup)
- The dongle will obtain an IP address from the router via DHCP
- Note the IP address from the router’s DHCP lease table
Assign a static IP address (or DHCP reservation) to the Smart Dongle in the router’s settings to prevent the address from changing after a power cycle.
Network connection
- Protocol: Modbus TCP
- Port: 502 (standard Modbus TCP port)
- Default Slave ID: 1
- Byte order: Big-endian (standard Modbus)
- Register range used: H:30000 — H:47418
The Home Assistant
huawei-solar-liblibrary uses port 503 by default in WiFi AP mode. When connecting through the Smart Dongle on a local network, TapHome uses the standard Modbus TCP port 502.
Configuration
When importing the template in TapHome, provide:
- IP Address — the Smart Dongle’s IP on the local network (or the inverter’s WiFi AP IP, default: 192.168.200.1)
- Slave ID — Modbus slave address (default: 1)
Device capabilities
The template exposes 16 devices grouped by function below.
Power and energy monitoring
- Active Power — Modbus electricity meter reading total daily yield from H:32114 (kWh) and instantaneous active grid power demand from H:37113 (kW). Includes 11 service attributes (peak active power of day, reactive power, rated/max active/max apparent power, max reactive power feed/absorb, reactive power compensation PW and Q/S, active power derating percent and fixed value) and 3 service actions (reactive power compensation PF, reactive power compensation Q/S, active power derating %).
- Total Energy — cumulative lifetime energy produced by the inverter since commissioning, in kWh (H:32106).
- Energy Today — energy generated since midnight, resets daily, in kWh (H:32114).
- DC Production — aggregated DC input power from all PV strings in kW (H:32064). Service attributes expose grid frequency (H:32085), phase A/B/C voltages (H:32069–32071), and phase A/B/C currents (H:32072–32076).
PV string monitoring
Four sensor devices, one per PV string, report DC current in amps. Each device includes a service attribute for the corresponding string DC voltage:
| Device | Current register | Voltage attribute |
|---|---|---|
| PV1 Current | H:32017 | H:32016 |
| PV2 Current | H:32019 | H:32018 |
| PV3 Current | H:32021 | H:32020 |
| PV4 Current | H:32023 | H:32022 |
The number of active PV string devices depends on the inverter model and installation. Unused string inputs read 0 A — for example, a 3KTL model typically uses PV1 and PV2 only.
Grid metrics
- Phase A Voltage — phase-to-neutral voltage on line A in V (H:32069).
- Phase B Voltage — phase-to-neutral voltage on line B in V (H:32070).
- Phase C Voltage — phase-to-neutral voltage on line C in V (H:32071).
- Grid Frequency — AC grid frequency at the inverter output in Hz (H:32085).
Battery (LUNA2000)
- Battery SOC — battery state of charge as a fraction of available capacity, read from H:37760. When the inverter reports a value above 1 (no battery present), the device adds an informational message “Batéria nepripojená” (Battery not connected).
The Huawei Modbus Interface Definitions V3.0 document specifies gain 10 for register H:37760 (percent with one decimal). The TapHome template uses gain 1000, which reads the value as a fraction (0.0–1.0). Both representations expose the same underlying data — interpret the displayed value accordingly.
Export power control
- Maximum Feed Grid — writable export power limit expressed as a percentage of rated power (H:47418, Int16, gain 10). Set this device to restrict how much energy the inverter feeds into the grid.
- Maximum Feed Grid Power — read-only sensor reporting the currently effective export limit as an absolute wattage in kW (H:47416, Int32, gain 1000).
Registers H:47416 and H:47418 are not documented in the official Huawei Solar Inverter Modbus Interface Definitions V3.0 (2023-01-16). They are vendor-extended on newer firmware and confirmed only through field testing. Behaviour may vary by inverter firmware version — verify the response after writing to H:47418 before relying on the limit in automations.
Inverter Operating State
A multi-value switch (read from H:32089) that maps Huawei’s 20+ raw status codes to 10 high-level states:
| Value | State | Underlying raw codes |
|---|---|---|
| 0 | Standby | 0 |
| 1 | Idle / No Irradiation | 1, 2, 3, 40960 |
| 2 | Starting | 256 |
| 3 | On-Grid | 512, 513, 514 |
| 4 | Shutdown | 768–774 |
| 5 | Grid Dispatch | 1025, 1026 |
| 6 | IV Scanning | 2048 |
| 7 | Spot-Check | 1280, 1281 |
| 8 | Inspecting | 1536 |
| 9 | DC Input Detection | 2304 |
Service attributes provide deeper insight into the state:
- Full State — complete inverter status decoded from H:32089 with all 20+ raw sub-states (Idle: Initializing, Idle: Detecting ISO, On-Grid: Power Limit, Shutdown: Fault, Shutdown: OVGR, Grid dispatch: cos(Phi)-P curve, etc.).
- Grid Connection — derived from H:32000 bits: Standby, Normal Grid Connection, Grid connection with derating due to power rationing, Grid connection with derating due to inverter internal causes, or Not Connected.
- Teleindication — IEC 60870-5-104 telesignaling state from H:32000 bits: Standby, Normal Stop, Stop due to faults, Stop due to power rationing, Shutdown, Spot check, Grid Connected.
- Locking Status — Locked or Unlocked, derived from H:32002 bit 0.
- PV Connection Status — Connected or Disconnected, derived from H:32002 bit 0.
- Startup time — most recent startup time of the day (HH:MM) from H:32091.
- Shutdown time — most recent shutdown time of the day (HH:MM) from H:32093.
Module-level diagnostics
The module exposes service attributes for device identification and diagnostics:
| Attribute | Register | Description |
|---|---|---|
| Model Name | H:30000 | Inverter nameplate model identifier |
| SN | H:30015 | Serial number |
| PN | H:30025 | Part number |
| Model ID | H:30070 | Numeric model identifier |
| Number of Strings | H:30071 | PV strings supported by hardware |
| MPPT Number | H:30072 | Independent MPPT tracker count |
| System Time | H:40000 | Inverter internal clock |
| Time Zone | H:43006 | Configured UTC offset |
| Inverter Efficiency | H:32086 | Current AC/DC conversion efficiency (%) |
| Cabinet Temperature | H:32087 | Internal cabinet temperature (°C) |
| Insulation Resistance | H:32088 | DC-side insulation resistance (MΩ) |
| DSP Data Collection | H:32002 | Whether the DSP is collecting telemetry |
A Time Zone service action allows setting the inverter’s UTC offset (writes to H:43006). Supported values span UTC-12:00 through UTC+14:00.
Alarm monitoring
The module-level read script polls alarm registers H:32008 (Alarm 1) and H:32009 (Alarm 2) and decodes each bit into a named error or warning. Notable alarms include:
| Register | Bit | Alarm |
|---|---|---|
| H:32008 | 0 | High String Voltage |
| H:32008 | 1 | DC Arc Fault |
| H:32008 | 2 | String Reversed |
| H:32008 | 3 | Abnormal String (warning) |
| H:32008 | 5 | AFCI Fault |
| H:32008 | 7 | Power Grid Failure |
| H:32008 | 8–9 | Grid Under/Overvoltage |
| H:32008 | 11–13 | Grid Frequency Faults |
| H:32008 | 14–15 | Output Overcurrent / DC Component |
| H:32009 | 0 | Abnormal Leakage Current |
| H:32009 | 1–2 | Abnormal Ground / Low Insulation |
| H:32009 | 3–4 | High Temperature / Equipment Fault |
| H:32009 | 9 | Abnormal Energy Storage Device |
| H:32009 | 10–11 | Active/Passive Islanding |
| H:32009 | 15 | Abnormal PV Module Configuration |
Troubleshooting
No Modbus communication
- Verify the Smart Dongle is plugged into the inverter’s USB port and powered (LED active).
- Confirm the dongle’s IP address in the router’s DHCP lease table.
- Ensure TapHome Core and the Smart Dongle are on the same network / subnet.
- Check that no firewall is blocking TCP port 502.
- If using WiFi AP mode, connect to the inverter’s SSID (
SUN2000-<serial>) and use IP192.168.200.1.
PV string values read zero
Unused PV string inputs always read 0 A and 0 V. This is normal for inverter models with fewer MPPT inputs than the template provides (e.g. a 3KTL model typically uses PV1 and PV2 only).
Battery SOC shows “Batéria nepripojená” or values above 100 %
The LUNA2000 battery registers are populated only when a compatible battery is physically connected. When no battery is present, register H:37760 returns values above the expected range and the template raises the “Batéria nepripojená” (Battery not connected) information message.
Inverter stuck in Idle
During nighttime or low-irradiation conditions the inverter remains in the Idle state (sub-states “Detecting ISO”, “Detecting irradiation”, “Grid Detecting”, or “No irradiation”). The inverter transitions to On-Grid automatically once sufficient solar irradiation is detected.
Maximum Feed Grid write has no effect
Registers H:47416 and H:47418 are vendor-extended and not present in the official V3.0 Modbus documentation. If the export limit has no effect, verify:
- The inverter firmware version supports the export limitation feature.
- The Smart Dongle is connected and not in pass-through mode used by FusionSolar grid code services.
- No conflicting grid code or DRM signal is overriding the local limit.
Shutdown sub-state shows OVGR / DC Switch OFF
These shutdown sub-states (decoded from H:32089) indicate the inverter was stopped by a protective signal — OVGR via the external OVGR contact, or DC Switch OFF via the physical DC isolator on the inverter. Address the underlying physical condition before attempting a remote power-on.