- 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 quote all'output dei tag per evitare esecuzione come comando
- Risolve errore 'No such file or directory' quando tag contengono '/'
- Output ora corretto: echo "Tags:" && echo "${{ tags }}"
- Previene interpretazione shell dei tag come path/comandi
- Rimosse opzioni cache-from e cache-to type=gha
- GitHub Actions Cache non supportata da Gitea Actions
- Risolve errore 'dial tcp 172.16.8.2:36207: i/o timeout'
- Build ora procede senza cache (più lento ma funzionante)
- Possibile ottimizzazione futura: cache locale o registry
- Cambiato FROM debian:bullseye -> debian:bookworm
- Risolve errore 'no match for platform in manifest' per arm/v6
- Debian Bookworm (12) è la versione stable corrente
- Supporto multi-arch completo per linux/arm/v6,v7,arm64
- Bullseye è ora oldstable con supporto multi-arch limitato
- Aggiunto step 'Prepare image name' per gestire nome immagine dinamico
- Se secrets configurati: usa username/ha-voltronic-mqtt
- Se secrets mancanti: usa local/ha-voltronic-mqtt (build locale)
- Corretto flag SHOULD_PUSH basato su presenza secrets
- Risolto errore 'invalid tag' quando DOCKER_USERNAME è vuoto
Ora il workflow esegue build anche senza secrets configurati
- 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
- 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
- Aggiunto id 'docker_build' allo step di build
- Quotato output tags per evitare errore 'command not found'
- Aggiunto output del digest dell'immagine
- Migliorato formato output con labels descrittivi
- Aggiunto env REGISTRY: 192.168.1.37:30008 per bypassare Cloudflare
- Configurato buildx per supportare HTTP insecure sul registry locale
- Aggiornato docker meta per usare registry IP diretto
- Modificato login per autenticarsi su 192.168.1.37:30008
- Risolto errore 413 Payload Too Large causato da Cloudflare
Il binario inverter_poller viene già compilato direttamente in bin/ da cmake/make, il comando 'mv inverter_poller bin/' causava errore perché il file non esisteva nella directory corrente.
- Debian Bullseye non supporta arm/v6 (solo Pi Zero W v1 e Pi 1)
- Mantenuti arm/v7 e arm64 (compatibili con Pi 3, 4, 5)
- Pi 5 a 64-bit usa linux/arm64
- Modificato docker-build.yml e docker-cleanup.yml
- Il token automatico github.token non ha permessi sufficienti
- Aggiunta guida SETUP_GITEA_TOKEN.md per configurazione
- Modificato docker-build.yml per usare gitea.home-nas-ds.org invece di Docker Hub
- Modificato docker-cleanup.yml per autenticazione con registry Gitea
- Usato github.token automatico invece di secrets esterni
- Aggiornata documentazione per riflettere i cambiamenti
Since I am not using Influx as a DB of my HomeAssistant setup, I wanted a way to bring the data there. Another issue is that I used another script to gather the data and hence have other naming conventions on my dashboards. Therefore the name of the measurements are now part of the config JSON file. This could be an idea adopted to MQTT as well.