I SolaX X1-HYBRID e X3-HYBRID Gen 4 sono inverter ad accumulo di energia con fotovoltaico e batteria, disponibili in versione monofase (3–7,5 kW) e trifase (5–15 kW). Questo template della community è il template ufficiale TapHome per SolaX Gen 4 con le letture corrette secondo il protocollo Modbus SolaX (V3.21 e V001.02). Comunica tramite Modbus RTU su RS-485 e legge lo stato di carica e la temperatura della batteria, la potenza delle stringhe FV, il flusso di potenza dalla rete, i totali di energia, la modalità di ricarica e il SOC della carica notturna. I nomi dei dispositivi sono gli stessi del template ufficiale, quindi puoi confrontare un’importazione precedente dispositivo per dispositivo. Tutti gli script di scrittura restano commentati, come nel template ufficiale, quindi il template è in sola lettura.
Il modulo analizza inoltre il codice di guasto dell’inverter a 32 bit e il codice di errore del gestore (manager) a 16 bit e segnala ogni guasto in TapHome con un proprio codice di errore.
Come ottenere il template
I template della community non sono disponibili nell’elenco dei template dell’app TapHome. Accedi a portal.taphome.com, scarica l’XML di questo template e importalo nel Core. Un modulo importato in precedenza dal template ufficiale SolaX Hybrid X1/X3 Gen 4 non si aggiorna da solo: importa questo template come nuovo modulo oppure correggi gli script del vecchio modulo come indicato nella tabella della sezione «Cosa corregge questo template» più avanti.
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 |
Collega 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
- Collegamento del pin 6 (GND) raccomandato per una comunicazione affidabile
Il manuale SolaX prescrive un cavo di rete CAT5E crimpato nel connettore RJ45 fornito con l’inverter e una lunghezza del cavo COM di massimo 30 m.
Il pin 3 (+13V) e il pin 6 (GND) non devono essere collegati tra loro. Isola i pin non utilizzati.
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 da questo template.
Per installazioni in cui il cablaggio RS-485 non è pratico, il template SolaX Inverter (Cloud API) fornisce il monitoraggio attraverso la piattaforma SolaxCloud via HTTPS, senza connessione fisica. Supporta tutti i tipi di inverter SolaX, non solo il Gen 4 Hybrid.
La modalità di ricarica e le impostazioni della carica notturna sono registri EEPROM dell’inverter (contrassegnati con ★ da SolaX, circa 1 milione di cicli di scrittura). Le operazioni di scrittura eccessive possono causare danni hardware irreversibili: non attivare mai su di essi una scrittura eseguita periodicamente. Questo template ha tutti gli script di scrittura disabilitati.
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. Il template lo richiede come unico parametro di importazione, Modbus Slave ID (predefinito 1)
- Baud rate – 19200 baud, il valore di fabbrica SolaX; anche il template usa 19200. Se l’inverter è stato impostato su un’altra velocità (ad esempio 9600), modifica l’impostazione dell’inverter oppure la velocità dell’interfaccia TapHome in modo che coincidano
- Formato dati – 8 bit dati, nessuna parità, 1 stop bit
Configurazione sul display dell’inverter: Menu > Setting > Advance Setting > Modbus. Imposta l’indirizzo slave e il baud rate. Le impostazioni avanzate richiedono la password dell’installatore, che puoi ottenere dal rivenditore. 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).
In TapHome il template viene poi importato sull’interfaccia RS-485 Modbus RTU del Core, impostata con la stessa velocità e lo stesso formato dati, indicando lo Slave ID 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 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 con il caricabatterie EV (valore 1). Assicurati che sia impostato su 0 (Modbus 485) per l’integrazione con TapHome.
Funzionalità del dispositivo
Monitoraggio della batteria
- Batteria (SOC) – legge lo stato di carica della batteria (A:0x001C) come percentuale, ogni 15 secondi. 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:0x0018) in gradi Celsius come valore con segno (Int16), quindi le temperature inferiori a 0 °C vengono mostrate correttamente. Polling ogni 80 secondi
Potenza FV solare
- PV1 – potenza DC in uscita dalla stringa FV 1 (A:0x000A), visualizzata in kW dopo la conversione /1000 da watt
- PV2 – potenza DC in uscita dalla stringa FV 2 (A:0x000B), visualizzata in kW dopo la conversione /1000 da watt
PV1 e PV2 sono valori semplici senza tipo di energia, quindi non vengono conteggiati due volte nell’Energy Dashboard.
Potenza di rete e misurazione dell’energia
- Purchase/Feed to Grid – potenza di rete istantanea (A:0x0046–0x0047, LittleEndianInt32) in kW, un valore semplice senza tipo di energia. I valori positivi indicano l’immissione in rete, i valori negativi il prelievo dalla rete. L’inverter ricava questo valore dal contatore o dal CT collegato
- Daily/Actual Energy – il contatore di produzione FV per l’Energy Dashboard. La sua potenza è PV1 + PV2 (A:0x000A + A:0x000B) in kW e il suo totale è l’energia FV totale (A:0x0094–0x0095, SolarEnergyTotal, unità di 0,1 kWh) in kWh. Nonostante il nome, il totale non si azzera di notte
- Total Energy – energia cumulativa totale erogata dalla porta AC dell’inverter (A:0x0052–0x0053, LittleEndianUint32, unità di 0,1 kWh), visualizzata in kWh
Modalità di ricarica e carica notturna
- Charger Use Mode – legge la modalità attiva del caricabatterie solare (H:0x008B): Self Use Mode (0), Feedin Priority (1), Backup Mode (2) o Manual Mode (3). Il registro di scrittura (H:0x001F) esiste nel template ma è commentato, quindi il dispositivo è in sola lettura
- SelfUse Night Charge – legge il target SOC superiore per la carica notturna in modalità Self Use (H:0x0094) come percentuale. Il registro di scrittura (H:0x0063) e il registro di abilitazione (H:0x0062) sono entrambi commentati, quindi la configurazione della carica notturna non può essere modificata tramite TapHome
Rilevamento guasti
Lo script di lettura del modulo monitora la modalità di funzionamento dell’inverter (A:0x0009) e due registri di errore. Ogni guasto ha un proprio codice di errore:
- Guasti Run mode – errore 1 quando la modalità di funzionamento è 3 (Fault), errore 2 quando è 4 (Permanent Fault)
- Codice di guasto dell’inverter (A:0x0040–0x0041, LittleEndianUint32) – 30 guasti individuali con codici 100–131 (100 + numero del bit), 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. I nomi dei guasti seguono la tabella X3 del protocollo SolaX
- Codice di errore del gestore (A:0x0043) – codici 200–211 (200 + numero del bit) per guasti di tipo di potenza, errori EEPROM, problemi dei sensori NTC, temperatura della batteria bassa/alta, guasti del contatore, del relè di bypass e della ventola. Port OC Warning (201) viene segnalato come avviso, gli altri come errori
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.
Cosa corregge questo template
Il template ufficiale TapHome SolaX Hybrid X1/X3 Gen 4 legge diversi registri in modo errato (verificato sul protocollo Modbus SolaX V3.21 e V001.02). Questo template li corregge:
| Dove | Template ufficiale | Questo template | Effetto dell’errore nel template ufficiale |
|---|---|---|---|
| Modulo — script di lettura | var x3 := MODBUSR(A, 0x0040, Uint32); | VAR inv := 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 — totale | MODBUSR(A, 0x50, UInt16) /10 | MODBUSR(A, 0x0094, LittleEndianUint32) / 10 | 0x0050 è un contatore giornaliero della porta AC dell’inverter 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 il contatore Daily/Actual Energy misura la produzione FV (PV1 + PV2), cioè ciò che si aspetta il suo tipo di energia nell’Energy Dashboard. PV1, PV2 e Purchase/Feed to Grid non hanno più un tipo di energia: sono valori semplici. Tutte le scritture restano disabilitate, come nel template ufficiale.
Risoluzione dei problemi
Nessuna comunicazione con l’inverter
- Verifica i collegamenti del cavo RS-485: A+ ad A+, B- a B-, GND a GND
- Controlla che il registro H:0x013E sia impostato a 0 (modalità Modbus 485, non EV Charger)
- Verifica che il baud rate corrisponda tra inverter e TapHome – il template usa 19200, il valore predefinito dell’inverter; con un inverter impostato a 9600 occorre modificare uno dei due lati
- Verifica che il Modbus Slave ID in TapHome corrisponda all’impostazione dell’inverter (predefinito: 1)
- Assicurati che nessun altro master Modbus sia collegato allo stesso bus RS-485 – Modbus supporta un solo master
I valori sembrano quelli del template ufficiale
Se Total Energy è 100× troppo piccolo, Daily/Actual Energy scende a 0 ogni notte o Battery Temperature mostra circa 65535 °C sotto zero, il modulo esegue ancora gli script del template ufficiale. Un modulo non si aggiorna da solo da un template più recente: importa questo template come nuovo modulo oppure correggi gli script come indicato nella tabella sopra.
Lettura di Batteria (SOC) errata
Il registro di Batteria (SOC) (A:0x001C) 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, verifica che il dispositivo TapHome sia configurato come ingresso analogico (intervallo 0–1, non 0–100).
Convenzione dei segni della potenza di rete
Purchase/Feed to Grid (A:0x0046) utilizza una convenzione dei segni in cui i valori positivi significano immissione (esportazione in rete) e i valori negativi significano prelievo (consumo dalla rete). L’inverter ricava questo valore dal suo contatore o CT, quindi dipende da un contatore o CT collegato correttamente.
Differenze tra X1 e X3
Il template legge la potenza FV (A:0x000A e A:0x000B) invece del registro della potenza di rete X1, quindi il contatore Daily/Actual Energy funziona allo stesso modo sui modelli X1 e X3. I nomi dei guasti seguono la tabella X3 del protocollo SolaX. Su un inverter X1 alcuni bit di guasto indicano guasti diversi: il bit 9 e la maggior parte dei bit dal 15 in su (ad esempio, il bit 15 è Missed CT Fault su X1 ma Off-grid Overload su X3).
SolaX