diff --git a/tasks/heater.py b/tasks/heater.py old mode 100644 new mode 100755 index 27f3a84..ae3d9f4 --- a/tasks/heater.py +++ b/tasks/heater.py @@ -14,10 +14,11 @@ class HeaterTask(ATask): self.msg_handler = msg_handler msg_handler.set_recv_handler(self.recv) self.power_soll = 0 + self.power_actor = 0 self.pulse_counter = 0 def actor(self, y): - self.power_soll = max(0, self.device.get_power_max() * y) + self.power_actor = max(0, self.device.get_power_max() * y) def on_changed_active(self, is_activated): asyncio.create_task(self.send({'Activate': int(is_activated)})) @@ -44,23 +45,25 @@ class HeaterTask(ATask): with self.device.open(): while True: + power_soll = max(self.power_soll, self.power_actor) on_count = pulse_period_count if self.device.get_power_min() > 0: - on_count = pulse_period_count*min(1, self.power_soll / self.device.get_power_min()) + on_count = pulse_period_count*min(1, power_soll / self.device.get_power_min()) self.pulse_counter += 1 if self.pulse_counter >= pulse_period_count: self.pulse_counter = 0 - if self.power_soll < self.device.get_power_min(): - if self.power_soll == 0 or self.pulse_counter >= on_count: + if power_soll < self.device.get_power_min(): + if power_soll == 0 or self.pulse_counter >= on_count: self.device.set_power(0) elif self.pulse_counter < on_count: self.device.set_power(self.device.get_power_min()) else: - self.device.set_power(self.power_soll) + self.device.set_power(power_soll) self.device.process() await asyncio.sleep(self.interval) +