DATA[25] ('PV Input Current') nei reply QPGS è in realtà la corrente
in uscita dal SCC (Solar Charge Controller) verso la batteria, a tensione
batteria - NON la corrente ai pannelli PV a tensione PV.
Bug: PV_WATTS = DATA[14] (PV voltage ~246V) * DATA[25] (SCC current ~55A)
→ valore ~4-5x troppo alto (es. 246.8 * 55 = 13574W per inverter)
Fix: PV_WATTS = DATA[11] (battery voltage ~54V) * DATA[25] (SCC current)
→ valore corretto (es. 53.9 * 55 = 2964W per inverter)
Identico al comportamento di QPIGS in main.cpp:
pv_input_watts = scc_voltage * pv_input_current
con commento: 'input current is going to battery at battery voltage
(NOT at PV voltage)'
- Aggiunta funzione extractAndPublishAllData() con tutti i 33 parametri
- Parsing QPGS (19 params runtime) + QPIRI (8 params config) + PV_watts calcolato
- Fallback automatico a modalità standard se QPGS non disponibile
- Retry ridotto a 1 tentativo (2s delay) per performance
- Gestione errori NAK con messaggi informativi per utente
- Supporto bitmap status flags da QPGS (Load_on, SCC_on, AC_charge_on)
Note: Test mostrano che inverter attualmente in modalità Battery (QMOD=B)
risponde NAK a tutti i comandi eccetto QMOD. Necessaria verifica stato
fisico inverter o attivazione modalità parallela nel firmware.
FLUSSO IMPLEMENTATO:
1. All'avvio: registra discovery topics per 2 inverter (hardcoded)
2. Discovery topics ripetuti ogni 5 minuti (invece di 10)
3. Parallel discovery parametri con retry:
- Tenta discovery fino a 3 volte
- Se fallisce: attende 5s e riprova
- Se tutti i tentativi falliscono: assume 2 inverter
4. Estrazione dati ogni 30s per entrambi gli inverter
NAMING:
- Inverter 1: voltronic_inv1_*
- Inverter 2: voltronic_inv2_*
Discovery topics include tutti i 33 parametri per entrambi gli inverter
- Rimosso timeout e detection automatica
- Sempre modalità parallela forzata
- Default 2 inverter se parallel discovery fallisce
- Registra discovery per voltronic_inv1 e voltronic_inv2
NOTA: Se gli inverter non rispondono a QPGS, NON sono in modalità parallela.
Per gestire 2 inverter fisici separati, serve INVERTER_DEVICES=/dev/ttyUSB0:/dev/ttyUSB1
- Aggiunto supporto lettura inverter paralleli tramite comandi QPGS0-QPGS9
- Implementato discovery automatico inverter con filtro duplicati e serial invalidi
- Risolti bug critici comunicazione seriale:
* Fix buffer ExecuteCmd da 7 a 200 bytes
* Supporto terminatori CR e LF
* Modalità blocking con delay 500ms
* Lettura byte-by-byte per terminatore affidabile
- Implementato script MQTT per pubblicazione dati multi-inverter:
* mqtt-push-parallel.sh con topic separati per ogni inverter
* Fix autenticazione MQTT con username/password
* Aggiunto flag retain (-r) per persistenza dati
- Creato test-loop-parallel.sh per simulazione completa container
- Aggiornata documentazione con compatibilità MKS IV e guida test loop
- Aggiornati profili debug VS Code per bash e parallel discovery
- Configurazione MQTT completa con server reale (192.168.1.37:1883)
Sistema testato e funzionante con 2 inverter Voltronic Axpert MKS IV