- Rimosso vecchio topic homeassistant/sensor/voltronic/config all'avvio
- Aggiunto flag -r (retain) a tutti i discovery topics
- MQTT init eseguito immediatamente all'avvio + ogni 5 minuti
- Aggiunto unique_id e device info a tutti i sensori per HA
- mqtt-subscriber ora ascolta su 3 topic:
- homeassistant/sensor/voltronic/command (legacy)
- homeassistant/sensor/voltronic_inv1_raw_cmd/command
- homeassistant/sensor/voltronic_inv2_raw_cmd/command
- Subscriber con output verbose e timestamp
- Discovery topics ora persistono dopo restart broker MQTT
Timing verificato:
- Init all'avvio: immediato
- Re-init periodico: ogni 5 minuti (300s)
- Data push: ogni 30 secondi
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 timeout 15s al parallel discovery per evitare blocchi
- mqtt-init-parallel.sh in stile originale semplice
- Per ogni inverter scoperto: registra topic discovery (voltronic_inv1_*, inv2_*, ...)
- Discovery topics ogni 10 minuti invece di 5
- Fallback automatico a single-mode se timeout o count=0
- Mantiene la semplicità dello script originale
Il parallel discovery testa QPGS0-9 per trovare inverter configurati in parallelo.
Se timeout o nessun inverter trovato, usa modalità standard.
- Modificato entrypoint.sh per rilevare automaticamente inverter paralleli
- Usa flag -p per parallel discovery (testa QPGS0-9)
- Script mqtt-push-parallel.sh per pubblicare dati di ogni inverter
- Script mqtt-init-parallel.sh per discovery topics (ogni 10 min)
- Naming: voltronic_inv1, voltronic_inv2, ecc.
- Fallback automatico a single-mode se PARALLEL_COUNT=0
Nota: Il parallel discovery richiede che inverter supportino comandi QPGS
- 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
- Aggiunto check all'avvio per verificare esistenza inverter.conf e mqtt.json
- Se mancanti, crea file di default automaticamente
- Risolve problema volume mount che sovrascrive file copiati in build
- Config default con valori standard funzionanti
- ENV variables sovrascrivono comunque i default tramite update_mqtt_config()
Ora il container parte anche con directory ./config vuota
- Aggiunto supporto ENV variables nel Dockerfile:
* INVERTER_DEVICE, MQTT_SERVER, MQTT_PORT, MQTT_TOPIC
* MQTT_DEVICENAME, MQTT_USERNAME, MQTT_PASSWORD
* FORCE_DISCOVERY, SKIP_DISCOVERY
- Implementata funzione update_mqtt_config() in entrypoint.sh
* Aggiorna automaticamente mqtt.json da ENV variables all'avvio
* Backup automatico configurazione originale
- Fix workflow Docker build:
* Login Docker Hub solo se secrets configurati
* Push solo se secrets disponibili (evita errori CI/CD)
* Build funziona anche senza secrets (utile per test locali)
- Aggiornato docker-compose.yml con esempio ENV variables
- Creata documentazione completa DOCKER_SETUP.md:
* Guida configurazione variabili d'ambiente
* Esempi docker-compose e docker run
* Guida configurazione secrets Gitea
* Troubleshooting e health check
Ora è possibile configurare completamente il container senza modificare file