- permit heater to override power

This commit is contained in:
jens
2021-10-12 11:37:24 +01:00
parent b4a6c70591
commit 6dc5e90956
Regular → Executable
+8 -5
View File
@@ -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)