547537e761
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
278 lines
8.7 KiB
Markdown
278 lines
8.7 KiB
Markdown
# Quick Reference - Test Loop & MQTT Configuration
|
|
|
|
## 🔧 Configurazione MQTT Server
|
|
|
|
### File di Configurazione
|
|
|
|
**Development:**
|
|
```
|
|
/home/pi/Progetti/config/mqtt.json
|
|
```
|
|
|
|
**Container (Production):**
|
|
```
|
|
/etc/inverter/mqtt.json
|
|
```
|
|
|
|
### Parametri Chiave
|
|
|
|
```json
|
|
{
|
|
"server": "[HA_MQTT_IP]", // ← Indirizzo IP Home Assistant
|
|
"port": "1883", // Porta MQTT standard
|
|
"topic": "homeassistant", // Topic base
|
|
"devicename": "voltronic", // Nome device (prefix topic)
|
|
"username": "", // Username MQTT (se richiesto)
|
|
"password": "", // Password MQTT (se richiesto)
|
|
"clientid": "voltronic_...", // Client ID univoco
|
|
"influx": {
|
|
"enabled": "false", // InfluxDB (opzionale)
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
### Modificare la Configurazione
|
|
|
|
```bash
|
|
# Editare il file
|
|
nano /home/pi/Progetti/config/mqtt.json
|
|
|
|
# Cambiare l'IP del server MQTT
|
|
# Sostituire [HA_MQTT_IP] con l'IP reale di Home Assistant
|
|
# Esempio: "server": "192.168.1.100"
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 Test Loop - Simulazione Container
|
|
|
|
### Script Principale
|
|
|
|
```bash
|
|
/home/pi/Progetti/sources/inverter-mqtt/test-loop-parallel.sh
|
|
```
|
|
|
|
### Esecuzione Manuale
|
|
|
|
**Modalità interattiva (infinito):**
|
|
```bash
|
|
bash /home/pi/Progetti/sources/inverter-mqtt/test-loop-parallel.sh
|
|
```
|
|
|
|
**Modalità con limiti:**
|
|
```bash
|
|
# 5 iterazioni con intervallo 10 secondi
|
|
LOOP_INTERVAL=10 MAX_ITERATIONS=5 bash test-loop-parallel.sh
|
|
|
|
# 2 iterazioni con intervallo 5 secondi (test rapido)
|
|
LOOP_INTERVAL=5 MAX_ITERATIONS=2 bash test-loop-parallel.sh
|
|
```
|
|
|
|
### Variabili d'Ambiente
|
|
|
|
| Variabile | Descrizione | Default |
|
|
|-----------|-------------|---------|
|
|
| `LOOP_INTERVAL` | Secondi tra iterazioni | 30 |
|
|
| `MAX_ITERATIONS` | Numero massimo iterazioni (0=infinito) | 0 |
|
|
|
|
### Fasi del Test Loop
|
|
|
|
#### **Phase 1: Initial Discovery** (eseguito una volta all'avvio)
|
|
|
|
1. **Buffer Sizes Auto-Discovery** (`-a`)
|
|
- Rileva dimensioni corrette per QMOD, QPIGS, QPIRI, QPIWS
|
|
- Output: `DISCOVERY_QMOD=5`, `DISCOVERY_QPIGS=110`, etc.
|
|
|
|
2. **Parallel Inverters Discovery** (`-p`)
|
|
- Cerca inverter in configurazione parallela (QPGS0-QPGS9)
|
|
- Filtra serial validi (no "00000000000000")
|
|
- Filtra duplicati
|
|
- Output: `PARALLEL_COUNT=2`, `INVERTER_1_SERIAL=...`, etc.
|
|
|
|
#### **Phase 2: Main Polling Loop** (ripetuto ogni N secondi)
|
|
|
|
1. **Test Standard Commands** (inverter locale via USB)
|
|
- QPIGS - General status
|
|
- QPIRI - Configuration
|
|
- QMOD - Operating mode
|
|
- QPIWS - Warning status
|
|
|
|
2. **Read Parallel Inverters** (tutti gli inverter via QPGS)
|
|
- Per ogni inverter trovato:
|
|
- Legge dati QPGS
|
|
- Estrae: Mode, Grid Voltage, Battery Voltage, Load Watts
|
|
|
|
3. **MQTT Push** (pubblica su Home Assistant)
|
|
- Esegue `mqtt-push-parallel.sh`
|
|
- Pubblica topic separati per ogni inverter
|
|
- Formato: `homeassistant/sensor/voltronic_inv1_*`
|
|
|
|
---
|
|
|
|
## 📊 Topic MQTT Pubblicati
|
|
|
|
### Per Ogni Inverter
|
|
|
|
```
|
|
homeassistant/sensor/voltronic_inv1_serial → "92932111105114"
|
|
homeassistant/sensor/voltronic_inv1_mode → "B" (Battery mode)
|
|
homeassistant/sensor/voltronic_inv1_AC_grid_voltage → "229.8"
|
|
homeassistant/sensor/voltronic_inv1_AC_grid_frequency → "50.0"
|
|
homeassistant/sensor/voltronic_inv1_AC_out_voltage → "229.5"
|
|
homeassistant/sensor/voltronic_inv1_AC_out_frequency → "49.9"
|
|
homeassistant/sensor/voltronic_inv1_Load_va → "481"
|
|
homeassistant/sensor/voltronic_inv1_Load_watt → "465"
|
|
homeassistant/sensor/voltronic_inv1_Load_pct → "8"
|
|
homeassistant/sensor/voltronic_inv1_Battery_voltage → "53.9"
|
|
homeassistant/sensor/voltronic_inv1_Battery_charge_current → "4"
|
|
homeassistant/sensor/voltronic_inv1_Battery_capacity → "100"
|
|
homeassistant/sensor/voltronic_inv1_PV_in_voltage → "246.8"
|
|
homeassistant/sensor/voltronic_inv1_PV_in_current → "4"
|
|
```
|
|
|
|
### Topic Sistema
|
|
|
|
```
|
|
homeassistant/sensor/voltronic_system_parallel_count → "2"
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 Debug Profiles VS Code
|
|
|
|
### 1. Parallel Discovery - Container Mode
|
|
**Profile:** `(gdb) Parallel Discovery - Container Mode`
|
|
- Esegue: `inverter_poller -p`
|
|
- Simula ambiente container (cwd="/")
|
|
- ENV: `INVERTER_DEVICE=/dev/ttyUSB0`
|
|
|
|
### 2. Test MQTT Parallel - Container Simulation
|
|
**Profile:** `(bash) Test MQTT Parallel - Container Simulation`
|
|
- Esegue: `mqtt-push-parallel.sh`
|
|
- Debug bash script MQTT
|
|
|
|
### 3. Test Loop - Full Simulation
|
|
**Profile:** `(bash) Test Loop - Full Simulation`
|
|
- Esegue: `test-loop-parallel.sh`
|
|
- 3 iterazioni con intervallo 10s
|
|
- Full simulation discovery + polling + MQTT
|
|
|
|
---
|
|
|
|
## 📝 Comandi Utili
|
|
|
|
### Discovery Manuale
|
|
|
|
```bash
|
|
# Buffer sizes discovery
|
|
sudo /home/pi/Progetti/sources/inverter-cli/bin/inverter_poller -a
|
|
|
|
# Parallel inverters discovery
|
|
sudo /home/pi/Progetti/sources/inverter-cli/bin/inverter_poller -p
|
|
|
|
# Test comando specifico
|
|
sudo /home/pi/Progetti/sources/inverter-cli/bin/inverter_poller -r QPGS0
|
|
```
|
|
|
|
### MQTT Push Manuale
|
|
|
|
```bash
|
|
# Single run
|
|
bash /home/pi/Progetti/sources/inverter-mqtt/mqtt-push-parallel.sh
|
|
|
|
# Con debug output
|
|
bash /home/pi/Progetti/sources/inverter-mqtt/mqtt-push-parallel.sh 2>&1 | less
|
|
```
|
|
|
|
### Monitoraggio MQTT (da altro terminal)
|
|
|
|
```bash
|
|
# Subscribe a tutti i topic
|
|
mosquitto_sub -h [HA_MQTT_IP] -t "homeassistant/#" -v
|
|
|
|
# Solo sensori voltronic
|
|
mosquitto_sub -h [HA_MQTT_IP] -t "homeassistant/sensor/voltronic_#" -v
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Output Esempio Test Loop
|
|
|
|
```
|
|
╔════════════════════════════════════════════════════════════════╗
|
|
║ VOLTRONIC PARALLEL INVERTER - TEST LOOP ║
|
|
╚════════════════════════════════════════════════════════════════╝
|
|
|
|
Mode: Development
|
|
Binary: /home/pi/Progetti/sources/inverter-cli/bin/inverter_poller
|
|
MQTT Config: /home/pi/Progetti/config/mqtt.json
|
|
Loop Interval: 30s
|
|
Max Iterations: ∞ (infinite)
|
|
MQTT Server: 192.168.1.100
|
|
|
|
╔════════════════════════════════════════════════════════════════╗
|
|
║ PHASE 1: INITIAL DISCOVERY ║
|
|
╚════════════════════════════════════════════════════════════════╝
|
|
|
|
[1.1] Buffer Sizes Auto-Discovery
|
|
✓ Buffer sizes discovered successfully
|
|
• QMOD: 5 bytes
|
|
• QPIGS: 110 bytes
|
|
• QPIRI: 103 bytes
|
|
• QPIWS: 40 bytes
|
|
|
|
[1.2] Parallel Inverters Discovery
|
|
✓ Found 2 parallel inverter(s)
|
|
• Inverter #1: Serial 92932111105114 (QPGS0)
|
|
• Inverter #2: Serial 96332205100144 (QPGS2)
|
|
|
|
╔════════════════════════════════════════════════════════════════╗
|
|
║ PHASE 2: MAIN POLLING LOOP ║
|
|
╚════════════════════════════════════════════════════════════════╝
|
|
|
|
═══════════════════════════════════════════════════════════════
|
|
Iteration #1 - 2026-01-31 15:25:35
|
|
═══════════════════════════════════════════════════════════════
|
|
[2.1] Testing standard commands (local inverter)
|
|
✓ QPIGS: OK (106 chars)
|
|
✓ QPIRI: OK (99 chars)
|
|
✓ QMOD: OK (1 chars)
|
|
✓ QPIWS: OK (36 chars)
|
|
|
|
[2.2] Reading parallel inverters data
|
|
✓ Inverter #1 (92932111105114): Mode=B, Grid=229.8V, Battery=53.6V, Load=0488W
|
|
✓ Inverter #2 (96332205100144): Mode=B, Grid=232.4V, Battery=53.6V, Load=0300W
|
|
|
|
[2.3] MQTT Push
|
|
✓ MQTT push completed
|
|
|
|
Waiting 30s until next iteration...
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Setup Rapido per Test
|
|
|
|
1. **Configura MQTT server:**
|
|
```bash
|
|
nano /home/pi/Progetti/config/mqtt.json
|
|
# Cambia "server": "[HA_MQTT_IP]" con IP reale
|
|
```
|
|
|
|
2. **Esegui test rapido (2 iterazioni):**
|
|
```bash
|
|
cd /home/pi/Progetti
|
|
LOOP_INTERVAL=5 MAX_ITERATIONS=2 bash sources/inverter-mqtt/test-loop-parallel.sh
|
|
```
|
|
|
|
3. **Verifica MQTT (in altro terminal):**
|
|
```bash
|
|
mosquitto_sub -h [HA_MQTT_IP] -t "homeassistant/sensor/voltronic_#" -v
|
|
```
|
|
|
|
4. **Per produzione (loop continuo):**
|
|
```bash
|
|
bash sources/inverter-mqtt/test-loop-parallel.sh
|
|
```
|