TapHome

Huawei SUN2000

Modbus TCP
Submitted by
Last updated: 03. 2026
Huawei SUN2000

La serie Huawei SUN2000 3-10KTL comprende inverter di stringa monofase e trifase per impianti fotovoltaici residenziali, con potenza nominale da 3 kW a 10 kW. TapHome si collega all’inverter tramite Modbus TCP — direttamente attraverso il punto di accesso WiFi integrato dell’inverter o attraverso un Huawei Smart Dongle (WLAN-FE o LAN) connesso alla rete locale.

Il template fornisce monitoraggio della potenza attiva, potenza DC in ingresso, letture di corrente e tensione delle stringhe PV per un massimo di 4 stringhe, contatori di energia giornalieri e cumulativi, stato dettagliato dell’inverter con decodifica degli allarmi, panoramica dell’accumulo batteria (per LUNA2000) e azioni di controllo della potenza inclusa la compensazione della potenza reattiva e la limitazione della potenza attiva.

Abilitazione della comunicazione Modbus

L’inverter SUN2000 supporta Modbus TCP tramite il punto di accesso WiFi e attraverso lo Smart Dongle. Per una connessione permanente con TapHome, si raccomanda l’utilizzo di un Huawei Smart Dongle-WLAN-FE (o Smart Dongle-4G) collegato alla porta USB dell’inverter.

Opzioni di connessione
MetodoInterfacciaNote
Smart Dongle (raccomandato)Ethernet / WiFiCollega l’inverter alla rete locale. Consente Modbus TCP + app FusionSolar simultaneamente.
Punto di accesso WiFiWiFiConnessione diretta all’AP dell’inverter (SSID: SUN2000-<serial>). Un solo client alla volta.
RS-485 (Modbus RTU)Pin COM port RS485A1/B1Non utilizzato da questo template. Non può funzionare simultaneamente con il monitoraggio FusionSolar.

Utilizzando il punto di accesso WiFi, l’app FusionSolar non può connettersi simultaneamente. Per le installazioni in produzione, utilizzare sempre lo Smart Dongle affinché TapHome e FusionSolar possano operare contemporaneamente.

Configurazione Smart Dongle
  1. Collegare lo Smart Dongle-WLAN-FE alla porta USB nella parte inferiore dell’inverter
  2. Connettere lo Smart Dongle alla rete WiFi locale tramite l’app FusionSolar (configurazione iniziale)
  3. Il dongle otterrà un indirizzo IP dal router tramite DHCP
  4. Annotare l’indirizzo IP dalla tabella dei lease DHCP del router

Assegnare un indirizzo IP statico allo Smart Dongle nelle impostazioni DHCP del router per evitare che l’indirizzo cambi dopo un’interruzione di corrente.

Connessione di rete

  • Protocollo: Modbus TCP
  • Porta: 502 (porta Modbus TCP standard)
  • Slave ID predefinito: 1
  • Ordine dei byte: Big-endian (Modbus standard)

L’integrazione Huawei Home Assistant utilizza la porta 503 per impostazione predefinita (modalità WiFi AP). Collegandosi tramite Smart Dongle sulla rete locale, TapHome utilizza la porta Modbus TCP standard 502.

Configurazione

Durante l’importazione del template in TapHome, specificare:

  • Indirizzo IP — IP dello Smart Dongle sulla rete locale (o IP WiFi AP dell’inverter, predefinito: 192.168.200.1)
  • Slave ID — indirizzo Modbus slave (predefinito: 1)

Funzionalità dei dispositivi

Il template espone i seguenti dispositivi:

Potenza attiva

Un dispositivo contatore elettrico che legge l’uscita AC corrente dell’inverter. Questo è il dispositivo primario di monitoraggio della potenza.

  • Potenza attiva — potenza AC in uscita corrente in kW (registro H:32080, Int32)
  • Fattore di potenza — fattore di potenza della rete (registro H:32084, Int16)
  • Potenza attiva di picco giornaliera — potenza massima oggi in kW (attributo di servizio, H:32078)
  • Potenza reattiva — potenza reattiva corrente in kVar (attributo di servizio, H:32082)
  • Potenza nominale / Max. potenza attiva / Max. potenza apparente — valori di targa dai registri H:30073, H:30075, H:30077

