diff --git a/pytec/tec_qt.py b/pytec/tec_qt.py index b98dc5a..172d5c0 100644 --- a/pytec/tec_qt.py +++ b/pytec/tec_qt.py @@ -75,6 +75,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.fan_power_slider.valueChanged.connect(self.fan_set) self.fan_auto_box.stateChanged.connect(self.fan_auto_set) + self.fan_pwm_recommended = False + self.tec_client: Client = None self.client_watcher: ClientWatcher = None @@ -100,18 +102,21 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.fan_pwm_warning.setPixmap(QtGui.QPixmap()) self.fan_pwm_warning.setToolTip("") - def _hw_rev(self, hw_rev_d: dict): - logging.debug(hw_rev_d) - self.hw_rev_lbl.setText(f"Thermostat v{hw_rev_d['rev']['major']}.{hw_rev_d['rev']['minor']}") - self.fan_group.setEnabled(hw_rev_d["settings"]["fan_available"]) - if hw_rev_d["settings"]["fan_pwm_recommended"]: - self.fan_pwm_warning.setPixmap(QtGui.QPixmap()) - self.fan_pwm_warning.setToolTip("") - else: + def _set_fan_pwm_warning(self): + if self.fan_power_slider.value() != 100: pixmapi = getattr(QtWidgets.QStyle.StandardPixmap, "SP_MessageBoxWarning") icon = self.style().standardIcon(pixmapi) self.fan_pwm_warning.setPixmap(icon.pixmap(16, 16)) self.fan_pwm_warning.setToolTip("Fan power adjustment not recommended on this hardware revision!") + else: + self.fan_pwm_warning.setPixmap(QtGui.QPixmap()) + self.fan_pwm_warning.setToolTip("") + + def _hw_rev(self, hw_rev_d: dict): + logging.debug(hw_rev_d) + self.hw_rev_lbl.setText(f"Thermostat v{hw_rev_d['rev']['major']}.{hw_rev_d['rev']['minor']}") + self.fan_group.setEnabled(hw_rev_d["settings"]["fan_available"]) + self.fan_pwm_recommended = hw_rev_d["settings"]["fan_pwm_recommended"] def fan_update(self, fan_settings): logging.debug(fan_settings) @@ -122,12 +127,16 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.fan_power_slider.setEnabled(not fan_settings["auto_mode"]) with QSignalBlocker(self.fan_auto_box): self.fan_auto_box.setChecked(fan_settings["auto_mode"]) + if not self.fan_pwm_recommended: + self._set_fan_pwm_warning() @asyncSlot(int) async def fan_set(self, value): if self.tec_client is None or self.fan_auto_box.isChecked(): return await self.tec_client.set_param("fan", value) + if not self.fan_pwm_recommended: + self._set_fan_pwm_warning() @asyncSlot(int) async def fan_auto_set(self, enabled):