- permit heater to override power
This commit is contained in:
Regular → Executable
+8
-5
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user