Example #1
0
    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])
Example #3
0
    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)
Example #4
0
    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()