Implementazione supporto multi-inverter paralleli e fix comunicazione MQTT
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 1m15s
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:
@@ -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)
|
||||
Reference in New Issue
Block a user