Files
docker-voltronic-homeassistant/documentation/README.md
T
Pi Developer 6af9fcad7e
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 4m42s
feat(v2.0): Auto-discovery, correzione bug critici, e documentazione completa
🆕 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

4.2 KiB

VS Code Configuration

Questa directory contiene le configurazioni per sviluppo e debug del progetto in VS Code.

File di Configurazione

launch.json

Configurazioni di debug per inverter-cli con GDB:

  • Debug con build Release
  • Debug con build completa (simboli debug)
  • Debug in modalità loop
  • Debug comandi raw
  • Attach a processo esistente

tasks.json

Task automatizzati per:

  • Build (Release/Debug)
  • Clean e Rebuild
  • Esecuzione diretta
  • Gestione container Docker

c_cpp_properties.json

Configurazione IntelliSense per C/C++:

  • Include paths
  • Standard C++11
  • Compiler settings

settings.json

Impostazioni workspace:

  • Configurazione CMake
  • File associations
  • Esclusioni ricerca e explorer

extensions.json

Estensioni raccomandate per il progetto:

  • C/C++ tools
  • CMake tools
  • Docker
  • ShellCheck
  • YAML support

Quick Start

Prima Build

  1. Apri il progetto in VS Code:

    code /home/pi/Progetti
    
  2. Installa estensioni raccomandate (popup VS Code)

  3. Build del progetto:

    • Premi Ctrl+Shift+B per build default
    • Oppure Tasks: Run Taskbuild-inverter-cli-debug

Debug Rapido

  1. Apri sources/inverter-cli/main.cpp
  2. Imposta breakpoint (F9 su riga)
  3. Premi F5 e seleziona configurazione debug
  4. Usa F10 (step over) e F11 (step into)

Testare Modifiche

  1. Modifica codice in sources/inverter-cli/
  2. Build: Ctrl+Shift+B
  3. Run: Tasks → run-inverter-cli-once
  4. Verifica output JSON

Documentazione Dettagliata

Vedi DEBUG.md per guida completa al debug e troubleshooting.

Configurazioni Disponibili

Debug Configurations (F5)

  • (gdb) Debug inverter_poller - Debug rapido con Release build
  • (gdb) Debug inverter_poller - Run Once with Debug - Debug completo, esecuzione singola
  • (gdb) Debug inverter_poller - Loop Mode - Debug in modalità continua
  • (gdb) Debug inverter_poller - Raw Command - Debug comandi specifici
  • (gdb) Attach to running inverter_poller - Attach a processo esistente

Build Tasks (Ctrl+Shift+B)

  • build-inverter-cli (default) - Build Release ottimizzato
  • build-inverter-cli-debug - Build con simboli debug
  • clean-inverter-cli - Pulizia file di build
  • rebuild-inverter-cli - Clean + Build

Run Tasks

  • run-inverter-cli-once - Esegui una volta
  • run-inverter-cli-loop - Esegui in loop
  • docker-build - Build immagine Docker
  • docker-run - Avvia container
  • docker-logs - Visualizza log container
  • docker-stop - Ferma container

Shortcuts Utili

Shortcut Azione
F5 Start Debugging
Ctrl+F5 Run Without Debugging
F9 Toggle Breakpoint
F10 Step Over
F11 Step Into
Shift+F11 Step Out
Ctrl+Shift+B Run Build Task
Ctrl+Shift+P Command Palette
Ctrl+ ` Toggle Terminal

Estensioni Consigliate

Essenziali

  • C/C++ - IntelliSense, debugging, browsing
  • CMake Tools - Integrazione CMake

Utili

  • Docker - Gestione container
  • ShellCheck - Linting script bash
  • YAML - Syntax per configurazioni

Opzionali

  • GitHub Copilot - AI code assistant
  • GitLens - Git supercharged

Troubleshooting

IntelliSense non funziona

  1. Ricarica window: Ctrl+Shift+P → "Reload Window"
  2. Verifica estensione C/C++ installata
  3. Build il progetto almeno una volta

GDB non trovato

sudo apt-get install gdb

Permission denied su device

sudo usermod -a -G dialout $USER
# Logout e login necessari

Task build fallisce

cd sources/inverter-cli
rm -rf CMakeFiles CMakeCache.txt
cmake . && make

Tips

  1. Multiple Debug Windows: Puoi avere più configurazioni debug attive contemporaneamente
  2. Watch Variables: Usa il pannello Watch per monitorare variabili durante debug
  3. Debug Console: Esegui comandi GDB direttamente nel Debug Console
  4. Logpoints: Usa logpoints invece di printf per non modificare codice

Risorse