- decreased interval of heater and pot

- use value objects for changed tracking
This commit is contained in:
jens
2020-11-25 14:37:37 +01:00
parent 50db5c740f
commit ca39f04480
+12 -11
View File
@@ -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"))