diff --git a/brewpi.ui b/brewpi.ui
index eb35464..90641b6 100644
--- a/brewpi.ui
+++ b/brewpi.ui
@@ -9,8 +9,8 @@
0
0
- 1091
- 629
+ 1130
+ 623
@@ -488,7 +488,7 @@
10
0
- 341
+ 461
471
@@ -515,15 +515,15 @@
- Temperatur
+ Controller
- 50
- 40
+ 20
+ 70
63
- 311
+ 281
@@ -552,7 +552,7 @@
- Heizrate
+ Heat rate
Qt::AlignCenter
@@ -561,7 +561,7 @@
- 90
+ 80
370
51
31
@@ -577,20 +577,36 @@
0.100000000000000
+
+
+
+ 0
+ 30
+ 141
+ 31
+
+
+
+ Temperature [°C]
+
+
+ Qt::AlignCenter
+
+
-
- Power
+ Heater
- 30
- 40
+ 10
+ 70
81
- 311
+ 281
@@ -610,6 +626,42 @@
+
+
+ 30
+ 370
+ 81
+ 31
+
+
+
+ Activate
+
+
+
+
+
+ 0
+ 30
+ 141
+ 31
+
+
+
+ Power [W]
+
+
+ Qt::AlignCenter
+
+
+
+
+ -
+
+
+ Stirrer
+
+
40
@@ -622,6 +674,47 @@
Activate
+
+
+
+ 40
+ 70
+ 63
+ 281
+
+
+
+ 0.000000000000000
+
+
+ 100.000000000000000
+
+
+ 7
+
+
+ 3
+
+
+ 0.000000000000000
+
+
+
+
+
+ 0
+ 30
+ 141
+ 31
+
+
+
+ Speed [%]
+
+
+ Qt::AlignCenter
+
+
@@ -640,8 +733,8 @@
- 550
- 60
+ 480
+ 70
481
374
@@ -3454,8 +3547,8 @@
- 590
- 30
+ 570
+ 40
67
17
@@ -3470,8 +3563,8 @@
- 870
- 30
+ 800
+ 40
67
17
@@ -3486,49 +3579,40 @@
- 410
- 110
+ 980
+ 130
121
20
- Temperatur [°C]
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+ Temperature [°C]
- 410
- 240
+ 980
+ 250
121
20
- Heizrate [°C/min]
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+ Heat rate [°C/min]
- 430
- 360
+ 980
+ 380
101
20
- Leistung [W]
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+ Power [W]
@@ -3601,7 +3685,7 @@
0
0
- 1091
+ 1130
22
diff --git a/brewpi_gui.py b/brewpi_gui.py
index f660e7a..336b3da 100644
--- a/brewpi_gui.py
+++ b/brewpi_gui.py
@@ -33,25 +33,37 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
self.actionStop.triggered.connect(self.disconnect)
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.Slider_speed_soll.valueChanged.connect(self.on_slider_stirrer_speed_soll_changed)
+
self.doubleSpinBox_heatrate_soll.valueChanged.connect(self.on_heatrate_soll_changed)
self.checkbox_heater_activate.stateChanged.connect(self.on_checkbox_changed)
+ self.checkbox_stirrer_activate.stateChanged.connect(self.on_checkbox_stirrer_activate_changed)
+
self.send_data = Queue()
self.slider_pwr_initial_update = True
self.slider_temp_soll_initial_update = True
+ self.slider_speed_initial_update = True
self.checkbox_heater_activate_initial_update = True
+ self.checkbox_stirrer_activate_initial_update = True
self.heatrate_soll_initial_update = True
def connect(self):
self.slider_pwr_initial_update = True
self.slider_temp_soll_initial_update = True
+ self.slider_speed_initial_update = True
self.checkbox_heater_activate_initial_update = True
+ self.checkbox_stirrer_activate_initial_update = True
self.heatrate_soll_initial_update = True
self.ws_client.connect(uri=self.plainTextUri.toPlainText())
def disconnect(self):
self.ws_client.disconnect()
+ def on_slider_temp_soll_changed(self, value):
+ print("on_slider_temp_soll_changed {}".format(value))
+ self.msg_tempctrl.send({'Soll': {'Temp': value}})
+
def on_heatrate_soll_changed(self, value):
value = round(value, 1)
print("on_textbox_heatrate_soll_changed {}".format(value))
@@ -61,12 +73,16 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
print("on_slider_pwr_soll_changed {}".format(value))
self.msg_heater.send({'Power': value})
- def on_slider_temp_soll_changed(self, value):
- print("on_slider_temp_soll_changed {}".format(value))
- self.msg_tempctrl.send({'Soll': {'Temp': value}})
-
def on_checkbox_changed(self, value):
print("on_checkbox_changed {}".format(value))
+ self.msg_heater.send({'Activate': int(value == 2)})
+
+ def on_slider_stirrer_speed_soll_changed(self, value):
+ print("on_slider_stirrer_speed_soll_changed {}".format(value))
+ self.msg_stirrer.send({'Speed': value})
+
+ def on_checkbox_stirrer_activate_changed(self, value):
+ print("on_checkbox_stirrer_activate_changed {}".format(value))
self.msg_stirrer.send({'Activate': int(value == 2)})
def on_pot_changed(self, msg):
@@ -127,6 +143,21 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
def on_stirrer_changed(self, msg):
print("on_stirrer_changed {}".format(msg))
+ for key in msg:
+ if "Activate" in key:
+ if self.checkbox_stirrer_activate_initial_update:
+ self.checkbox_stirrer_activate.setCheckState(2 if msg['Activate'] == 1 else 0)
+ self.checkbox_stirrer_activate_initial_update = False
+ elif "Speed" in key:
+ if self.slider_speed_initial_update:
+ self.Slider_speed_soll.setValue(msg['Speed'])
+ self.slider_speed_initial_update = False
+ elif "Capabilities" in key:
+ submsg = msg['Capabilities']
+ if "Power" in submsg:
+ submsg = submsg['Power']
+ self.Slider_speed_soll.setLowerBound(submsg['Min'])
+ self.Slider_speed_soll.setUpperBound(submsg['Max'])
def closeEvent(self, event):
print("Exitting gracefully!")
diff --git a/brewpi_win.py b/brewpi_win.py
index 07fba87..962c81b 100644
--- a/brewpi_win.py
+++ b/brewpi_win.py
@@ -14,7 +14,7 @@ class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
- MainWindow.resize(1091, 629)
+ MainWindow.resize(1130, 623)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -175,7 +175,7 @@ class Ui_MainWindow(object):
self.centralwidget.setObjectName("centralwidget")
self.horizontalTabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.horizontalTabWidget.setEnabled(True)
- self.horizontalTabWidget.setGeometry(QtCore.QRect(10, 0, 341, 471))
+ self.horizontalTabWidget.setGeometry(QtCore.QRect(10, 0, 461, 471))
self.horizontalTabWidget.setObjectName("horizontalTabWidget")
self.horizontalTabWidgetPage1 = QtWidgets.QWidget()
self.horizontalTabWidgetPage1.setObjectName("horizontalTabWidgetPage1")
@@ -190,7 +190,7 @@ class Ui_MainWindow(object):
self.groupBox_2.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox_2.setObjectName("groupBox_2")
self.Slider_temp_soll = QwtSlider(self.groupBox_2)
- self.Slider_temp_soll.setGeometry(QtCore.QRect(50, 40, 63, 311))
+ self.Slider_temp_soll.setGeometry(QtCore.QRect(20, 70, 63, 281))
self.Slider_temp_soll.setLowerBound(0.0)
self.Slider_temp_soll.setUpperBound(100.0)
self.Slider_temp_soll.setScaleMaxMajor(7)
@@ -202,16 +202,20 @@ class Ui_MainWindow(object):
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.doubleSpinBox_heatrate_soll = QtWidgets.QDoubleSpinBox(self.groupBox_2)
- self.doubleSpinBox_heatrate_soll.setGeometry(QtCore.QRect(90, 370, 51, 31))
+ self.doubleSpinBox_heatrate_soll.setGeometry(QtCore.QRect(80, 370, 51, 31))
self.doubleSpinBox_heatrate_soll.setDecimals(1)
self.doubleSpinBox_heatrate_soll.setMaximum(3.0)
self.doubleSpinBox_heatrate_soll.setSingleStep(0.1)
self.doubleSpinBox_heatrate_soll.setObjectName("doubleSpinBox_heatrate_soll")
+ self.label_9 = QtWidgets.QLabel(self.groupBox_2)
+ self.label_9.setGeometry(QtCore.QRect(0, 30, 141, 31))
+ self.label_9.setAlignment(QtCore.Qt.AlignCenter)
+ self.label_9.setObjectName("label_9")
self.horizontalLayout.addWidget(self.groupBox_2)
self.groupBox = QtWidgets.QGroupBox(self.horizontalTabWidgetPage1)
self.groupBox.setObjectName("groupBox")
self.Slider_pwr_soll = QwtSlider(self.groupBox)
- self.Slider_pwr_soll.setGeometry(QtCore.QRect(30, 40, 81, 311))
+ self.Slider_pwr_soll.setGeometry(QtCore.QRect(10, 70, 81, 281))
self.Slider_pwr_soll.setLowerBound(0.0)
self.Slider_pwr_soll.setUpperBound(100.0)
self.Slider_pwr_soll.setScaleMaxMajor(7)
@@ -219,9 +223,31 @@ class Ui_MainWindow(object):
self.Slider_pwr_soll.setScaleStepSize(0.0)
self.Slider_pwr_soll.setObjectName("Slider_pwr_soll")
self.checkbox_heater_activate = QtWidgets.QCheckBox(self.groupBox)
- self.checkbox_heater_activate.setGeometry(QtCore.QRect(40, 370, 81, 23))
+ self.checkbox_heater_activate.setGeometry(QtCore.QRect(30, 370, 81, 31))
self.checkbox_heater_activate.setObjectName("checkbox_heater_activate")
+ self.label_10 = QtWidgets.QLabel(self.groupBox)
+ self.label_10.setGeometry(QtCore.QRect(0, 30, 141, 31))
+ self.label_10.setAlignment(QtCore.Qt.AlignCenter)
+ self.label_10.setObjectName("label_10")
self.horizontalLayout.addWidget(self.groupBox)
+ self.groupBox_3 = QtWidgets.QGroupBox(self.horizontalTabWidgetPage1)
+ self.groupBox_3.setObjectName("groupBox_3")
+ self.checkbox_stirrer_activate = QtWidgets.QCheckBox(self.groupBox_3)
+ self.checkbox_stirrer_activate.setGeometry(QtCore.QRect(40, 370, 81, 23))
+ self.checkbox_stirrer_activate.setObjectName("checkbox_stirrer_activate")
+ self.Slider_speed_soll = QwtSlider(self.groupBox_3)
+ self.Slider_speed_soll.setGeometry(QtCore.QRect(40, 70, 63, 281))
+ self.Slider_speed_soll.setLowerBound(0.0)
+ self.Slider_speed_soll.setUpperBound(100.0)
+ self.Slider_speed_soll.setScaleMaxMajor(7)
+ self.Slider_speed_soll.setScaleMaxMinor(3)
+ self.Slider_speed_soll.setScaleStepSize(0.0)
+ self.Slider_speed_soll.setObjectName("Slider_speed_soll")
+ self.label_11 = QtWidgets.QLabel(self.groupBox_3)
+ self.label_11.setGeometry(QtCore.QRect(0, 30, 141, 31))
+ self.label_11.setAlignment(QtCore.Qt.AlignCenter)
+ self.label_11.setObjectName("label_11")
+ self.horizontalLayout.addWidget(self.groupBox_3)
self.horizontalTabWidget.addTab(self.horizontalTabWidgetPage1, "")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
@@ -230,7 +256,7 @@ class Ui_MainWindow(object):
self.tab_2.setObjectName("tab_2")
self.horizontalTabWidget.addTab(self.tab_2, "")
self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
- self.gridLayoutWidget.setGeometry(QtCore.QRect(550, 60, 481, 374))
+ self.gridLayoutWidget.setGeometry(QtCore.QRect(480, 70, 481, 374))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
@@ -1166,24 +1192,21 @@ class Ui_MainWindow(object):
self.lcdNumber_power_heater.setObjectName("lcdNumber_power_heater")
self.gridLayout_2.addWidget(self.lcdNumber_power_heater, 2, 1, 1, 1)
self.label = QtWidgets.QLabel(self.centralwidget)
- self.label.setGeometry(QtCore.QRect(590, 30, 67, 17))
+ self.label.setGeometry(QtCore.QRect(570, 40, 67, 17))
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
- self.label_2.setGeometry(QtCore.QRect(870, 30, 67, 17))
+ self.label_2.setGeometry(QtCore.QRect(800, 40, 67, 17))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
- self.label_3.setGeometry(QtCore.QRect(410, 110, 121, 20))
- self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_3.setGeometry(QtCore.QRect(980, 130, 121, 20))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
- self.label_4.setGeometry(QtCore.QRect(410, 240, 121, 20))
- self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_4.setGeometry(QtCore.QRect(980, 250, 121, 20))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
- self.label_5.setGeometry(QtCore.QRect(430, 360, 101, 20))
- self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_5.setGeometry(QtCore.QRect(980, 380, 101, 20))
self.label_5.setObjectName("label_5")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(0, 500, 67, 31))
@@ -1203,7 +1226,7 @@ class Ui_MainWindow(object):
self.label_8.setObjectName("label_8")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1091, 22))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1130, 22))
self.menubar.setObjectName("menubar")
self.menu_File = QtWidgets.QMenu(self.menubar)
self.menu_File.setObjectName("menu_File")
@@ -1235,18 +1258,23 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "BrewPi"))
- self.groupBox_2.setTitle(_translate("MainWindow", "Temperatur"))
- self.label_6.setText(_translate("MainWindow", "Heizrate"))
- self.groupBox.setTitle(_translate("MainWindow", "Power"))
+ self.groupBox_2.setTitle(_translate("MainWindow", "Controller"))
+ self.label_6.setText(_translate("MainWindow", "Heat rate"))
+ self.label_9.setText(_translate("MainWindow", "Temperature [°C]"))
+ self.groupBox.setTitle(_translate("MainWindow", "Heater"))
self.checkbox_heater_activate.setText(_translate("MainWindow", "Activate"))
+ self.label_10.setText(_translate("MainWindow", "Power [W]"))
+ self.groupBox_3.setTitle(_translate("MainWindow", "Stirrer"))
+ self.checkbox_stirrer_activate.setText(_translate("MainWindow", "Activate"))
+ self.label_11.setText(_translate("MainWindow", "Speed [%]"))
self.horizontalTabWidget.setTabText(self.horizontalTabWidget.indexOf(self.horizontalTabWidgetPage1), _translate("MainWindow", "Manual"))
self.horizontalTabWidget.setTabText(self.horizontalTabWidget.indexOf(self.tab), _translate("MainWindow", "Automatic"))
self.horizontalTabWidget.setTabText(self.horizontalTabWidget.indexOf(self.tab_2), _translate("MainWindow", "Seite"))
self.label.setText(_translate("MainWindow", "Ist"))
self.label_2.setText(_translate("MainWindow", "Soll"))
- self.label_3.setText(_translate("MainWindow", "Temperatur [°C]"))
- self.label_4.setText(_translate("MainWindow", "Heizrate [°C/min]"))
- self.label_5.setText(_translate("MainWindow", "Leistung [W]"))
+ self.label_3.setText(_translate("MainWindow", "Temperature [°C]"))
+ self.label_4.setText(_translate("MainWindow", "Heat rate [°C/min]"))
+ self.label_5.setText(_translate("MainWindow", "Power [W]"))
self.label_7.setText(_translate("MainWindow", "State"))
self.label_state.setText(_translate("MainWindow", "State"))
self.plainTextUri.setPlainText(_translate("MainWindow", "ws://brewpi:8765"))