From b6b85d3e0cc8890d07b8c01c76e50d199a318429 Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 6 Oct 2020 18:06:54 +1000 Subject: [PATCH] Fix reported temperatures in Maxcube (#41259) --- homeassistant/components/maxcube/climate.py | 33 ++++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/maxcube/climate.py b/homeassistant/components/maxcube/climate.py index 69d9177da5d..eae83acfff9 100644 --- a/homeassistant/components/maxcube/climate.py +++ b/homeassistant/components/maxcube/climate.py @@ -40,6 +40,11 @@ OFF_TEMPERATURE = 4.5 # On (valve fully open) ON_TEMPERATURE = 30.5 +# Lowest Value without turning off +MIN_TEMPERATURE = 5.0 +# Largest Value without fully opening +MAX_TEMPERATURE = 30.0 + SUPPORT_FLAGS = SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE HASS_PRESET_TO_MAX_MODE = { @@ -100,13 +105,17 @@ class MaxCubeClimate(ClimateEntity): def min_temp(self): """Return the minimum temperature.""" device = self._cubehandle.cube.device_by_rf(self._rf_address) - return self.map_temperature_max_hass(device.min_temperature) + if device.min_temperature is None: + return MIN_TEMPERATURE + return device.min_temperature @property def max_temp(self): """Return the maximum temperature.""" device = self._cubehandle.cube.device_by_rf(self._rf_address) - return self.map_temperature_max_hass(device.max_temperature) + if device.max_temperature is None: + return MAX_TEMPERATURE + return device.max_temperature @property def temperature_unit(self): @@ -117,9 +126,7 @@ class MaxCubeClimate(ClimateEntity): def current_temperature(self): """Return the current temperature.""" device = self._cubehandle.cube.device_by_rf(self._rf_address) - - # Map and return current temperature - return self.map_temperature_max_hass(device.actual_temperature) + return device.actual_temperature @property def hvac_mode(self): @@ -195,7 +202,13 @@ class MaxCubeClimate(ClimateEntity): def target_temperature(self): """Return the temperature we try to reach.""" device = self._cubehandle.cube.device_by_rf(self._rf_address) - return self.map_temperature_max_hass(device.target_temperature) + if ( + device.target_temperature is None + or device.target_temperature < self.min_temp + or device.target_temperature > self.max_temp + ): + return None + return device.target_temperature def set_temperature(self, **kwargs): """Set new target temperatures.""" @@ -283,11 +296,3 @@ class MaxCubeClimate(ClimateEntity): def update(self): """Get latest data from MAX! Cube.""" self._cubehandle.update() - - @staticmethod - def map_temperature_max_hass(temperature): - """Map Temperature from MAX! to Home Assistant.""" - if temperature is None: - return 0.0 - - return temperature