Fix reported temperatures in Maxcube (#41259)

This commit is contained in:
Brett 2020-10-06 18:06:54 +10:00 committed by GitHub
parent 2fabd4edb8
commit b6b85d3e0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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