Commit Graph

21 Commits

Author SHA1 Message Date
Pi Developer 53899b0fac feat: Supporto multi-inverter in mqtt-init.sh con discovery topics
Build Docker Image for Raspberry Pi / build-and-push (push) Has started running
- Aggiornato mqtt-init.sh per supportare array INVERTER_DEVICES
- Registrazione discovery topics per ogni inverter (voltronic, voltronic2, ecc.)
- Aggiunto unique_id e device info per Home Assistant
- Flag retain sui config topics per persistenza
- Naming coerente con mqtt-push.sh (voltronic, voltronic2, voltronic3, ...)
- Echo output per debug registrazione topics
2026-02-02 23:17:50 +01:00
Pi Developer 519b6ef703 feat: Supporto multi-inverter nello stesso container
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 7m23s
- Implementato array parsing per INVERTER_DEVICES (separatore ':')
- Refactoring mqtt-push.sh con funzione process_inverter()
- Topic MQTT separati per ogni inverter (voltronic, voltronic2, voltronic3, ecc.)
- Aggiornate tutte le 33 metriche con devicename dinamico
- Fix parsing JSON con filtro grep per messaggi [POLL]
- Documentazione ENV variable INVERTER_DEVICES in docker-compose.yml

Esempio configurazione:
INVERTER_DEVICES=/dev/ttyUSB0:/dev/ttyUSB1:/dev/ttyUSB2
2026-01-31 18:19:06 +01:00
Pi Developer 36743a59c8 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
2026-01-31 17:45:53 +01:00
Pi Developer 9c911a90c4 Fix config files mancanti quando volume mount è vuoto
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 6m52s
- 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
2026-01-31 17:21:43 +01:00
Pi Developer c5645c0f2b Aggiunta configurazione tramite variabili d'ambiente e fix Docker Hub secrets
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 23s
- 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
2026-01-31 16:21:42 +01:00
Pi Developer 547537e761 Implementazione supporto multi-inverter paralleli e fix comunicazione MQTT
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
2026-01-31 16:15:26 +01:00
Pi Developer 6af9fcad7e feat(v2.0): Auto-discovery, correzione bug critici, e documentazione completa
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 4m42s
🆕 Funzionalità Auto-Discovery
- Aggiunto metodo AutoDiscoverBufferSizes() per rilevamento automatico QPIGS/QPIRI/QMOD/QPIWS
- Supporto variabili d'ambiente (INVERTER_DEVICE, MQTT_SERVER, etc.)
- Caching persistente buffer sizes in /cache/inverter.conf.cache
- Flag -a/--auto-discover per modalità auto-detection

🐛 Bug Fixes Critici
- **Parsing interi**: Aggiunta attemptAddSettingInt() con stoi() invece di stof()
  - Fix: stof('98') = 98.0f → 97 (int), ora stoi('98') = 98 direttamente
  - Applicato a: qpiri, qpiws, qmod, qpigs
- **Thread sync**: Aggiunto ups_qpiws_changed a main loop e condizione exit poll()
  - Fix: loop principale controllava solo 3 flag su 4, causava hang
  - Fix: thread poll() non usciva in runOnce perché mancava controllo QPIWS
- **Config accuracy**: Corretti buffer sizes (qpiri: 98→103, qpiws: 36→40)
  - Rimosso sources/inverter-cli/inverter.conf che sovrascriveva config globale
  - Validato con test: inverter_poller -1 completa in 6s con JSON completo

📚 Documentazione Completa
- Creato documentation/CODE_ARCHITECTURE.md (38KB)
  - Mappa logica variabili globali
  - Flusso esecuzione main() con diagrammi ASCII
  - Sequence diagram classe cInverter (poll, query, auto-discovery)
  - Thread synchronization diagrams
  - MQTT integration bash scripts flow
  - Mappa concettuale 5-layer system architecture
  - Error handling e performance optimizations
- Organizzati file .md in documentation/ (AUTO_DISCOVERY, IMPLEMENTATION, QUICKSTART, DEBUG)
- Aggiornato README.md con sezione v2.0 e indice documentazione
- Aggiornato .github/copilot-instructions.md con novità v2.0

🔧 Miglioramenti Build & CI/CD
- Gitea Actions per build multi-arch (arm/v6, arm/v7, arm64, amd64, 386)
- Configurazione VS Code completa (tasks, launch, debug GDB)
- Script test-autodiscovery.sh e test-device.sh

 Testing Validato
- inverter_poller -1 completa in 6 secondi
- Output JSON completo con tutte le metriche
- Exit pulito senza timeout (exit code 0)
- Tutte le 4 query QMOD/QPIGS/QPIRI/QPIWS funzionanti
2026-01-25 15:00:48 +01:00
tititg34 51b6a65973 Update mqtt-init.sh
temperature unit
2023-09-07 18:16:25 +02:00
RSd 037ce5f37b Make the clientid configurable 2021-06-03 14:47:59 +02:00
RSd108 5ba1072099 Use client identifier 2021-06-03 12:47:37 +02:00
RSd108 a3957d0326 Use client identifier 2021-06-03 12:46:01 +02:00
RSd108 9d646bad60 Use client identifier 2021-06-03 12:44:58 +02:00
Sam e82000d76f Fix IF check space issue for INFLUX_ENABLED 2020-12-03 18:14:42 +10:30
Martin Valov 515d8196f6 Added the enabled true|false flag in mqtt.json 2020-11-22 21:53:40 +01:00
Martin Valov 313c98c119 Added the possibility to write directly to Influx
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.
2020-11-08 22:38:50 +01:00
David Nedved d5dc992a62 remove duplicate battery voltage arg 2020-04-01 09:07:06 +10:00
David ebd3bbe2bc include support for MQTT username/password 2019-08-12 15:17:54 +10:00
David b1399bab57 remove retain from mqtt init message 2019-08-12 12:37:40 +10:00
David 0c2c945a96 update readme with more info around charging VLRA batteries 2019-08-09 16:17:37 +10:00
David 84cfa20aee fix missing paths and json formatting after refactor testing 2019-07-27 23:03:08 +10:00
David ccb999b8dc refactor for better support with ch341 and other unreliable rs232 adapters 2019-07-27 22:34:34 +10:00