2026-08-02 09:08 nur wechselseitiges Schalter der Frequenzen

This commit is contained in:
Dieter Lang 2026-08-02 09:08:36 +02:00
parent abef0122f3
commit 4cc53facc6

24
main.go
View file

@ -194,17 +194,18 @@ func toggleRelaisCallback(id int) {
for i := range config.Relais {
if config.Relais[i].ID == id {
// ERWEITERUNG: Prüft, ob das Wort "reserve" im Namen enthalten ist (Groß-/Kleinschreibung egal)
// 1. Sperre: Prüfen auf das Wort "Reserve"
if strings.Contains(strings.ToLower(config.Relais[i].Name), "reserve") {
fmt.Printf("[⚠️] Schalten blockiert: '%s' (ID %d) ist als Reserve geschützt!\n", config.Relais[i].Name, id)
return // Bricht die Funktion sofort ab, der Status ändert sich nicht
return
}
// Zustand des ausgewählten Relais umkehren
config.Relais[i].State = !config.Relais[i].State
if id == 1 {
// Hardware-Schaltung Raspberry Pi GPIO
// Hardware-Schaltung Raspberry Pi GPIO (Hauptschalter bleibt unabhängig)
pin, exists := relaisMap[id]
if exists {
if config.Relais[i].State {
@ -214,7 +215,20 @@ func toggleRelaisCallback(id int) {
}
}
} else {
// Hardware-Schaltung über Abacom USB-Karte via Schieberegister-Emulation
// ERWEITERUNG: Gegenseitige Verriegelung für USB-Relais
// Wenn das aktuelle USB-Relais auf EIN (true) geschaltet wurde,
// müssen alle ANDEREN USB-Relais (ID >= 2) zwangsweise auf AUS (false) gesetzt werden.
if config.Relais[i].State {
for j := range config.Relais {
if config.Relais[j].ID != id && config.Relais[j].ID >= 2 {
config.Relais[j].State = false
}
}
fmt.Printf("[🔄] Exklusiv-Modus: Relais ID %d aktiviert. Alle anderen USB-Relais wurden ausgeschaltet.\n", id)
}
// Hardware-Schaltung über Abacom USB-Karte via Schieberegister-Emulation aktualisieren
// Da updateUsbRelays() die gesamte Bitmaske liest, wird der neue Zustand sofort übertragen!
updateUsbRelays()
}
break