bug-fix: radiator function

This commit is contained in:
Dirk Alders 2023-01-11 08:17:37 +01:00
parent 045e270a6b
commit 7b0ada6f41
2 changed files with 26 additions and 24 deletions

View File

@ -744,15 +744,6 @@ class nodered_gui_radiator(nodered_gui_timer):
#
RX_KEYS = [KEY_TEMPERATURE, KEY_SETPOINT_TEMP, KEY_SETPOINT_TO_DEFAULT, KEY_BOOST, KEY_AWAY, KEY_SUMMER]
def __init__(self, mqtt_client, topic):
super().__init__(mqtt_client, topic)
self[self.KEY_ENABLE] = True
self.add_callback(self.KEY_AWAY, None, self.enable_gui)
self.add_callback(self.KEY_SUMMER, None, self.enable_gui)
def enable_gui(self, device, key, data):
self.pack(self.KEY_ENABLE, not self.get(self.KEY_AWAY) and not self.get(self.KEY_SUMMER))
#
# TX
#
@ -788,6 +779,14 @@ class nodered_gui_radiator(nodered_gui_timer):
self.logger.debug("Sending %s with content %s", key, str(data))
self.set_summer(data)
def set_enable(self, data):
"""data: [True, False]"""
self.pack(self.KEY_ENABLE, data)
def set_enable_mcb(self, device, key, data):
self.logger.debug("Sending %s with content %s", key, str(data))
self.set_enable(data)
class brennenstuhl_heatingvalve(base):
KEY_LINKQUALITY = "linkquality"

View File

@ -178,30 +178,34 @@ class radiator_function(object):
self.boost_timer = None
self.gui_heating.set_timer('-')
def update_states(self, away_mode=None, summer_mode=None):
if away_mode is not None:
self.__away_mode__ = away_mode
if summer_mode is not None:
self.__summer_mode__ = summer_mode
self.gui_heating.set_away(self.__away_mode__)
self.gui_heating.set_summer(self.__summer_mode__)
self.gui_heating.set_enable(not self.__away_mode__ and not self.__summer_mode__)
def away_mode(self, device, key, value):
self.__away_mode__ = value
self.gui_heating.set_away(value)
if value is True:
self.__summer_mode__ = False
self.gui_heating.set_summer(False)
self.cancel_boost()
self.update_states(away_mode=value, summer_mode=False)
self.heating_valve.set_heating_setpoint(self.default_temperature - self.AWAY_REDUCTION)
else:
self.update_states(away_mode=value)
self.heating_valve.set_heating_setpoint(self.default_temperature)
def summer_mode(self, device, key, value):
self.__summer_mode__ = value
self.gui_heating.set_summer(value)
if value is True:
self.__away_mode__ = False
self.gui_heating.set_away(False)
self.cancel_boost()
self.update_states(away_mode=False, summer_mode=value)
self.heating_valve.set_heating_setpoint(self.SUMMER_TEMPERATURE)
else:
self.update_states(summer_mode=value)
self.heating_valve.set_heating_setpoint(self.default_temperature)
def boost(self, device, key, data):
self.cancel_boost()
if self.boost_timer is None:
self.heating_valve.logger.info('Starting boost mode with setpoint %.1f°C.', self.BOOST_TEMPERATURE)
self.boost_timer = 15*60
@ -210,19 +214,18 @@ class radiator_function(object):
self.boost_timer += 15 * 60
if self.boost_timer > 60 * 60:
self.boost_timer = 60 * 60
self.update_states(away_mode=False, summer_mode=False)
def setpoint_to_default(self, device, key, data):
self.heating_valve.set_heating_setpoint(self.default_temperature)
self.set_heating_setpoint(device, key, self.default_temperature)
def set_heating_setpoint(self, device, key, data):
self.cancel_boost()
self.heating_valve.set_heating_setpoint(data)
self.cancel_boost()
self.update_states(away_mode=False, summer_mode=False)
def get_radiator_setpoint(self, device, key, data):
self.gui_heating.set_setpoint_temperature(data)
if self.__away_mode__:
self.away_mode(device, self.gui_heating.KEY_AWAY, True)
if self.__summer_mode__:
self.summer_mode(device, self.gui_heating.KEY_SUMMER, True)
self.update_states()
if self.boost_timer is None and not self.__away_mode__ and not self.__summer_mode__:
self.regular_temp_setpoint = data