diff --git a/tasks/heater.py b/tasks/heater.py index d52c301..8f7dd26 100755 --- a/tasks/heater.py +++ b/tasks/heater.py @@ -16,6 +16,8 @@ class HeaterTask(ATask): self.power_soll = 0 self.power_actor = 0 self.pulse_counter = 0 + device.set_on_changed('power_eff', ChangedInteger(self.on_changed_power).set) + self.power_set_changed = ChangedInteger(self.on_changed_power_set).set def actor(self, y): self.power_actor = max(0, self.device.get_power_max() * y) @@ -52,12 +54,8 @@ class HeaterTask(ATask): return result async def on_process(self): - print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval)) await self.send({'Capabilities': {'Power': {'Min': 0, 'Max': self.device.get_power_max()}}}) - self.device.set_on_changed('power_eff', ChangedInteger(self.on_changed_power).set) - power_set_changed = ChangedInteger(self.on_changed_power_set).set - pulse_period_s = 10 pulse_period_count = pulse_period_s/self.interval @@ -65,7 +63,7 @@ class HeaterTask(ATask): while True: # Combine power set from different sources power_soll = max(self.power_soll, self.power_actor) - power_set_changed(power_soll) + self.power_set_changed(power_soll) # Calculate duty cycle power_low = self.get_next_smaller_power(power_soll) diff --git a/tasks/pot.py b/tasks/pot.py index bdbe81d..21c2a0e 100644 --- a/tasks/pot.py +++ b/tasks/pot.py @@ -12,6 +12,8 @@ class PotTask(ATask): self.msg_handler = msg_handler msg_handler.set_recv_handler(self.recv) self.plant = pot + pot.set_on_changed('power_actual', ChangedInteger(self.on_changed_power).set) + pot.set_on_changed('temp', ChangedFloat(self.on_changed_temp, prec=1).set) def on_changed_power(self, value): asyncio.create_task(self.send({'Power': value})) @@ -33,10 +35,6 @@ class PotTask(ATask): await self.msg_handler.send(data) async def on_process(self): - print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval)) - self.plant.set_on_changed('power_actual', ChangedInteger(self.on_changed_power).set) - self.plant.set_on_changed('temp', ChangedFloat(self.on_changed_temp, prec=1).set) - while True: # Stays inert until a Sud actually supplies plant params (see # tasks/sud.py's SudTask.apply_plant_params()) - process() diff --git a/tasks/stirrer.py b/tasks/stirrer.py index b0fe7ef..08bf3a2 100644 --- a/tasks/stirrer.py +++ b/tasks/stirrer.py @@ -11,6 +11,9 @@ class StirrerTask(ATask): self.msg_handler = msg_handler msg_handler.set_recv_handler(self.recv) self.device = stirrer_device + stirrer_device.set_on_changed("speed", self.on_speed_changed) + stirrer_device.set_on_changed("dutyCycle", self.on_dutycycle_changed) + stirrer_device.set_on_changed("cycleTime", self.on_cycletime_changed) def on_speed_changed(self, value): asyncio.create_task(self.send({'Speed': value})) @@ -30,11 +33,6 @@ class StirrerTask(ATask): await self.msg_handler.send(data) async def on_process(self): - print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval)) - self.device.set_on_changed("speed", self.on_speed_changed) - self.device.set_on_changed("dutyCycle", self.on_dutycycle_changed) - self.device.set_on_changed("cycleTime", self.on_cycletime_changed) - self.device.set_speed(50.0) self.device.set_cycle_time(10.0) self.device.set_duty_cycle(1.0) diff --git a/tasks/tempctrl.py b/tasks/tempctrl.py index aa6c095..fb02b35 100644 --- a/tasks/tempctrl.py +++ b/tasks/tempctrl.py @@ -12,6 +12,13 @@ class TcTask(ATask): self.tc = tc self.msg_handler = msg_handler msg_handler.set_recv_handler(self.recv) + tc.set_on_changed('state', self.on_state_changed) + tc.set_on_changed('theta_ist', ChangedFloat(self.on_temp_ist_changed, prec=1).set) + tc.set_on_changed('heatrate_ist', ChangedFloat(self.on_rate_ist_changed, prec=1).set) + tc.set_on_changed('theta_soll_set', ChangedFloat(self.on_temp_soll_changed, prec=1).set) + tc.set_on_changed('heatrate_soll', ChangedFloat(self.on_rate_soll_curr_changed, prec=1).set) + tc.set_on_changed('heatrate_soll_set', ChangedFloat(self.on_rate_soll_set_changed, prec=1).set) + tc.set_on_changed('enabled', self.on_enabled_changed) def on_state_changed(self, value): asyncio.create_task(self.send({'State': str(value)})) @@ -48,14 +55,6 @@ class TcTask(ATask): await self.msg_handler.send(data) async def on_process(self): - self.tc.set_on_changed('state', self.on_state_changed) - self.tc.set_on_changed('theta_ist', ChangedFloat(self.on_temp_ist_changed, prec=1).set) - self.tc.set_on_changed('heatrate_ist', ChangedFloat(self.on_rate_ist_changed, prec=1).set) - self.tc.set_on_changed('theta_soll_set', ChangedFloat(self.on_temp_soll_changed, prec=1).set) - self.tc.set_on_changed('heatrate_soll', ChangedFloat(self.on_rate_soll_curr_changed, prec=1).set) - self.tc.set_on_changed('heatrate_soll_set', ChangedFloat(self.on_rate_soll_set_changed, prec=1).set) - self.tc.set_on_changed('enabled', self.on_enabled_changed) - self.tc.set_theta_soll(20.0) self.tc.set_heatrate_soll(1.0) await self.send({'Enabled': self.tc.enabled}) diff --git a/tasks/tempsensor.py b/tasks/tempsensor.py index cc276c5..a023fe4 100644 --- a/tasks/tempsensor.py +++ b/tasks/tempsensor.py @@ -2,7 +2,7 @@ import asyncio from tasks import ATask from ws.message import MsgIo from utils.value import ChangedFloat -from components import ATemperatureSensor, TemperatureSensorException +from components import ATemperatureSensor class TempSensorTask(ATask): @@ -13,6 +13,7 @@ class TempSensorTask(ATask): msg_handler.set_recv_handler(self.recv) self.sensor = sensor_device self.temp = self.sensor.temperature() + self.set_on_changed("temp", ChangedFloat(self.on_temp_changed, prec=1).set) def on_temp_changed(self, value): asyncio.create_task(self.send({'Temp': value})) @@ -24,12 +25,6 @@ class TempSensorTask(ATask): await self.msg_handler.send(data) async def on_process(self): - print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval)) - temp = ChangedFloat(self.on_temp_changed, prec=1) - self.set_on_changed("temp", temp.set) while True: - try: - self.temp = self.sensor.temperature() - except TemperatureSensorException as e: - print(e) + self.temp = self.sensor.temperature() await asyncio.sleep(self.interval)