Il dispositivo fornisce anche tre azioni di servizio per il controllo della potenza:

  • Compensazione potenza reattiva (PF) — impostare il fattore di potenza da -1,0 a 1,0 (scrittura in H:40122)
  • Compensazione potenza reattiva (Q/S) — impostare il rapporto di potenza reattiva (scrittura in H:40123)
  • Limitazione potenza attiva (%) — limitare la potenza in uscita come percentuale 0–100% (scrittura in H:40125)
Potenza DC in ingresso

Sensore in sola lettura che mostra la potenza DC totale in ingresso da tutte le stringhe PV combinate, in kW (registro H:32064, Int32, diviso per 1000).

Gli attributi di servizio mostrano dettagli lato rete: frequenza di rete (H:32085), tensioni di fase A/B/C (H:32069–32071) e correnti di fase A/B/C (H:32072–32076).

Batteria

Un dispositivo contenitore per lo stato dell’accumulo batteria (Huawei LUNA2000). Mostra:

  • Stato di funzionamento — Offline, Standby, In funzione, Guasto o Sospensione (H:37762)
  • Carica giornaliera — energia caricata oggi in kWh (H:37784)
  • Scarica giornaliera — energia scaricata oggi in kWh (H:37786)

Il dispositivo Batteria funziona solo quando una batteria LUNA2000 è collegata all’inverter. Senza batteria, lo stato di funzionamento mostrerà “Offline”.

Energia totale

Energia cumulativa generata dalla messa in servizio, in kWh (registro H:32106, UInt32, diviso per 100).

Energia giornaliera

Energia generata oggi, in kWh (registro H:32114, diviso per 100).

Correnti stringhe PV (PV1–PV4)

Quattro dispositivi sensore separati, uno per stringa PV, che misurano la corrente DC in ampere (registri H:32017, H:32019, H:32021, H:32023). Ogni dispositivo include un attributo di servizio per la tensione della stringa corrispondente (H:32016, H:32018, H:32020, H:32022).

Il numero di dispositivi stringa PV attivi dipende dal modello dell’inverter e dall’installazione. Le stringhe non utilizzate leggeranno 0 A.

Stato dell’inverter

Uno switch multi-valore (sola lettura) che mostra lo stato operativo corrente dell’inverter dal registro H:32089:

ValoreStatoDescrizione
0Stato inverterIniziale / sconosciuto
1InattivoRilevamento ISO, irradiazione o rete
2AvvioInverter in fase di avvio
3On GridProduzione di energia normale
4SpegnimentoGuasto, comando, OVGR o sezionamento DC
5Grid DispatchCurva cos(Phi)-P o Q-U attiva
6IV ScanningScansione curva I-V della stringa PV
7Spot-CheckControllo spot della rete in corso
8IspezioneModalità ispezione
9Rilevamento ingresso DCRilevamento ingresso DC

Gli attributi di servizio forniscono informazioni dettagliate sullo stato:

  • Stato completo — stato esteso con tutti i sotto-stati (es. “Spegnimento: Guasto”, “On-Grid: Limitazione potenza”)
  • Connessione alla rete — standby, normale, limitazione per razionamento della potenza o cause interne
  • Teleindicazione — stato di telesegnalazione IEC104
  • Stato di blocco / Stato connessione PV — dal registro di monitoraggio H:32002
  • Ora di avvio / Ora di spegnimento — ultimi timestamp di avvio e spegnimento
Monitoraggio allarmi

Lo script di lettura a livello di modulo monitora i registri allarme H:32008 e H:32009 (Bitfield16). Ogni bit corrisponde a un guasto o avviso specifico:

RegistroBitAllarme
H:320080Alta tensione stringa
H:320081Guasto arco DC
H:320082Stringa invertita
H:320083Stringa anomala (avviso)
H:320087Guasto rete elettrica
H:320088–9Sotto/sovratensione rete
H:3200811–13Guasti frequenza rete
H:3200814–15Sovracorrente uscita / Componente DC
H:320090Corrente di dispersione anomala
H:320091–2Guasti messa a terra / isolamento
H:320093–4Alta temperatura / Guasto apparecchiatura
H:320099Dispositivo accumulo energia anomalo
H:3200910–11Islanding attivo/passivo
Diagnostica a livello di modulo

