diff --git a/brewpi.py b/brewpi.py index 743945b..45886ce 100644 --- a/brewpi.py +++ b/brewpi.py @@ -7,7 +7,7 @@ from components.sensor import TempSensorFactory from components.pid import TempController from components.plant import Pot from components.actor import HeaterFactory, StirrerFactory -from tasks import TaskManager, TempSensorTask, HeaterTask, PotTask, TcTask, StirrerTask +from tasks import TaskManager, TempSensorTask, HeaterTask, PotTask, TcTask, StirrerTask, TracerTask DT_CTRL = 0.1 @@ -49,6 +49,9 @@ if __name__ == '__main__': stirrer_task = StirrerTask(stirrer, DT_CTRL, dispatcher.msgio_get("Stirrer")) taskmgr.add(stirrer_task) + # Tracer + taskmgr.add(TracerTask(sensor, tc, DT_CTRL, dispatcher.msgio_get("Tracer"))) + # Message dispatcher h_dispatcher = taskmgr.start() h_server = server.listen("0.0.0.0", 8765) diff --git a/tasks/__init__.py b/tasks/__init__.py index 053a10c..0d2f6cc 100644 --- a/tasks/__init__.py +++ b/tasks/__init__.py @@ -4,3 +4,4 @@ from tasks.heater import * from tasks.stirrer import * from tasks.pot import * from tasks.tempctrl import * +from tasks.tracer import * diff --git a/tasks/tracer.py b/tasks/tracer.py new file mode 100644 index 0000000..04ab630 --- /dev/null +++ b/tasks/tracer.py @@ -0,0 +1,39 @@ +import asyncio +from tasks import ATask +from ws.message import MsgIo +from components import ATemperatureSensor +from components.pid import TempController + +import numpy as np +import scipy.io + + +class TracerTask(ATask): + def __init__(self, sensor: ATemperatureSensor, temp_ctrl: TempController, interval, msg_handler: MsgIo): + ATask.__init__(self, interval) + + self.msg_handler = msg_handler + msg_handler.set_recv_handler(self.recv) + + self.sensor = sensor + self.temp_ctrl = temp_ctrl + + async def recv(self, data): + pass + + 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)) + + time = 0 + _time = np.empty(0) + + while True: + _time = np.append(_time, time) + time += 1 + scipy.io.savemat('test.mat', {'time': _time}) + await asyncio.sleep(self.interval) + +