diff --git a/brewpi.py b/brewpi.py index 0fc9b07..9de1af0 100644 --- a/brewpi.py +++ b/brewpi.py @@ -9,6 +9,7 @@ from components.pid import kalman, temp_controller from ws.message import MsgIo, MessageDispatcher from utils.value import Value, ValueChanged +TC_DT = 0.1 class ATask: def __init__(self, interval): @@ -198,7 +199,7 @@ if __name__ == '__main__': # Sensor sensor = TempSensorSim() - taskmgr.add(TempSensorTask(sensor, 1.0, dispatcher.msgio_get("Sensor"), kalman)) + taskmgr.add(TempSensorTask(sensor, TC_DT, dispatcher.msgio_get("Sensor"), kalman)) # Plant pot_params = { @@ -206,18 +207,18 @@ if __name__ == '__main__': "theta" : 20, "C" : 4190, "M" : 10, - "L" : 0.1, + "L" : 0.02, "Td" : 12, "kn" : 0.2 } pot = Pot(pot_params, 20) - pot.set_on_changed("temp", ValueChanged(sensor.set_fake_temp, prec=1).set) - taskmgr.add(PotTask(pot, 1.0, dispatcher.msgio_get("Pot"))) + pot.set_on_changed("temp", ValueChanged(sensor.set_fake_temp, prec=3).set) + taskmgr.add(PotTask(pot, TC_DT, dispatcher.msgio_get("Pot"))) # Heater heater = Heater() heater.set_on_changed("power_eff", ValueChanged(pot.setPower, prec=0).set) - heater_task = HeaterTask(heater, 1.0, dispatcher.msgio_get("Heater")) + heater_task = HeaterTask(heater, TC_DT, dispatcher.msgio_get("Heater")) taskmgr.add(heater_task) # Temperature Controller @@ -242,9 +243,9 @@ if __name__ == '__main__': } tc = temp_controller.TempController(tc_params) tc.set_on_changed("y_hold", heater_task.actor) - tc_task = TcTask(tc, 1.0, dispatcher.msgio_get("Tc")) + tc_task = TcTask(tc, TC_DT, dispatcher.msgio_get("Tc")) taskmgr.add(tc_task) - sensor.set_on_changed("temp", ValueChanged(tc.set_theta_ist, prec=1).set) + sensor.set_on_changed("temp", ValueChanged(tc.set_theta_ist, prec=2).set) # Message dispatcher h_dispatcher = taskmgr.start() diff --git a/brewpi_gui.py b/brewpi_gui.py index 9d92f3d..ae94cf7 100644 --- a/brewpi_gui.py +++ b/brewpi_gui.py @@ -20,15 +20,19 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow): self.msg_pot = self.msg_dispatch.msgio_get('Pot') self.msg_sensor = self.msg_dispatch.msgio_get('Sensor') self.msg_heater = self.msg_dispatch.msgio_get('Heater') + self.msg_tempctrl = self.msg_dispatch.msgio_get('Tc') self.msg_pot.set_recv_handler(self.on_pot_changed) self.msg_sensor.set_recv_handler(self.on_sensor_changed) self.msg_heater.set_recv_handler(self.on_heater_changed) + self.msg_tempctrl.set_recv_handler(self.on_tempctrl_changed) self.setupUi(self) self.actionStart.triggered.connect(self.connect) self.actionStop.triggered.connect(self.disconnect) - self.Slider_pwr_soll.valueChanged.connect(self.on_slider_changed) + self.Slider_pwr_soll.valueChanged.connect(self.on_slider_pwr_soll_changed) + self.Slider_temp_soll.valueChanged.connect(self.on_slider_temp_soll_changed) + self.checkbox_heater_activate.stateChanged.connect(self.on_checkbox_changed) self.send_data = Queue() self.slider_initial_update = True @@ -40,10 +44,14 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow): def disconnect(self): self.ws_client.disconnect() - def on_slider_changed(self, value): - print("on_slider_changed {}".format(value)) + def on_slider_pwr_soll_changed(self, value): + print("on_slider_pwr_soll_changed {}".format(value)) self.msg_heater.send_from_thread({'Power': value}) + def on_slider_temp_soll_changed(self, value): + print("on_slider_temp_soll_changed {}".format(value)) + self.msg_tempctrl.send_from_thread({'Soll': value}) + def on_checkbox_changed(self, value): print("on_checkbox_changed {}".format(value)) self.msg_heater.send_from_thread({'Activate': int(value == 2)}) @@ -58,6 +66,11 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow): if "Temp" in msg: self.lcdNumber_3.display(str(msg['Temp'])) + async def on_tempctrl_changed(self, msg): + print("on_tempctrl_changed {}".format(msg)) +# if "Tc" in msg: +# self.lcdNumber_3.display(str(msg['Temp'])) + async def on_heater_changed(self, msg): print("on_heater_changed {}".format(msg)) for key in msg: