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

* Fix nuheat reverting to auto mode after setting temp hold

* clamp temp
pull/33802/head
J. Nick Koston 2020-04-07 12:16:31 -05:00 committed by GitHub
parent 8fb89854d3
commit 81569f10c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 5 deletions

View File

@ -1,6 +1,7 @@
"""Support for NuHeat thermostats."""
from datetime import timedelta
from datetime import datetime, timedelta
import logging
import time
from nuheat.config import SCHEDULE_HOLD, SCHEDULE_RUN, SCHEDULE_TEMPORARY_HOLD
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.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__)
@ -218,9 +228,22 @@ class NuHeatThermostat(ClimateDevice):
target_schedule_mode,
)
self._thermostat.set_target_temperature(
target_temperature, target_schedule_mode
target_temperature = max(
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._target_temperature = target_temperature
self._schedule_update()

View File

@ -8,4 +8,11 @@ CONF_SERIAL_NUMBER = "serial_number"
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"