- integrated Stirrer into GUI

This commit is contained in:
jens
2020-12-17 19:30:59 +01:00
parent 7650acd808
commit f18dd11e9a
3 changed files with 207 additions and 64 deletions
+122 -38
View File
@@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1091</width>
<height>629</height>
<width>1130</width>
<height>623</height>
</rect>
</property>
<property name="sizePolicy">
@@ -488,7 +488,7 @@
<rect>
<x>10</x>
<y>0</y>
<width>341</width>
<width>461</width>
<height>471</height>
</rect>
</property>
@@ -515,15 +515,15 @@
</size>
</property>
<property name="title">
<string>Temperatur</string>
<string>Controller</string>
</property>
<widget class="QwtSlider" name="Slider_temp_soll">
<property name="geometry">
<rect>
<x>50</x>
<y>40</y>
<x>20</x>
<y>70</y>
<width>63</width>
<height>311</height>
<height>281</height>
</rect>
</property>
<property name="lowerBound">
@@ -552,7 +552,7 @@
</rect>
</property>
<property name="text">
<string>Heizrate</string>
<string>Heat rate</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@@ -561,7 +561,7 @@
<widget class="QDoubleSpinBox" name="doubleSpinBox_heatrate_soll">
<property name="geometry">
<rect>
<x>90</x>
<x>80</x>
<y>370</y>
<width>51</width>
<height>31</height>
@@ -577,20 +577,36 @@
<double>0.100000000000000</double>
</property>
</widget>
<widget class="QLabel" name="label_9">
<property name="geometry">
<rect>
<x>0</x>
<y>30</y>
<width>141</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Temperature [°C]</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Power</string>
<string>Heater</string>
</property>
<widget class="QwtSlider" name="Slider_pwr_soll">
<property name="geometry">
<rect>
<x>30</x>
<y>40</y>
<x>10</x>
<y>70</y>
<width>81</width>
<height>311</height>
<height>281</height>
</rect>
</property>
<property name="lowerBound">
@@ -610,6 +626,42 @@
</property>
</widget>
<widget class="QCheckBox" name="checkbox_heater_activate">
<property name="geometry">
<rect>
<x>30</x>
<y>370</y>
<width>81</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Activate</string>
</property>
</widget>
<widget class="QLabel" name="label_10">
<property name="geometry">
<rect>
<x>0</x>
<y>30</y>
<width>141</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Power [W]</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Stirrer</string>
</property>
<widget class="QCheckBox" name="checkbox_stirrer_activate">
<property name="geometry">
<rect>
<x>40</x>
@@ -622,6 +674,47 @@
<string>Activate</string>
</property>
</widget>
<widget class="QwtSlider" name="Slider_speed_soll">
<property name="geometry">
<rect>
<x>40</x>
<y>70</y>
<width>63</width>
<height>281</height>
</rect>
</property>
<property name="lowerBound">
<double>0.000000000000000</double>
</property>
<property name="upperBound">
<double>100.000000000000000</double>
</property>
<property name="scaleMaxMajor">
<number>7</number>
</property>
<property name="scaleMaxMinor">
<number>3</number>
</property>
<property name="scaleStepSize">
<double>0.000000000000000</double>
</property>
</widget>
<widget class="QLabel" name="label_11">
<property name="geometry">
<rect>
<x>0</x>
<y>30</y>
<width>141</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>Speed [%]</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
</item>
</layout>
@@ -640,8 +733,8 @@
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>550</x>
<y>60</y>
<x>480</x>
<y>70</y>
<width>481</width>
<height>374</height>
</rect>
@@ -3454,8 +3547,8 @@
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>590</x>
<y>30</y>
<x>570</x>
<y>40</y>
<width>67</width>
<height>17</height>
</rect>
@@ -3470,8 +3563,8 @@
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>870</x>
<y>30</y>
<x>800</x>
<y>40</y>
<width>67</width>
<height>17</height>
</rect>
@@ -3486,49 +3579,40 @@
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>410</x>
<y>110</y>
<x>980</x>
<y>130</y>
<width>121</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Temperatur [°C]</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<string>Temperature [°C]</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>410</x>
<y>240</y>
<x>980</x>
<y>250</y>
<width>121</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Heizrate [°C/min]</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<string>Heat rate [°C/min]</string>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>430</x>
<y>360</y>
<x>980</x>
<y>380</y>
<width>101</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Leistung [W]</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<string>Power [W]</string>
</property>
</widget>
<widget class="QLabel" name="label_7">
@@ -3601,7 +3685,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>1091</width>
<width>1130</width>
<height>22</height>
</rect>
</property>
+35 -4
View File
@@ -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!")
+50 -22
View File
@@ -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"))