Il modulo espone attributi di servizio per l’identificazione del dispositivo e la diagnostica:

AttributoRegistroDescrizione
Nome modelloH:30000Modello da targa dell’inverter
SNH:30015Numero di serie
PNH:30025Codice prodotto
Model IDH:30070Identificativo numerico del modello
Numero di stringheH:30071Stringhe PV collegate
Numero MPPTH:30072Numero di MPP tracker
Ora di sistemaH:40000Ora locale dell’inverter
Fuso orarioH:43006Offset UTC
Efficienza inverterH:32086Efficienza di conversione (%)
Temperatura cabinetH:32087Temperatura interna
Resistenza di isolamentoH:32088Isolamento del campo PV
Raccolta dati DSPH:32002Stato raccolta dati

L’azione di servizio Fuso orario consente di impostare l’offset UTC dell’inverter (scrittura in H:43006).

Funzionalità aggiuntive

L’inverter SUN2000 espone registri aggiuntivi non ancora implementati nel template. Questi includono tensioni concatenate (A-B, B-C, C-A), registro codice guasto, una lettura della potenza attiva con aggiornamento più rapido, contatore totale dell’energia DC in ingresso, contatori energetici mensili e annuali, stato di carica della batteria (SOC) e potenza di carica/scarica, potenza di rete attiva (importazione/esportazione dal misuratore di potenza), energia esportata e accumulata in rete e comandi di accensione/spegnimento remoto. Questi possono essere aggiunti in un futuro aggiornamento del template.

Il SOC della batteria (stato di carica) è notevolmente assente dal template attuale nonostante l’esistenza del dispositivo Batteria. Se necessitate del monitoraggio SOC, può essere aggiunto come dispositivo Modbus personalizzato leggendo il registro H:37760 (UInt16, dividere per 10, risultato in %).

Risoluzione dei problemi

Nessuna comunicazione Modbus
  1. Verificare che lo Smart Dongle sia collegato alla porta USB dell’inverter e alimentato (LED attivo)
  2. Confermare l’indirizzo IP del dongle nella tabella dei lease DHCP del router
  3. Assicurarsi che TapHome Core e lo Smart Dongle siano sulla stessa rete/sottorete
  4. Controllare che nessun firewall blocchi la porta 502
  5. In modalità WiFi AP, connettersi all’SSID dell’inverter (SUN2000-<serial>) e utilizzare l’IP 192.168.200.1
Le stringhe PV leggono valori zero

Gli ingressi delle stringhe PV non utilizzati leggeranno sempre 0 A / 0 V. Questo è normale se il modello dell’inverter ha meno ingressi MPPT di quelli forniti dal template (es. un modello 3KTL potrebbe utilizzare solo PV1 e PV2).

Il dispositivo batteria mostra “Offline”

I registri della batteria LUNA2000 vengono popolati solo quando una batteria compatibile è fisicamente collegata all’inverter. Senza batteria, lo stato di funzionamento mostrerà “Offline” e i contatori di carica/scarica saranno a zero.

Stato dell’inverter bloccato su “Inattivo”

Durante la notte o in condizioni di bassa irradiazione, l’inverter entra in modalità inattiva. Questo è normale — passerà allo stato “On Grid” una volta rilevata un’irradiazione solare sufficiente.

Dispositivi disponibili

SUN2000 TCP Modulo

SUN2000 TCP

