2026-08-02 09:31 auch bei CTRL-C die 230V abschalten

This commit is contained in:
Dieter Lang 2026-08-02 09:32:09 +02:00
parent 31a212666b
commit 8cd2b1f737

18
main.go
View file

@ -7,6 +7,8 @@ import (
"os"
"strings"
"sync"
"os/signal"
"syscall"
"spannung/web" // Importiert Ihr eigenes web-Paket
@ -114,11 +116,25 @@ func main() {
}
// 8. SICHERHEITS-START: Alle USB-Relais initial zwingend ausschalten
// Wenn updateUsbRelaysStrict() fehlschlägt, bricht das Programm ab.
if err := updateUsbRelaysStrict(); err != nil {
log.Fatalf("[❌] KRITISCHER FEHLER: USB-Relais-Reset beim Start fehlgeschlagen! Programm gestoppt: %v", err)
}
// NEU: Signal-Handling für sauberes Herunterfahren einrichten
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-sigChan
fmt.Println("\n[⚠️] Programm-Abbruch erkannt! Schalte Relais 1 (Hauptschalter) sicher aus...")
mutex.Lock()
if pin, exists := relaisMap[1]; exists {
_ = pin.Out(gpio.Low)
}
mutex.Unlock()
os.Exit(0)
}()
// 9. Instanziierung des Webservers mit Übergabe der Callback-Funktionen
server := web.NewServer(config.WebPort, readVoltageCallback, toggleRelaisCallback, getRelaisStateCallback, callbackGetVersion, getVoltNamesCallback)