From ca39f04480f0b23144c5b619c3b29d0c4c547340 Mon Sep 17 00:00:00 2001 From: jens Date: Wed, 25 Nov 2020 14:37:37 +0100 Subject: [PATCH] - decreased interval of heater and pot - use value objects for changed tracking --- brewpi.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/brewpi.py b/brewpi.py index 8a0fdbd..81c87db 100644 --- a/brewpi.py +++ b/brewpi.py @@ -24,22 +24,21 @@ class TempSensorTask(ATask): self.msg_handler = msg_handler msg_handler.set_recv_handler(self.recv) self.sensor = sensor - self.offset = 0 async def recv(self, data): print(data) - self.offset = data['Temp'] async def send(self, data): 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 = Value() while True: - temp = self.sensor.temperature() + self.offset - await self.send(temp) + temp.set(round(self.sensor.temperature(), 1)) + if temp.is_changed(): + await self.send(temp.get()) await asyncio.sleep(self.interval) - print(temp) class HeaterTask(ATask): @@ -63,10 +62,12 @@ class HeaterTask(ATask): async def on_process(self): print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval)) + power = Value() while True: self.heater.process() - power = self.heater.getPower() - await self.send({'Power': power}) + power.set(round(self.heater.getPower())) + if power.is_changed(): + await self.send({'Power': power.get()}) await asyncio.sleep(self.interval) @@ -92,7 +93,7 @@ class PotTask(ATask): plant_power = Value() while True: self.plant.process() - plant_power.set(round(self.plant.getPower(), 1)) + plant_power.set(round(self.plant.getPower())) plant_temp.set(round(self.plant.getTemperature(), 1)) if plant_power.is_changed(): @@ -179,7 +180,7 @@ if __name__ == '__main__': sensor = TempSensorSim() taskmgr.add(TempSensorTask(sensor, 1.0, dispatcher.msgio_get("Sensor"))) pot_params = { - "dt" : 1.0, + "dt" : 0.1, "theta_amb" : 15, "C" : 4190, "M" : 20, @@ -191,12 +192,12 @@ if __name__ == '__main__': # Plant pot = Pot(pot_params) # pot.connect_theta_changed(sensor.set_fake_temp) - taskmgr.add(PotTask(pot, 1.0, dispatcher.msgio_get("Pot"))) + taskmgr.add(PotTask(pot, 0.1, dispatcher.msgio_get("Pot"))) # Heater heater = Heater() heater.connect_power_changed(pot.setPower) - taskmgr.add(HeaterTask(heater, 1.0, dispatcher.msgio_get("Heater"))) + taskmgr.add(HeaterTask(heater, 0.1, dispatcher.msgio_get("Heater"))) ColorHandler(dispatcher.msgio_get("Color"))