Lettura (modulo)
var a1 := MODBUSR(H, 32008, Uint16);
var a2 := MODBUSR(H, 32009, Uint16);
IF(GETBIT(a1,0) = 1, ADDERROR("High String Voltage", 2001));
IF(GETBIT(a1,1) = 1, ADDERROR(${dc_arc_fault}, 2002));
IF(GETBIT(a1,2) = 1, ADDERROR("String Reversed", 2011));
IF(GETBIT(a1,3) = 1, ADDWARNING("PV String Backfeed ", 2012));
IF(GETBIT(a1,4) = 1, ADDWARNING("Abnormal String", 2013));
IF(GETBIT(a1,5) = 1, ADDERROR(${afci_fault}, 2021));
IF(GETBIT(a1,6)= 1, ADDERROR(${short_circ_L-PE}, 2021));
IF(GETBIT(a1,7) = 1, ADDERROR(${power_grid_fail}, 2032));
IF(GETBIT(a1,8) = 1, ADDERROR(${grid_undervoltage}, 2033));
IF(GETBIT(a1,9) = 1, ADDERROR(${grid_overvoltage}, 2034));
IF(GETBIT(a1,10) = 1, ADDERROR(${unbalanced_grid_V}, 2035));
IF(GETBIT(a1,11) = 1, ADDERROR(${grid_overfrequency}, 2036));
IF(GETBIT(a1,12) = 1, ADDERROR(${grid_underfrequency}, 2037));
IF(GETBIT(a1,13) = 1, ADDERROR(${grid_freq_instability}, 2038));
IF(GETBIT(a1,14) = 1, ADDERROR(${output_overcurr}, 2039));
IF(GETBIT(a1,15) = 1, ADDERROR(${out_DC_large}, 2040));
IF(GETBIT(a2,0) = 1, ADDERROR(${abnorm_leak_curr}, 2051));
IF(GETBIT(a2,1) = 1, ADDERROR(${abnorm_gnd}, 2061));
IF(GETBIT(a2,2) = 1, ADDERROR(${low_insul_res}, 2062));
IF(GETBIT(a2,3) = 1, ADDERROR(${high_tempt}, 2063));
IF(GETBIT(a2,4) = 1, ADDERROR(${abnorm_equip}, 2064));
IF(GETBIT(a2,5) = 1, ADDERROR(${upgrade_fail}, 2065));
IF(GETBIT(a2,6) = 1, ADDWARNING(${license_expired}, 2066));
IF(GETBIT(a2,7) = 1, ADDERROR(${abnorm_monitor_unit}, 61440));
IF(GETBIT(a2,8) = 1, ADDERROR(${power_collect_fault}, 2067));
IF(GETBIT(a2,9) = 1, ADDERROR(${abnorm_energy_storage_dev}, 2068));
IF(GETBIT(a2,10) = 1, ADDERROR("Active islanding", 2070));
IF(GETBIT(a2,11) = 1, ADDERROR("Passive islanding", 2071));
IF(GETBIT(a2,12) = 1, ADDERROR(${trans_AC_overvoltage}, 2072));
IF(GETBIT(a2,15) = 1, ADDERROR(${abnorm_PV_module_config}, 2080));
Potenza attiva Contatore elettrico

Contatore elettrico con potenza attiva, potenza reattiva, fattore di potenza e potenza di picco del giorno

Registro: H:32080 Int32 Unità: kW numeric

Potenza attiva

Lettura consumo totale
MODBUSR(H, 32080, Int32,2)
Lettura domanda
MODBUSR(H ,32084, Int16) ;
Potenza DC in ingresso Variabile Solo lettura

Potenza DC totale di tutti i string PV combinati (kW) con misurazioni lato rete — tensioni di fase, correnti e frequenza

Registro: H:32064 Int32 Unità: kW numeric
Attributi di servizio
Frequenza
Tensione fase A
Tensione fase B
Tensione fase C
Corrente fase A
Corrente fase B
Corrente fase C

Potenza DC in ingresso

Lettura
MODBUSR(H, 32064, Int32, 2)/1000
Attributi di servizio
Frequency
MODBUSR(H, 32085, Uint16)/100 + " Hz"
A Voltage
MODBUSR(H, 32069, Int16)/10 + " V"
B Voltage
MODBUSR(H, 32070, Int16)/10 + " V"
C Voltage
MODBUSR(H, 32071, Int16)/10 + " V"
A Current
MODBUSR(H, 32072, Int32, 2)/1000 + " A"
B Current
MODBUSR(H, 32074, Int32, 2)/1000 + " A"
C Current
MODBUSR(H, 32076, Int32, 2)/1000 + " A"
Batteria Dimmer Solo lettura

Stato dell'accumulo a batteria e contatori giornalieri di energia di carica/scarica

Attributi di servizio
Stato di funzionamento
Carica odierna
Scarica odierna

Batteria

Lettura livello
MODBUSR(H, 37760, Uint16)/1000
Attributi di servizio
Running Status
SWITCH(MODBUSR(H, 37762, Uint16),
0, "Offline", 
1, "Standby",
2, "Running",
3, "Fault",
4, "Sleep mode",
"Error"
);
Current Day Charge
MODBUSR(H, 37784, Uint32)/100 + " kWh";
Current Day Discharge
MODBUSR(H, 37786, Uint32)/100 + " kWh";
Energia totale Variabile Solo lettura

Energia totale cumulativa generata dalla messa in servizio

Registro: H:32106 UInt32 Unità: kWh numeric

Energia totale

Lettura
MODBUSR(H, 32106, UInt32, 2)/100
Energia giornaliera Variabile Solo lettura
Registro: H:32114 UInt32 Unità: kWh numeric

Energia giornaliera

Lettura
MODBUSR(H, 32114, Int32, 2)/100
PV1 corrente Variabile Solo lettura
Registro: H:32017 Int16 Unità: A numeric
Attributi di servizio
PV1 tensione

PV1 corrente

Lettura
MODBUSR(H, 32017, Int16)/100
Attributi di servizio
PV1 Voltage
MODBUSR(H, 32016, Int16)/10 + "V"
PV2 corrente Variabile Solo lettura
Registro: H:32019 Int16 Unità: A numeric
Attributi di servizio
PV2 tensione

PV2 corrente

Lettura
MODBUSR(H, 32019, Int16)/100
Attributi di servizio
PV2 Voltage
MODBUSR(H, 32018, Int16)/10
PV3 corrente Variabile Solo lettura
Registro: H:32021 Int16 Unità: A numeric
Attributi di servizio
PV3 tensione

PV3 corrente

Lettura
MODBUSR(H,32021, Int16)/100
Attributi di servizio
PV3 Voltage
MODBUSR(H, 32020, Int16)/10 + "V"
PV4 corrente Variabile Solo lettura
Registro: H:32023 Int16 Unità: A numeric
Attributi di servizio
PV4 tensione

PV4 corrente

Lettura
MODBUSR(H, 32023, Int16)/100
Attributi di servizio
PV4 Voltage
MODBUSR(H, 32022, Int16)/10
Stato inverter Interruttore multivalore Solo lettura

Stato operativo dell'inverter — Inattivo, Avvio, In rete, Spegnimento, Dispacciamento rete, IV Scanning, Controllo a campione, Ispezione, Rilevamento ingresso DC

Registro: H:32089 UInt16 numeric
Valori / Stati: ${inverter_state} · ${idle} · ${starting} · On Grid · Shutdown · Grid Dispatch · IV scanning · Spot-Check · ${inspecting} · ${dc_input_det }

Stato inverter

Lettura stato interruttore
var reg := MODBUSR(H, 32089, Uint16);
IF(reg = 0, 0,
IF(reg < 4 OR reg = 40960,1,
IF(reg = 256, 2, 
IF(reg < 515, 3, 
IF(reg < 775, 4,
IF(reg = 1025 OR reg = 1026, 5, 
IF(reg = 1280 OR reg = 1281, 7,
IF(reg = 1536, 8, 
IF(reg = 2048, 6,
IF(reg = 2304, 9
))))))))))
Attributi di servizio
Full State
var state := MODBUSR(H, 32089, Uint16);
SWITCH(state, 0, "Idle: Initializing",
 1,"Idle: Detecting ISO", 
 2,"Idle: Detecting irradiation", 
 3, "Idle: Grid Detecting", 
 256, "Starting", 
 512, "On-Grid", 
 513, "On-Grid: Power Limit", 
 514, "On-Grid: self-derating", 
 768, "Shutdown: Fault", 
 769, "Shutdown: Command", 
 770, "Shutdown: OVGR", 
 771,"Shutdown: Communication disconnected", 
 772, "Shutdown: Power Limit", 
 773, "Shutdown: Start manually", 
 774, "Shutdown: DC Switch OFF",
 1025, "Grid dispatch:cos(Phi)-P curve",
 1026, "Grid dispatch:Q-U curve",
40960, "Idle: No irradiation",
1280, "Spot-check",
1281, "Spot-checking",
1536, "Inspecting",
1792, "SFCI self-check",
2048, "IV scanning",
2304, "DC input detection",
"Unknown"
 );
