- decreased interval of heater and pot
- use value objects for changed tracking
This commit is contained in:
@@ -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"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user