diff --git a/Warmwassererwaermer/module.php b/Warmwassererwaermer/module.php index 2d66109..d4da692 100644 --- a/Warmwassererwaermer/module.php +++ b/Warmwassererwaermer/module.php @@ -271,7 +271,11 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch } } - $this->schalteLeistung($ziel, $jetzt); + $lastwechselErfolgt = $this->schalteLeistung($ziel, $jetzt); + if ($lastwechselErfolgt) { + $this->WriteAttributeString('Leistungsangebot', json_encode([$ziel], JSON_THROW_ON_ERROR)); + $this->setzeZustand('AenderungMoeglich', false); + } $this->setzeZustand('Sollleistung', $ziel); $this->aktualisiereStoerungen($temperaturGueltig); if ($meldungPlanen) { @@ -420,14 +424,14 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch $this->setzeZustand('LegionellenbetriebAktiv', $fruehestensFaellig); } - private function schalteLeistung(int $zielLeistung, int $jetzt): void + private function schalteLeistung(int $zielLeistung, int $jetzt): bool { $stufen = WarmwasserRegler::dekodiereLeistungsstufen($this->ReadPropertyString('LeistungsStufen')); $zielStufe = WarmwasserRegler::stufeFuerLeistung($stufen, $zielLeistung); $bisherigeLeistung = (int) round((float) $this->leseZustand('Istleistung')); if ($zielLeistung === $bisherigeLeistung && $this->kontakteEntsprechenZiel($stufen, $zielLeistung)) { $this->WriteAttributeString('Schaltfehler', ''); - return; + return false; } try { @@ -464,6 +468,8 @@ class VerbraucherWarmwassererwaermer extends IPSModule implements VerbraucherSch $this->WriteAttributeInteger('LetzterLastwechsel', $jetzt); $this->aktualisiereLastwechselstatus($jetzt); $this->protokolliere('Leistungsstufe', ['Leistung_W' => $zielLeistung, 'Stufe' => $zielStufe]); + + return true; } /**