feat: Ottimizzazione performance e gestione credenziali MQTT
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 6m49s

- Rimosso credenziali hardcoded da mqtt.json (devono essere fornite solo da ENV)
- Ottimizzato mqtt-push.sh: caricamento config MQTT una sola volta all'avvio
- Ridotto I/O con redirect stderr su /dev/null
- Fix errore sed con device path contenente slash
- Aggiunto controllo esecuzione update_mqtt_config solo se ENV impostate
- Ridotto consumo CPU da 25% a ~0-2%

Nuovo:
- Documentazione multi-inverter completa (MULTI_INVERTER.md)
- Aggiornato README con sezione performance e multi-inverter
- Aggiunto .gitignore per file cache/backup runtime

Fixes:
- Bug sed delimiter con device path /dev/ttyUSB*
- Letture ripetute mqtt.json con jq (30+ per ciclo)
- Credenziali non aggiornate da ENV se mqtt.json esiste
This commit is contained in:
Pi Developer
2026-01-31 17:45:53 +01:00
parent 9c911a90c4
commit 36743a59c8
8 changed files with 520 additions and 83 deletions
+60 -1
View File
@@ -101,7 +101,66 @@ environment:
- SKIP_DISCOVERY=false # Skip discovery, use inverter.conf values
```
**📖 See [AUTO_DISCOVERY.md](AUTO_DISCOVERY.md) for complete documentation** including:
**📖 See [AUTO_DISCOVERY.md](documentation/AUTO_DISCOVERY.md) for complete documentation** including:
- How auto-discovery works
- Environment variable reference
- Multi-inverter setups
- Troubleshooting guide
- Migration from older versions
### 🔌 Multi-Inverter Support
Il sistema supporta il monitoraggio di **più inverter in parallelo**. Ogni inverter richiede un container separato con:
- Device seriale dedicato (`/dev/ttyUSB0`, `/dev/ttyUSB1`, ecc.)
- Nome device MQTT unico (`inverter1`, `inverter2`, ecc.)
- Directory config separata per ogni inverter
**📖 Guida completa:** [MULTI_INVERTER.md](documentation/MULTI_INVERTER.md)
**Esempio configurazione 2 inverter:**
```yaml
services:
voltronic-inverter1:
environment:
- INVERTER_DEVICE=/dev/ttyUSB0
- MQTT_DEVICENAME=inverter1
- MQTT_USERNAME=mqtt_user
- MQTT_PASSWORD=your_password
volumes:
- ./config/inverter1/:/etc/inverter/
devices:
- /dev/ttyUSB0:/dev/ttyUSB0:rwm
voltronic-inverter2:
environment:
- INVERTER_DEVICE=/dev/ttyUSB1
- MQTT_DEVICENAME=inverter2
- MQTT_USERNAME=mqtt_user
- MQTT_PASSWORD=your_password
volumes:
- ./config/inverter2/:/etc/inverter/
devices:
- /dev/ttyUSB1:/dev/ttyUSB1:rwm
```
**Topic MQTT risultanti:**
- Inverter 1: `homeassistant/sensor/inverter1_Battery_voltage`, `inverter1_PV_in_watts`, ecc.
- Inverter 2: `homeassistant/sensor/inverter2_Battery_voltage`, `inverter2_PV_in_watts`, ecc.
### ⚡ Performance Optimization (v2.0+)
Il container è stato ottimizzato per ridurre il consumo di risorse:
- **CPU**: ~0-2% per inverter (spike durante polling ogni 30s)
- **RAM**: ~10-15 MB per inverter
- **Network**: ~1-2 KB/s per inverter
**Ottimizzazioni implementate:**
- Caricamento configurazione MQTT una sola volta all'avvio
- Eliminazione letture ripetute file con `jq`
- Redirect stderr per ridurre I/O
- Timeout su operazioni inverter per evitare hang
**📖 See [AUTO_DISCOVERY.md](documentation/AUTO_DISCOVERY.md) for complete documentation** including:
- How auto-discovery works
- Environment variable reference
- Multi-inverter setups