From cbb390a918f62f2bdef6a8cceda327f0024bb45e Mon Sep 17 00:00:00 2001 From: Daniel Hoyer Iversen Date: Thu, 23 Jul 2015 18:13:46 +0200 Subject: [PATCH] Custom min/max temperature for thermostat --- .../components/thermostat/__init__.py | 20 ++++++++++++++++++- .../components/thermostat/heat_control.py | 20 ++++++++++--------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/thermostat/__init__.py b/homeassistant/components/thermostat/__init__.py index 08940b977c9..dffa7dfcc26 100644 --- a/homeassistant/components/thermostat/__init__.py +++ b/homeassistant/components/thermostat/__init__.py @@ -11,7 +11,7 @@ from homeassistant.helpers.entity_component import EntityComponent import homeassistant.util as util from homeassistant.helpers.entity import Entity from homeassistant.const import ( - ATTR_ENTITY_ID, ATTR_TEMPERATURE, STATE_ON, STATE_OFF) + ATTR_ENTITY_ID, ATTR_TEMPERATURE, STATE_ON, STATE_OFF, TEMP_CELCIUS) DOMAIN = "thermostat" DEPENDENCIES = [] @@ -24,6 +24,8 @@ SERVICE_SET_TEMPERATURE = "set_temperature" ATTR_CURRENT_TEMPERATURE = "current_temperature" ATTR_AWAY_MODE = "away_mode" +ATTR_MAX_TEMP = "max_temp" +ATTR_MIN_TEMP = "min_temp" _LOGGER = logging.getLogger(__name__) @@ -131,6 +133,22 @@ class ThermostatDevice(Entity): if device_attr is not None: data.update(device_attr) + if hasattr(self, ATTR_MIN_TEMP): + min_temp = self.hass.config.temperature( + getattr(self, ATTR_MIN_TEMP), self.unit_of_measurement)[0] + else: + min_temp = self.hass.config.temperature( + 7, TEMP_CELCIUS)[0] + data[ATTR_MIN_TEMP] = min_temp + + if hasattr(self, ATTR_MAX_TEMP): + max_temp = self.hass.config.temperature( + getattr(self, ATTR_MAX_TEMP), self.unit_of_measurement)[0] + else: + max_temp = self.hass.config.temperature( + 35, TEMP_CELCIUS)[0] + data[ATTR_MAX_TEMP] = max_temp + return data @property diff --git a/homeassistant/components/thermostat/heat_control.py b/homeassistant/components/thermostat/heat_control.py index d21245dae3a..273f1173da8 100644 --- a/homeassistant/components/thermostat/heat_control.py +++ b/homeassistant/components/thermostat/heat_control.py @@ -90,16 +90,18 @@ class HeatControl(ThermostatDevice): self.target_sensor_entity_id = config.get("target_sensor") self.time_temp = [] - for time_temp in list(config.get("time_temp").split(",")): - time, temp = time_temp.split(':') - time_start, time_end = time.split('-') - start_time = datetime.datetime.time(datetime.datetime. - strptime(time_start, '%H%M')) - end_time = datetime.datetime.time(datetime.datetime. - strptime(time_end, '%H%M')) - self.time_temp.append((start_time, end_time, float(temp))) + if config.get("time_temp"): + for time_temp in list(config.get("time_temp").split(",")): + time, temp = time_temp.split(':') + time_start, time_end = time.split('-') + start_time = datetime.datetime.time( + datetime.datetime.strptime(time_start, '%H%M')) + end_time = datetime.datetime.time( + datetime.datetime.strptime(time_end, '%H%M')) + self.time_temp.append((start_time, end_time, float(temp))) self.min_temp = float(config.get("min_temp")) + self.max_temp = float(config.get("max_temp")) self._manual_sat_temp = None self._away = False @@ -178,7 +180,7 @@ class HeatControl(ThermostatDevice): if not self._heater_manual_changed: pass else: - self.set_temperature(100) + self.set_temperature(self.max_temp) self._heater_manual_changed = True