#!/bin/bash # Test script per verificare auto-discovery in locale # Simula il comportamento del container echo "=== Test Auto-Discovery Locale ===" echo "" # Configura le variabili come farebbe il container export INVERTER_DEVICE="${INVERTER_DEVICE:-/dev/ttyUSB1}" export FORCE_DISCOVERY="${FORCE_DISCOVERY:-false}" export SKIP_DISCOVERY="${SKIP_DISCOVERY:-false}" CONF_FILE="/etc/inverter/inverter.conf" DISCOVERY_FLAG="/etc/inverter/.discovery_done" INVERTER_BIN="./sources/inverter-cli/bin/inverter_poller" echo "Configurazione:" echo " Device: $INVERTER_DEVICE" echo " Binary: $INVERTER_BIN" echo " Force Discovery: $FORCE_DISCOVERY" echo " Skip Discovery: $SKIP_DISCOVERY" echo "" # Verifica che il binario esista if [ ! -f "$INVERTER_BIN" ]; then echo "✗ Errore: $INVERTER_BIN non trovato!" echo " Compila prima con: cd sources/inverter-cli && make" exit 1 fi # Verifica che il device esista if [ ! -e "$INVERTER_DEVICE" ]; then echo "✗ Errore: Device $INVERTER_DEVICE non trovato!" echo " Devices disponibili:" ls -la /dev/tty* 2>/dev/null | grep -E "USB|ttyS" exit 1 fi # Crea directory temporanea per il test TEST_DIR="/tmp/inverter-test-$$" mkdir -p "$TEST_DIR" echo "Directory test: $TEST_DIR" # Copia config originale if [ -f "./config/inverter.conf" ]; then cp ./config/inverter.conf "$TEST_DIR/inverter.conf" CONF_FILE="$TEST_DIR/inverter.conf" DISCOVERY_FLAG="$TEST_DIR/.discovery_done" echo "✓ Config copiata in $CONF_FILE" else echo "✗ Errore: config/inverter.conf non trovato!" exit 1 fi # Aggiorna device nella config temporanea sed -i "s|^device=.*|device=$INVERTER_DEVICE|g" "$CONF_FILE" echo "" echo "=== Esecuzione Auto-Discovery ===" echo "Questo prenderà circa 10-15 secondi..." echo "" # Esegui discovery DISCOVERY_OUTPUT=$("$INVERTER_BIN" -d -a 2>&1) echo "$DISCOVERY_OUTPUT" echo "" # Parse output QMOD=$(echo "$DISCOVERY_OUTPUT" | grep "DISCOVERY_QMOD=" | cut -d= -f2) QPIGS=$(echo "$DISCOVERY_OUTPUT" | grep "DISCOVERY_QPIGS=" | cut -d= -f2) QPIRI=$(echo "$DISCOVERY_OUTPUT" | grep "DISCOVERY_QPIRI=" | cut -d= -f2) QPIWS=$(echo "$DISCOVERY_OUTPUT" | grep "DISCOVERY_QPIWS=" | cut -d= -f2) SUCCESS=$(echo "$DISCOVERY_OUTPUT" | grep "DISCOVERY_SUCCESS=" | cut -d= -f2) echo "=== Risultati Discovery ===" if [ "$SUCCESS" = "true" ]; then echo "✓ SUCCESS!" echo "" echo "Valori scoperti:" echo " QMOD = $QMOD" echo " QPIGS = $QPIGS" echo " QPIRI = $QPIRI" echo " QPIWS = $QPIWS" echo "" # Salva risultati echo "device=$INVERTER_DEVICE" > "$DISCOVERY_FLAG" echo "qmod=$QMOD" >> "$DISCOVERY_FLAG" echo "qpigs=$QPIGS" >> "$DISCOVERY_FLAG" echo "qpiri=$QPIRI" >> "$DISCOVERY_FLAG" echo "qpiws=$QPIWS" >> "$DISCOVERY_FLAG" echo "timestamp=$(date -Iseconds)" >> "$DISCOVERY_FLAG" echo "Salvati in: $DISCOVERY_FLAG" echo "" cat "$DISCOVERY_FLAG" # Aggiorna config sed -i "s/^qmod=.*/qmod=$QMOD/g" "$CONF_FILE" sed -i "s/^qpigs=.*/qpigs=$QPIGS/g" "$CONF_FILE" sed -i "s/^qpiri=.*/qpiri=$QPIRI/g" "$CONF_FILE" sed -i "s/^qpiws=.*/qpiws=$QPIWS/g" "$CONF_FILE" echo "" echo "Config aggiornata:" grep -E "^(device|qmod|qpigs|qpiri|qpiws)=" "$CONF_FILE" echo "" echo "✓ Test completato con successo!" echo "" echo "Per applicare questi valori al tuo config/inverter.conf:" echo " cp $CONF_FILE ./config/inverter.conf" else echo "✗ FAILED!" echo "" echo "Controlla:" echo " 1. Inverter acceso" echo " 2. Cavo collegato correttamente" echo " 3. Device corretto: $INVERTER_DEVICE" echo " 4. Permessi device: ls -la $INVERTER_DEVICE" exit 1 fi echo "" echo "=== Test Lettura Dati ===" echo "Testo la lettura con i nuovi parametri..." echo "" # Test con -1 (run-once) TEST_OUTPUT=$("$INVERTER_BIN" -1 2>&1) echo "$TEST_OUTPUT" if echo "$TEST_OUTPUT" | grep -q '"mode":'; then echo "" echo "✓ Lettura dati OK! Output JSON valido." else echo "" echo "⚠ Attenzione: Output non sembra JSON valido" fi echo "" echo "=== Cleanup ===" echo "Directory test: $TEST_DIR" echo "Per rimuoverla: rm -rf $TEST_DIR"