def _set_temperature_and_mode(self, temperature, hvac_mode=None, preset_mode=None): """Set temperature and hvac mode at the same time.""" if self._temperature_unit == "C": target_temperature = celsius_to_nuheat(temperature) else: target_temperature = fahrenheit_to_nuheat(temperature) # If they set a temperature without changing the mode # to heat, we behave like the device does locally # and set a temp hold. target_schedule_mode = SCHEDULE_TEMPORARY_HOLD if preset_mode: target_schedule_mode = PRESET_MODE_TO_SCHEDULE_MODE_MAP.get( preset_mode, SCHEDULE_RUN ) elif self._schedule_mode == SCHEDULE_HOLD or ( hvac_mode and hvac_mode == HVAC_MODE_HEAT ): target_schedule_mode = SCHEDULE_HOLD _LOGGER.debug( "Setting NuHeat thermostat temperature to %s %s and schedule mode: %s", temperature, self.temperature_unit, target_schedule_mode, ) self._thermostat.set_target_temperature( target_temperature, target_schedule_mode ) self._schedule_mode = target_schedule_mode self._target_temperature = target_temperature self._schedule_update()
def test_celsius_to_nuheat(self): tests = [ [5, 481], # min [22, 2217], [69, 6921] # max ] for test in tests: temp = util.celsius_to_nuheat(test[0]) self.assertEqual(temp, test[1])
def set_target_celsius(self, celsius, mode=config.SCHEDULE_HOLD): """ Set the target temperature to the desired celsius, with more granular control of the hold mode :param celsius: The desired temperature in C :param mode: The desired mode to operate in """ temperature = celsius_to_nuheat(celsius) self.set_target_temperature(temperature, mode)
def _set_temperature_and_mode(self, temperature, hvac_mode=None, preset_mode=None): """Set temperature and hvac mode at the same time.""" if self._temperature_unit == "C": target_temperature = celsius_to_nuheat(temperature) else: target_temperature = fahrenheit_to_nuheat(temperature) # If they set a temperature without changing the mode # to heat, we behave like the device does locally # and set a temp hold. target_schedule_mode = SCHEDULE_TEMPORARY_HOLD if preset_mode: target_schedule_mode = PRESET_MODE_TO_SCHEDULE_MODE_MAP.get( preset_mode, SCHEDULE_RUN) elif self._schedule_mode == SCHEDULE_HOLD or (hvac_mode and hvac_mode == HVAC_MODE_HEAT): target_schedule_mode = SCHEDULE_HOLD _LOGGER.debug( "Setting NuHeat thermostat temperature to %s %s and schedule mode: %s", temperature, self.temperature_unit, target_schedule_mode, ) if target_temperature < self._thermostat.min_temperature: target_temperature = self._thermostat.min_temperature if target_temperature > self._thermostat.max_temperature: target_temperature = self._thermostat.max_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()