diff --git a/brewpi/brewpi.py b/brewpi/brewpi.py
index f4bc9a2..573a5e3 100755
--- a/brewpi/brewpi.py
+++ b/brewpi/brewpi.py
@@ -40,6 +40,7 @@ if __name__ == '__main__':
DT_TASK = 1.0 / config['Controller']['sim_warp_factor']
DT_TASK_TRACER = DT_TASK / DT
theta_amb = config['ambient_temperature']
+ plant_sim = "sim" in config['Controller']['plant_name']
# Sensor
sensor = TempSensorFactory.create(config['Controller']['sensor_name'], temp_offset=-0.15, variance=0.01)
@@ -101,7 +102,7 @@ if __name__ == '__main__':
msg_system = dispatcher.msgio_get("System")
async def send_system_info():
- await msg_system.send({'AmbientTemp': theta_amb, 'WarpFactor': DT / DT_TASK})
+ await msg_system.send({'AmbientTemp': theta_amb, 'WarpFactor': DT / DT_TASK, 'PlantSim': plant_sim})
asyncio.ensure_future(send_system_info())
async def on_system_recv(data):
diff --git a/client/brewpi.ui b/client/brewpi.ui
index 3f7e0b7..b1a149b 100644
--- a/client/brewpi.ui
+++ b/client/brewpi.ui
@@ -3711,6 +3711,22 @@
Set the simulated/assumed ambient temperature - press Enter to apply
+
+
+
+ 700
+ 500
+ 220
+ 31
+
+
+
+ Only available when the server's Pot is simulated
+
+
+ Pot reset to ambient temperature
+
+
diff --git a/client/brewpi_gui.py b/client/brewpi_gui.py
index 509593c..3ed563b 100755
--- a/client/brewpi_gui.py
+++ b/client/brewpi_gui.py
@@ -330,6 +330,10 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.checkbox_heater_activate.stateChanged.connect(self.on_checkbox_changed)
self.checkbox_stirrer_activate.stateChanged.connect(self.on_checkbox_stirrer_activate_changed)
self.lineEdit_ambient.returnPressed.connect(self.on_ambient_entry_changed)
+ self.btn_pot_reset.clicked.connect(self.on_action_pot_reset)
+ # Only meaningful (and only shown) once the server confirms its Pot
+ # is simulated - see on_system_changed()'s "PlantSim" handling.
+ self.btn_pot_reset.setVisible(False)
self.send_data = Queue()
self.slider_pwr_initial_update = True
@@ -462,6 +466,7 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.sud_user_message = None
self.ambient_temp = None
self.lineEdit_ambient.clear()
+ self.btn_pot_reset.setVisible(False)
self.warp_factor = 1.0
self.sud_start_time = None
self.sud_paused_total = 0.0
@@ -500,8 +505,13 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.lineEdit_ambient.setText("{:.1f}".format(self.ambient_temp))
elif "WarpFactor" in key:
self.warp_factor = msg['WarpFactor']
+ elif "PlantSim" in key:
+ self.btn_pot_reset.setVisible(msg['PlantSim'])
self.update_status_env_label()
+ def on_action_pot_reset(self):
+ self.msg_pot.send({'Reset': True})
+
def on_ambient_entry_changed(self):
try:
value = float(self.lineEdit_ambient.text())
diff --git a/client/main_window.py b/client/main_window.py
index d0d1661..b024dc2 100644
--- a/client/main_window.py
+++ b/client/main_window.py
@@ -1237,6 +1237,9 @@ class Ui_MainWindow(object):
self.lineEdit_ambient = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_ambient.setGeometry(QtCore.QRect(620, 500, 70, 31))
self.lineEdit_ambient.setObjectName("lineEdit_ambient")
+ self.btn_pot_reset = QtWidgets.QPushButton(self.centralwidget)
+ self.btn_pot_reset.setGeometry(QtCore.QRect(700, 500, 220, 31))
+ self.btn_pot_reset.setObjectName("btn_pot_reset")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(200, 500, 67, 31))
self.label_8.setAlignment(QtCore.Qt.AlignCenter)
@@ -1307,6 +1310,8 @@ class Ui_MainWindow(object):
self.btn_connect.setText(_translate("MainWindow", "Connect"))
self.label_ambient.setText(_translate("MainWindow", "Ambient [°C]"))
self.lineEdit_ambient.setToolTip(_translate("MainWindow", "Set the simulated/assumed ambient temperature - press Enter to apply"))
+ self.btn_pot_reset.setToolTip(_translate("MainWindow", "Only available when the server\'s Pot is simulated"))
+ self.btn_pot_reset.setText(_translate("MainWindow", "Pot reset to ambient temperature"))
self.label_8.setText(_translate("MainWindow", "Host"))
self.menu_File.setTitle(_translate("MainWindow", "&File"))
self.menu_Help.setTitle(_translate("MainWindow", "&Help"))
diff --git a/tasks/pot.py b/tasks/pot.py
index f0c1178..ac4b6d1 100644
--- a/tasks/pot.py
+++ b/tasks/pot.py
@@ -20,7 +20,9 @@ class PotTask(ATask):
asyncio.create_task(self.send({'Temp': value}))
async def recv(self, data):
- pass
+ for pair in data.items():
+ if 'Reset' in pair[0]:
+ self.plant.initial(self.plant.theta_amb)
async def send(self, data):
await self.msg_handler.send(data)