Grid Connection
var reg := MODBUSR(H, 32000,Uint16);
IF(GETBIT(reg,0) = 1, "Standby",
IF(GETBIT(reg,2) = 1 , "Normal Grid Connection",
IF(GETBIT(reg,3) = 1, "Grid connection with derating due to power rationing",
IF(GETBIT(reg,4) = 1, "Grid connection with derating due to inverter internal causes", "Not Connected"
)
)
)
)
Teleindication
var reg := MODBUSR(H, 32000,Uint16);
IF(GETBIT(reg,0) = 1, "Standby",
IF(GETBIT(reg,5) = 1 , "Normal Stop",
IF(GETBIT(reg,6) = 1, "Stop due to faults",
IF(GETBIT(reg,7) = 1, "Stop due to power rationing",
IF(GETBIT(reg,8) = 1, "Shutdown",
IF(GETBIT(reg,9) = 1, "Spot check",
IF(GETBIT(reg,1) = 1, "Grid Connected",
"Unknown State")
)
)
)
)
)
)
Locking Status
IF(GETBIT(MODBUSR(H, 32002, Uint16),0) = 1, "Unlocked", "Locked");
PV Connection Status
IF(GETBIT(MODBUSR(H, 32002, Uint16),0) = 1, "Connected", "Disconnected");
Startup time
var reg := MODBUSR(H, 32091, Uint32, 2);
var min := FLOOR(MOD(reg, 3600)/60);
var ho := FLOOR(MOD(reg,86400)/3600);
var minutes := IF(min<10, "0" + min, min);
var hours := IF(ho<10, "0" + ho, ho);
hours + ":" + minutes;
Shutdown time
var reg := MODBUSR(H, 32093, Uint32, 2);
var min := FLOOR(MOD(reg, 3600)/60);
var ho := FLOOR(MOD(reg,86400)/3600);
var minutes := IF(min<10, "0" + min, min);
var hours := IF(ho<10, "0" + ho, ho);
hours + ":" + FLOOR(minutes);
Connessione: Modbus TCP • Slave ID: $[SlaveId]
Possibili miglioramenti (17)
  • H:30035 Firmware Version — STR, 15 regs, read-only — useful for diagnostics
  • H:32010 Alarm 3 — Bitfield16, additional alarm bits not decoded in template readscript
  • H:32066 Line Voltage A-B — U16, V, /10, grid line-to-line voltage
  • H:32067 Line Voltage B-C — U16, V, /10, grid line-to-line voltage
  • H:32068 Line Voltage C-A — U16, V, /10, grid line-to-line voltage
  • H:32090 Fault Code — U16, specific fault code when device is in fault state
  • H:32095 Active Power (fast) — I32, kW, /1000, faster-updating active power reading
  • H:32108 Total DC Input Energy — U32, kWh, /100, cumulative DC energy input
  • H:32116 Monthly Energy — U32, kWh, /100, electricity generated this month
  • H:32118 Yearly Energy — U32, kWh, /100, electricity generated this year
  • H:37760 Battery SOC — U16, %, /10, battery state of charge — notably absent from template despite Battery device existing
  • H:37765 Battery Charge/Discharge Power — I32, W, positive=charging negative=discharging
  • H:37113 Active Grid Power — I32, W, power meter active power (grid import/export)
  • H:37119 Grid Exported Energy — I32, kWh, /100, energy exported to grid
  • H:37123 Grid Accumulated Energy — U32, kWh, /100, total energy from grid
  • H:40200 Power On — WO, E16, remote inverter power-on command
  • H:40201 Shutdown — WO, E16, remote inverter shutdown command

Fonti