From 0633e464ca28d5885d41aa50209fe4728a5fe9c0 Mon Sep 17 00:00:00 2001 From: jens Date: Sun, 13 Dec 2020 16:21:08 +0100 Subject: [PATCH] - refactored - created TempSensorFactory --- brewpi.py | 13 +++++++------ components/__init__.py | 1 + components/pid/__init__.py | 3 +++ components/pid/temp_controller.py | 9 ++++----- components/plant/__init__.py | 1 + components/plant/pot.py | 4 +--- components/sensor/__init__.py | 3 +++ components/sensor/tempSensorSim.py | 2 +- components/sensor/tempsensor_factory.py | 8 ++++++++ 9 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 components/sensor/tempsensor_factory.py diff --git a/brewpi.py b/brewpi.py index 410c890..a88193d 100644 --- a/brewpi.py +++ b/brewpi.py @@ -2,10 +2,11 @@ import asyncio from time import sleep import abc from ws.server.ws_server_multi_user import WsServerMultiUser -from components.sensor.tempSensorSim import TempSensorSim, ATemperatureSensor -from components.plant.pot import Pot, APlant +from components import ATemperatureSensor +from components.sensor import TempSensorFactory +from components.pid import TempController +from components.plant import Pot, APlant from components.actor.heater import Heater, AHeater -from components.pid import kalman, temp_controller from ws.message import MsgIo, MessageDispatcher from utils.value import Value, ChangedFloat, ChangedInteger @@ -148,7 +149,7 @@ class PotTask(ATask): class TcTask(ATask): - def __init__(self, tc: temp_controller.TempController, interval, msg_handler: MsgIo): + def __init__(self, tc: TempController, interval, msg_handler: MsgIo): ATask.__init__(self, interval) self.tc = tc @@ -242,7 +243,7 @@ if __name__ == '__main__': taskmgr = TaskManager() # Sensor - sensor = TempSensorSim() + sensor = TempSensorFactory.create("sim") taskmgr.add(TempSensorTask(sensor, DT_CTRL, dispatcher.msgio_get("Sensor"))) # Plant @@ -291,7 +292,7 @@ if __name__ == '__main__': "var_R" : 1 } - tc = temp_controller.TempController(tc_params, kalman_params) + tc = TempController(tc_params, kalman_params) tc.set_on_changed("y", heater_task.actor) tc_task = TcTask(tc, DT_CTRL, dispatcher.msgio_get("TempCtrl")) taskmgr.add(tc_task) diff --git a/components/__init__.py b/components/__init__.py index e69de29..b187ce8 100644 --- a/components/__init__.py +++ b/components/__init__.py @@ -0,0 +1 @@ +from components.atemperatureSensor import * diff --git a/components/pid/__init__.py b/components/pid/__init__.py index e69de29..1e813b0 100644 --- a/components/pid/__init__.py +++ b/components/pid/__init__.py @@ -0,0 +1,3 @@ +from components.pid.pid import * +from components.pid.kalman import * +from components.pid.temp_controller import * diff --git a/components/pid/temp_controller.py b/components/pid/temp_controller.py index 8a58fdd..8bdfffb 100644 --- a/components/pid/temp_controller.py +++ b/components/pid/temp_controller.py @@ -1,7 +1,6 @@ -from components.pid import pid -from components.pid import kalman from components.plant.pot import Pot from matplotlib.pyplot import plot, figure, subplot, title, xlabel, ylabel, grid, show, legend +from components.pid import Pid, Kalman import numpy as np from utils.value import AttributeChange from enum import Enum @@ -17,8 +16,8 @@ class TempController(AttributeChange): def __init__(self, params_pid, params_kalman): AttributeChange.__init__(self) - self.pid_hold = pid.Pid(params_pid['Hold']) - self.pid_rate = pid.Pid(params_pid['Heat']) + self.pid_hold = Pid(params_pid['Hold']) + self.pid_rate = Pid(params_pid['Heat']) self.theta_ist_set = 20 self.theta_soll_set = 0 self.heatrate_ist_set = 0 @@ -27,7 +26,7 @@ class TempController(AttributeChange): self.theta_ist = 0 self.heatrate_ist = 0 self.params = params_pid - self.kalman = kalman.Kalman(params_kalman) + self.kalman = Kalman(params_kalman) self.y = -1 self.state = States.IDLE self.use_kalman = True diff --git a/components/plant/__init__.py b/components/plant/__init__.py index e69de29..62def6d 100644 --- a/components/plant/__init__.py +++ b/components/plant/__init__.py @@ -0,0 +1 @@ +from components.plant.pot import * diff --git a/components/plant/pot.py b/components/plant/pot.py index 261ea04..17df07c 100644 --- a/components/plant/pot.py +++ b/components/plant/pot.py @@ -1,4 +1,3 @@ -import numpy as np from components.aplant import APlant @@ -43,5 +42,4 @@ class Pot(APlant): return round(self.power_actual, 1) def getTemperature(self): - #return round(self.theta + self.theta_amb + self.kn * np.random.normal(0, 1) / np.sqrt(12.0), 1) - return self.temp \ No newline at end of file + return self.temp diff --git a/components/sensor/__init__.py b/components/sensor/__init__.py index e69de29..fcd71d5 100644 --- a/components/sensor/__init__.py +++ b/components/sensor/__init__.py @@ -0,0 +1,3 @@ +from components.sensor.tempSensorSim import * +from components.sensor.tempsensor_factory import * +from components.sensor.tempSensorSim import ATemperatureSensor diff --git a/components/sensor/tempSensorSim.py b/components/sensor/tempSensorSim.py index 0b23f91..b924923 100644 --- a/components/sensor/tempSensorSim.py +++ b/components/sensor/tempSensorSim.py @@ -1,4 +1,4 @@ -from components.atemperatureSensor import ATemperatureSensor +from components import ATemperatureSensor import numpy as np diff --git a/components/sensor/tempsensor_factory.py b/components/sensor/tempsensor_factory.py new file mode 100644 index 0000000..115dd3b --- /dev/null +++ b/components/sensor/tempsensor_factory.py @@ -0,0 +1,8 @@ +from components.sensor.tempSensorSim import TempSensorSim + + +class TempSensorFactory: + @staticmethod + def create(name): + if "sim" in name: + return TempSensorSim()