Fix nuheat reverting to auto mode after setting temp hold (#33772)

* Fix nuheat reverting to auto mode after setting temp hold

* clamp temp
pull/33814/head
J. Nick Koston 2020-04-07 12:16:31 -05:00 committed by Paulus Schoutsen
parent 1bd1b8339d
commit b9336272d4
2 changed files with 35 additions and 5 deletions

View File

@ -1,6 +1,7 @@
"""Support for NuHeat thermostats.""" """Support for NuHeat thermostats."""
from datetime import timedelta from datetime import datetime, timedelta
import logging import logging
import time
from nuheat.config import SCHEDULE_HOLD, SCHEDULE_RUN, SCHEDULE_TEMPORARY_HOLD from nuheat.config import SCHEDULE_HOLD, SCHEDULE_RUN, SCHEDULE_TEMPORARY_HOLD
from nuheat.util import ( from nuheat.util import (
@ -24,7 +25,16 @@ from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.helpers import event as event_helper from homeassistant.helpers import event as event_helper
from homeassistant.util import Throttle from homeassistant.util import Throttle
from .const import DOMAIN, MANUFACTURER, NUHEAT_API_STATE_SHIFT_DELAY from .const import (
DOMAIN,
MANUFACTURER,
NUHEAT_API_STATE_SHIFT_DELAY,
NUHEAT_DATETIME_FORMAT,
NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME,
NUHEAT_KEY_SCHEDULE_MODE,
NUHEAT_KEY_SET_POINT_TEMP,
TEMP_HOLD_TIME_SEC,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -218,9 +228,22 @@ class NuHeatThermostat(ClimateDevice):
target_schedule_mode, target_schedule_mode,
) )
self._thermostat.set_target_temperature( target_temperature = max(
target_temperature, target_schedule_mode min(self._thermostat.max_temperature, target_temperature),
self._thermostat.min_temperature,
) )
request = {
NUHEAT_KEY_SET_POINT_TEMP: target_temperature,
NUHEAT_KEY_SCHEDULE_MODE: target_schedule_mode,
}
if target_schedule_mode == SCHEDULE_TEMPORARY_HOLD:
request[NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME] = datetime.fromtimestamp(
time.time() + TEMP_HOLD_TIME_SEC
).strftime(NUHEAT_DATETIME_FORMAT)
self._thermostat.set_data(request)
self._schedule_mode = target_schedule_mode self._schedule_mode = target_schedule_mode
self._target_temperature = target_temperature self._target_temperature = target_temperature
self._schedule_update() self._schedule_update()

View File

@ -8,4 +8,11 @@ CONF_SERIAL_NUMBER = "serial_number"
MANUFACTURER = "NuHeat" MANUFACTURER = "NuHeat"
NUHEAT_API_STATE_SHIFT_DELAY = 4 NUHEAT_API_STATE_SHIFT_DELAY = 1
TEMP_HOLD_TIME_SEC = 43200
NUHEAT_KEY_SET_POINT_TEMP = "SetPointTemp"
NUHEAT_KEY_SCHEDULE_MODE = "ScheduleMode"
NUHEAT_KEY_HOLD_SET_POINT_DATE_TIME = "HoldSetPointDateTime"
NUHEAT_DATETIME_FORMAT = "%a, %d %b %Y %H:%M:%S GMT"