- 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
|
self.msg_handler = msg_handler
|
||||||
msg_handler.set_recv_handler(self.recv)
|
msg_handler.set_recv_handler(self.recv)
|
||||||
self.sensor = sensor
|
self.sensor = sensor
|
||||||
self.offset = 0
|
|
||||||
|
|
||||||
async def recv(self, data):
|
async def recv(self, data):
|
||||||
print(data)
|
print(data)
|
||||||
self.offset = data['Temp']
|
|
||||||
|
|
||||||
async def send(self, data):
|
async def send(self, data):
|
||||||
await self.msg_handler.send(data)
|
await self.msg_handler.send(data)
|
||||||
|
|
||||||
async def on_process(self):
|
async def on_process(self):
|
||||||
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
|
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
|
||||||
|
temp = Value()
|
||||||
while True:
|
while True:
|
||||||
temp = self.sensor.temperature() + self.offset
|
temp.set(round(self.sensor.temperature(), 1))
|
||||||
await self.send(temp)
|
if temp.is_changed():
|
||||||
|
await self.send(temp.get())
|
||||||
await asyncio.sleep(self.interval)
|
await asyncio.sleep(self.interval)
|
||||||
print(temp)
|
|
||||||
|
|
||||||
|
|
||||||
class HeaterTask(ATask):
|
class HeaterTask(ATask):
|
||||||
@@ -63,10 +62,12 @@ class HeaterTask(ATask):
|
|||||||
|
|
||||||
async def on_process(self):
|
async def on_process(self):
|
||||||
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
|
print("{}: Started with interval {} s".format(self.msg_handler.get_key(), self.interval))
|
||||||
|
power = Value()
|
||||||
while True:
|
while True:
|
||||||
self.heater.process()
|
self.heater.process()
|
||||||
power = self.heater.getPower()
|
power.set(round(self.heater.getPower()))
|
||||||
await self.send({'Power': power})
|
if power.is_changed():
|
||||||
|
await self.send({'Power': power.get()})
|
||||||
await asyncio.sleep(self.interval)
|
await asyncio.sleep(self.interval)
|
||||||
|
|
||||||
|
|
||||||
@@ -92,7 +93,7 @@ class PotTask(ATask):
|
|||||||
plant_power = Value()
|
plant_power = Value()
|
||||||
while True:
|
while True:
|
||||||
self.plant.process()
|
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))
|
plant_temp.set(round(self.plant.getTemperature(), 1))
|
||||||
|
|
||||||
if plant_power.is_changed():
|
if plant_power.is_changed():
|
||||||
@@ -179,7 +180,7 @@ if __name__ == '__main__':
|
|||||||
sensor = TempSensorSim()
|
sensor = TempSensorSim()
|
||||||
taskmgr.add(TempSensorTask(sensor, 1.0, dispatcher.msgio_get("Sensor")))
|
taskmgr.add(TempSensorTask(sensor, 1.0, dispatcher.msgio_get("Sensor")))
|
||||||
pot_params = {
|
pot_params = {
|
||||||
"dt" : 1.0,
|
"dt" : 0.1,
|
||||||
"theta_amb" : 15,
|
"theta_amb" : 15,
|
||||||
"C" : 4190,
|
"C" : 4190,
|
||||||
"M" : 20,
|
"M" : 20,
|
||||||
@@ -191,12 +192,12 @@ if __name__ == '__main__':
|
|||||||
# Plant
|
# Plant
|
||||||
pot = Pot(pot_params)
|
pot = Pot(pot_params)
|
||||||
# pot.connect_theta_changed(sensor.set_fake_temp)
|
# 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()
|
heater = Heater()
|
||||||
heater.connect_power_changed(pot.setPower)
|
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"))
|
ColorHandler(dispatcher.msgio_get("Color"))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user