diff --git a/Puffer_Speicher/module.php b/Puffer_Speicher/module.php index ae21732..9bdad80 100644 --- a/Puffer_Speicher/module.php +++ b/Puffer_Speicher/module.php @@ -123,21 +123,20 @@ class Puffer_Speicher extends IPSModule // Methode zum Setzen des aktuellen Stromverbrauchs public function SetAktuelle_Leistung(int $power) { - // Power = 0 → alle Kontakte aus - if ($power == 0) { - foreach ($this->leistungArray as $leistung) { - $kontaktID = $this->GetKontaktIDZuLeistung($leistung); + // Lade sicherheitshalber das aktuelle LeistungArray + $this->LadeUndSortiereLeistungen(); + + // Schleife über alle Leistungsstufen + foreach ($this->leistungArray as $leistung) { + $kontaktID = $this->GetKontaktIDZuLeistung($leistung); + + // Prüfen, ob Variable existiert und gültige ID + if ($kontaktID > 0 && IPS_VariableExists($kontaktID)) { + // Setze TRUE für die aktuelle Leistungsstufe, FALSE für alle anderen + SetValue($kontaktID, ($leistung === $power)); + } else { if ($kontaktID > 0) { - SetValue($kontaktID, false); - } - } - } else { - // Power > 0 → passende Stufe aktivieren - foreach ($this->leistungArray as $leistung) { - $kontaktID = $this->GetKontaktIDZuLeistung($leistung); - if ($leistung == $power && $kontaktID > 0) { - SetValue($kontaktID, true); - break; // nur eine Stufe aktiv + IPS_LogMessage("ERROR", "KontaktID $kontaktID existiert nicht oder ist ungültig!"); } } }