
I SolaX X1-HYBRID e X3-HYBRID Gen 4 sono inverter ad accumulo di energia che supportano configurazioni sia monofase (3–7,5 kW) che trifase (5–15 kW). Il template TapHome comunica tramite Modbus RTU su RS-485, leggendo registri di ingresso e holding per lo stato di carica della batteria, la potenza del string FV, il flusso di potenza dalla rete, i totali di energia, la modalità di ricarica e il SOC della carica notturna. Tutti gli script di scrittura sono commentati, rendendo il template di fatto in sola lettura.
Il template implementa inoltre un rilevamento completo dei guasti analizzando i codici di errore a 32 bit dell’inverter e i codici di errore a 16 bit del gestore, segnalando i singoli guasti come errori in TapHome.
Collegamento hardware
L’inverter SolaX Gen 4 fornisce una porta COM RS-485 per la comunicazione Modbus RTU sul pannello inferiore. La porta COM utilizza un connettore RJ45.

Assegnazione dei pin del terminale COM (RJ45):
| Pin | Assegnazione | Descrizione |
|---|---|---|
| 1 | Drycontact_A(in) | Connessione interruttore di sistema |
| 2 | Drycontact_B(in) | Connessione interruttore di sistema |
| 3 | +13V | — |
| 4 | 485A | RS-485 data+ (per TapHome) |
| 5 | 485B | RS-485 data− (per TapHome) |
| 6 | GND | Massa |
| 7 | Drycontact_A(out) | Connessione generatore |
| 8 | Drycontact_B(out) | Connessione generatore |
Collegare TapHome alla porta COM dell’inverter:
- Pin 4 (485A) sulla porta COM dell’inverter a A+/D+ su RS-485 TapHome
- Pin 5 (485B) sulla porta COM dell’inverter a B-/D- su RS-485 TapHome
- Pin 6 (GND) — raccomandato per una comunicazione affidabile
L’inverter stesso non supporta nativamente Modbus TCP. Modbus TCP è disponibile solo tramite il modulo di monitoraggio SolaX (dongle Wi-Fi) e non viene utilizzato dal template TapHome.
Per installazioni in cui il cablaggio RS-485 non è pratico, il template SolaX Inverter (Cloud API) fornisce monitoraggio attraverso la piattaforma SolaxCloud via HTTPS — senza connessione fisica. Supporta tutti i tipi di inverter SolaX, non solo il Gen 4 Hybrid.
Alcuni registri holding sono contrassegnati con cicli di scrittura EEprom limitati. Le operazioni di scrittura eccessive possono causare danni hardware irreversibili. Il template TapHome ha tutti gli script di scrittura disabilitati, quindi non è un problema con il template attuale.
Configurazione
Abilitazione della comunicazione Modbus
Modbus RTU è disponibile di default sulla porta COM RS-485 dell’inverter. I seguenti parametri devono corrispondere tra l’inverter e il modulo TapHome:
- Slave ID – predefinito 1, configurabile sul display dell’inverter
- Baud rate – l’inverter usa per default 19200 baud, ma il template TapHome usa 9600 baud. Modificare uno dei due per farli corrispondere
- Formato dati – 8 bit dati, nessuna parità, 1 stop bit
Configurazione sul display dell’inverter: Menu > Setting > Advance Setting > Modbus. Impostare l’indirizzo slave e il baud rate. Il baud rate può essere letto anche dal registro holding H:0x00B0 e scritto tramite il registro 0x00CA (valori: 0=115200, 1=57600, 2=56000, 3=38400, 4=19200, 5=14400, 6=9600).
Per evitare di modificare le impostazioni dell’inverter, regolare il baud rate nelle impostazioni del modulo TapHome a 19200 per corrispondere al valore predefinito dell’inverter.
Temporizzazione della comunicazione
Il protocollo richiede un intervallo minimo di 1 secondo tra le istruzioni Modbus consecutive e un timeout di gap tra caratteri di almeno 100 ms. Il timeout di risposta è 1 secondo. Il template TapHome utilizza intervalli di polling individuali per dispositivo (da 2,5 s a 150 s) che soddisfano questi requisiti.
Funzione della porta COM RS-485
Il registro H:0x013E (485CommFunSelect) determina se la porta RS-485 viene utilizzata per la comunicazione Modbus (valore 0) o per la comunicazione del caricabatterie EV (valore 1). Assicurarsi che sia impostato su 0 (Modbus 485) per l’integrazione TapHome.
Funzionalità del dispositivo
Monitoraggio della batteria
- Battery SOC – legge lo stato di carica della batteria (A:0x1C) come percentuale. Il valore grezzo del registro in unità dell'1% viene diviso per 100 per l’intervallo di ingresso analogico TapHome 0–1 (es. 85% diventa 0,85)
- Battery Temperature – legge la temperatura della batteria (A:0x18) in gradi Celsius. Polling ogni 80 secondi. Il template ufficiale legge il registro come valore senza segno, quindi le temperature inferiori a 0 °C vengono mostrate in modo errato (vedere Problemi noti nel template ufficiale più avanti)
Potenza FV solare
- PV1 Power – potenza DC di uscita dallo string FV 1 (A:0x0A), visualizzata in kW dopo la conversione /1000 da watt
- PV2 Power – potenza DC di uscita dallo string FV 2 (A:0x0B), visualizzata in kW dopo la conversione /1000 da watt
Potenza di rete e misurazione dell’energia
- Grid Feed-in Power – potenza di rete istantanea (A:0x46, LittleEndianInt32) in kW. I valori positivi indicano l’esportazione in rete, i valori negativi indicano il consumo dalla rete
- Daily / Actual Energy – nel template ufficiale combina l’energia giornaliera prodotta dalla porta AC dell’inverter (A:0x50, un contatore che si azzera ogni notte) e la potenza di rete dei modelli monofase X1 (A:0x02). Entrambi i valori sono errati per un contatore di energia di tipo produzione fotovoltaica — vedere Problemi noti nel template ufficiale più avanti
- Total Energy – energia cumulativa totale prodotta dalla porta AC dell’inverter (A:0x52). Il registro conta in unità di 0,1 kWh; il template ufficiale divide per 1000, quindi il valore è 100× troppo piccolo (vedere Problemi noti nel template ufficiale più avanti)
Modalità di ricarica e carica notturna
- Charger Use Mode – legge la modalità del caricabatterie solare attiva (H:0x8B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) o Manual Mode (3). I valori 4–9 sono riservati. Il registro di scrittura (H:0x1F) esiste nel template ma è commentato, rendendolo in sola lettura
- Self-Use Night Charge SOC – legge il target SOC superiore per la carica notturna in modalità Self-Use (H:0x94) come percentuale. Il registro di scrittura (H:0x63) e il registro di abilitazione (H:0x62) sono entrambi commentati, quindi la configurazione della carica notturna non può essere modificata tramite TapHome
Rilevamento guasti
Lo ReadScript a livello di modulo monitora la modalità di esecuzione dell’inverter (A:0x09) e due registri di errore:
- Run Mode guasti – attiva un errore quando Run Mode è 3 (Guasto) o 4 (Guasto Permanente)
- Codici di errore dell’inverter (A:0x40) – bitmap a 32 bit (word meno significativa per prima) analizzata per 30 guasti individuali inclusi guasti di tensione/frequenza della rete, guasti di tensione FV, guasti della batteria, guasti di isolamento, sovratemperatura, protezione da sovracorrente, guasti dei relè ed errori di comunicazione
- Codici di errore del gestore (A:0x43) – bitmap a 16 bit analizzata per guasti di tipo di potenza, errori EEPROM, problemi di sensori NTC, avvertimenti di temperatura della batteria, guasti del contatore e guasti della ventola
L’attributo di servizio Run Mode sul modulo visualizza lo stato corrente dell’inverter come testo: Waiting, Checking, Normal, Fault, Permanent Fault, Update, Off-grid waiting, Off-grid, Self Testing, Idle o Standby.
Funzionalità aggiuntive
L’inverter espone una mappa di registri completa con oltre 300 registri holding e 200 registri di ingresso. Le funzionalità notevoli non ancora implementate nel template includono il monitoraggio di tensione e corrente per ogni string FV (A:0x03–0x06), letture di tensione/corrente/potenza della batteria, stato di connessione BMS, stato rete on/off, X3 tensione/corrente/potenza di rete per fase (12 registri a A:0x6A–0x75), energia cumulativa immessa e consumata dalla rete (tramite contatore), produzione totale di energia solare, SOC e SOH utente BMS, e temperatura e tensione minima/massima delle celle della batteria. Le funzionalità di scrittura includono il controllo accensione/spegnimento del sistema, selezione della modalità di ricarica, forza manuale di carica/scarica, SOC minimo di scarica, configurazione della carica notturna e controllo remoto della potenza con target di potenza attiva/reattiva. Questi possono essere aggiunti in un futuro aggiornamento del template.
Il template ufficiale legge la potenza di rete X1 (monofase) in A:0x02 come potenza del suo contatore di energia. Gli script corretti riportati più avanti leggono invece la produzione FV, il che funziona allo stesso modo sui modelli X1 e X3.
Problemi noti nel template ufficiale
Il template TapHome ufficiale per questo inverter legge diversi registri in modo errato (verificato sul protocollo Modbus SolaX V3.21 e V001.02 e sui valori di impianti installati). Un modulo importato dal template ufficiale non si aggiorna da solo quando il template cambia. È possibile correggere manualmente gli script del modulo esistente e dei suoi dispositivi, oppure importare il template della community corretto dal portale TapHome: SolaX X1/X3-Hybrid G4 — corrected monitoring (accedere, scaricare l’XML e importarlo come nuovo modulo).
| Dove | Script ufficiale | Script corretto | Effetto dell’errore |
|---|---|---|---|
| Modulo — ReadScript | var x3 := MODBUSR(A, 0x0040, Uint32); | var x3 := MODBUSR(A, 0x0040, LittleEndianUint32); | Le due metà del codice di guasto a 32 bit sono invertite: un guasto nel bit 1 (Grid Lost Fault) viene segnalato come bit 17 (Bat Power Low) |
| Total Energy | MODBUSR(A, 0x52, LittleEndianInt32) / 1000 | MODBUSR(A, 0x0052, LittleEndianUint32) / 10 | Valore 100× troppo piccolo (il registro conta in unità di 0,1 kWh) |
| Daily / Actual Energy — consumo totale | MODBUSR(A, 0x50, UInt16) /10 | MODBUSR(A, 0x0094, LittleEndianUint32) / 10 | 0x0050 è un contatore giornaliero che ogni notte scende a 0; 0x0094 è l’energia FV totale |
| Daily / Actual Energy — potenza | MODBUSR(A,0x02, Int16)/1000 | (MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16)) / 1000 | 0x0002 è la potenza di rete dei modelli monofase X1, non la produzione FV; su molte unità X3 legge 0 |
| Battery Temperature | MODBUSR(A,0x0018, UInt16) | MODBUSR(A, 0x0018, Int16) | Sotto 0 °C il template ufficiale mostra circa 65535 °C |
| Velocità dell’interfaccia | 9600 baud | 19200 baud | 19200 è il valore di fabbrica di SolaX |
Con gli script corretti, Daily / Actual Energy misura la produzione FV (PV1 + PV2), cioè ciò che si aspetta il suo tipo di energia nell’Energy Dashboard. Il template della community corretto mantiene disabilitate tutte le scritture, come quello ufficiale.
Risoluzione dei problemi
Nessuna comunicazione con l’inverter
- Verificare i collegamenti del cavo RS-485: A+ ad A+, B- a B-, GND a GND
- Controllare che il registro H:0x013E sia impostato a 0 (modalità Modbus 485, non EV Charger)
- Confermare che il baud rate corrisponda tra inverter e TapHome – l’inverter ha come default 19200 mentre il template ha come default 9600
- Verificare che lo Slave ID in TapHome corrisponda all’impostazione dell’inverter (default: 1)
- Assicurarsi che nessun altro master Modbus sia collegato allo stesso bus RS-485 – Modbus supporta solo un singolo master
Lettura Battery SOC errata
Il registro Battery SOC (A:0x1C) riporta valori in unità dell'1%. Il template divide per 100 per l’intervallo di ingresso analogico TapHome 0–1. Se il valore visualizzato sembra errato, verificare che il dispositivo TapHome sia configurato come AnalogInput (intervallo 0–1, non 0–100).
Convenzione dei segni della potenza di rete
Grid Feed-in Power (A:0x46) utilizza una convenzione dei segni in cui i valori positivi significano esportazione (generazione/immissione in rete) e i valori negativi significano importazione (consumo dalla rete). Il registro della potenza di rete Daily/Actual Energy (A:0x02) può anche mostrare valori negativi durante il consumo dalla rete.
Differenze tra registri X1 e X3
Alcuni registri sono specifici del modello. Tensione di rete (A:0x00), corrente (A:0x01) e potenza (A:0x02) sono registri X1 monofase. Per i modelli X3 trifase, le corrispondenti letture per fase si trovano in A:0x6A–0x75. Il template utilizza il registro di potenza di rete X1, che potrebbe non riportare correttamente sui modelli X3.
