Implementazione supporto multi-inverter paralleli e fix comunicazione MQTT
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 1m15s

- 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
This commit is contained in:
Pi Developer
2026-01-31 16:15:26 +01:00
parent 8863c77f6f
commit 547537e761
18 changed files with 1842 additions and 70 deletions
+235
View File
@@ -0,0 +1,235 @@
# Report Compatibilità: Voltronic Axpert MKS IV
> 🔬 **UPDATE 31/01/2026**: Test comandi alternativi completati! Vedere [MKS_IV_TEST_RESULTS.md](./MKS_IV_TEST_RESULTS.md) per report dettagliato con 22 comandi testati.
>
> **Risultato chiave**: ✅ Comando **QGMN funziona** e identifica modello come "054"
---
## 📋 Informazioni Inverter
- **Modello**: Voltronic Axpert MKS IV
- **Model Code**: 054 (identificato via QGMN)
- **Protocollo**: RS232 (compatibile hardware-wise)
- **Serie**: MKS (Modern King Series)
- **Compatibilità software**: ❌ PROTOCOLLO PROPRIETARIO (solo 1/22 comandi funzionanti)
## ✅ Verifica Configurazione Attuale
### 1. Baudrate
**Status**: ✅ CORRETTO
- **Configurato**: 2400 baud
- **Test eseguito**: Provati 2400, 9600, 19200, 38400, 115200
- **Risultato**: L'inverter risponde su 2400 baud (riceve NAK ma comunica)
### 2. Protocollo Seriale
**Status**: ✅ CORRETTO
- **Data bits**: 8
- **Parity**: None
- **Stop bits**: 1
- **Flow control**: None
- **Configurazione**: 2400 8N1 ✓
### 3. Codice Sorgente
**Status**: ✅ COMPATIBILE
Il codice è basato su:
- Skyboo's implementation per Axpert MEX
- Protocol standard Voltronic/Axpert/MPPSolar
- Supporta comandi: QPIGS, QPIRI, QMOD, QPIWS
**File rilevanti**:
- `sources/inverter-cli/main.cpp` - Entry point
- `sources/inverter-cli/inverter.cpp` - Comunicazione seriale (2400 baud, 8N1)
- `config/inverter.conf` - Buffer sizes configurati
## ❌ Problema Rilevato
### Sintomo: NAK Response
L'inverter risponde con **(NAKs** (Negative Acknowledge) a tutti i comandi.
**Hex ricevuto**: `28 4E 41 4B 73 73 0d` = `(NAKss\r`
### Possibili Cause Specifiche per MKS IV
#### 1. 🔴 Protocollo P18 vs P17
Il **MKS IV potrebbe usare il protocollo P18** (più recente) invece del P17.
**Differenze P18**:
- Comandi leggermente diversi
- CRC calculation potrebbe essere diverso
- Alcuni comandi potrebbero avere prefissi diversi
**Test da fare**:
```bash
# Prova questi comandi P18:
QPI # Protocol ID
QVFW # Main CPU Firmware version
QVFW2 # Another CPU firmware version
```
#### 2. 🔴 Device Type Setting
Alcuni MKS IV richiedono inizializzazione o handshake specifico prima di accettare comandi.
**Possibili soluzioni**:
- Inviare comando di inizializzazione
- Attendere più tempo dopo apertura porta
- Inviare sequenza di "wake up"
#### 3. 🔴 RS232 vs USB-HID
Il MKS IV potrebbe preferire comunicazione USB-HID invece di RS232 emulato.
**Test**:
```bash
ls -la /dev/hidraw* # Verifica se esiste device HID
```
Nel tuo caso: **Nessun /dev/hidraw** trovato
#### 4. 🔴 Cable Type
Il MKS IV potrebbe richiedere:
- **Cavo RS232 diretto** (non USB-to-Serial converter)
- **Cavo speciale Voltronic** con pin-out specifico
**Pin-out standard RS232**:
```
Pin 2: RX (Receive)
Pin 3: TX (Transmit)
Pin 5: GND (Ground)
```
Alcuni inverter richiedono anche DTR/RTS.
## 🔧 Soluzioni Suggerite
### Soluzione 1: Test con Comandi P18
Modifica `sources/inverter-cli/main.cpp` per provare comandi diversi:
```cpp
// In main.cpp, test raw commands:
// inverter_poller -r QPI
// inverter_poller -r QVFW
// inverter_poller -r QPIGS
```
### Soluzione 2: Controllo Cavo/Connessione
1. **Verifica LED inverter**: Alcuni MKS IV hanno LED che indicano comunicazione attiva
2. **Prova porta RS232 fisica** invece di USB-to-Serial
3. **Controlla pin-out cavo**: Alcuni cavi economici non hanno tutti i pin collegati
### Soluzione 3: Software di Test Ufficiale
Voltronic fornisce **WatchPower** software per Windows:
- Scarica da sito ufficiale Voltronic
- Testa comunicazione su Windows per verificare hardware
- Controlla quale porta/baudrate usa il software ufficiale
### Soluzione 4: Modifica CRC o Timing
Alcuni MKS IV hanno timing più stretto:
```cpp
// In inverter.cpp, dopo write():
usleep(200000); // Aumenta da 100ms a 200ms
// Oppure aumenta timeout read:
timeout.tv_sec = 5; // Da 2 a 5 secondi
```
## 📊 Compatibilità Codice
### ✅ Supporto Dichiarato
Il progetto dichiara supporto per:
- Voltronic Power Axpert ✓
- MPPSolar PIP ✓
- Voltacon ✓
- Effekta ✓
- **OEM Inverters** ✓
### ⚠️ MKS IV Specificità
Il **MKS IV** è una versione più recente che potrebbe avere:
- Protocollo aggiornato (P18)
- Comandi extended
- Buffer sizes diversi
**Riferimento manuale**: `/manual/HS_MS_MSX_RS232_Protocol_20140822_after_current_upgrade.pdf`
Questo manuale è del 2014 e potrebbe **NON includere** il protocollo MKS IV.
## 🎯 Piano d'Azione
### Step 1: Verifica Hardware (PRIORITÀ ALTA)
```bash
# 1. Test con software ufficiale Voltronic su Windows (se disponibile)
# 2. Verifica LED comunicazione su inverter
# 3. Prova cavo RS232 diverso
# 4. Controlla manual MKS IV per pin-out specifico
```
### Step 2: Test Comandi Alternativi
```bash
# Test comandi P18:
cd /home/pi/Progetti/sources/inverter-cli
./bin/inverter_poller -r QPI
./bin/inverter_poller -r QVFW
./bin/inverter_poller -r QPIRI
./bin/inverter_poller -r QMOD
```
### Step 3: Modifica Codice
Se comandi standard non funzionano, potrebbe essere necessario:
1. Aggiornare CRC calculation per P18
2. Modificare timing/delay
3. Implementare handshake iniziale
### Step 4: Community Research
Cerca su forum:
- http://forums.aeva.asn.au/viewtopic.php?t=4332
- GitHub issues del progetto
- Forum Voltronic/Axpert per MKS IV specifico
## 📚 Risorse
### Documentazione Progetto
- `documentation/CODE_ARCHITECTURE.md` - Architettura completa
- `documentation/AUTO_DISCOVERY.md` - Feature auto-discovery
- `documentation/DEBUG.md` - Guida debugging
### Manuale Protocollo
- `/manual/HS_MS_MSX_RS232_Protocol_20140822_after_current_upgrade.pdf`
- ⚠️ Potrebbe non coprire MKS IV (2014)
### Forum & Support
- AEVA Forum: http://forums.aeva.asn.au/viewtopic.php?t=4332
- GitHub: https://github.com/ned-kelly/docker-voltronic-homeassistant
- Skyboo original: https://skyboo.net/2017/03/monitoring-voltronic-power-axpert-mex-inverter-under-linux/
## 🔍 Log Test Eseguiti
```
Date: 31 gennaio 2026
Device: /dev/ttyUSB0 (FTDI USB Serial Device)
Test: Baudrate detection
Results:
- 2400: NAK response (inverter comunica ma non accetta comandi)
- 9600: No response
- 19200: No response
- 38400: No response
- 115200: No response
Conclusion:
- Baudrate corretto: 2400 ✓
- Protocollo: Possibile incompatibilità con MKS IV
- Hardware: Funzionante (riceve e risponde)
- Software: Necessita verifica comandi P18
```
## ⏭️ Next Steps
1. **IMMEDIATO**: Verifica su manual MKS IV se esiste protocollo P18
2. **PRIORITÀ ALTA**: Test con software ufficiale Voltronic per confermare hardware
3. **RICERCA**: Cerca su forum/GitHub per implementazioni MKS IV specific
4. **FALLBACK**: Contatta support Voltronic per specifiche protocollo MKS IV
---
**Autore**: Generated by GitHub Copilot
**Data**: 31 gennaio 2026
**Versione Codice**: 2.0 (con auto-discovery)