"""
homeassistant.components.thermostat.radiotherm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Adds support for Radio Thermostat wifi-enabled home thermostats

Config:

Example:
thermostat:
    platform: radiotherm
    host:
        - 192.168.99.137
        - 192.168.99.202

Configure two thermostats via the configuration.yaml

"""
import logging
import datetime
from urllib.error import URLError

from homeassistant.components.thermostat import (ThermostatDevice, STATE_COOL,
                                                 STATE_IDLE, STATE_HEAT)
from homeassistant.const import (CONF_HOST, TEMP_FAHRENHEIT)

REQUIREMENTS = ['radiotherm==1.2']


def setup_platform(hass, config, add_devices, discovery_info=None):
    """ Sets up the Radio Thermostat. """
    import radiotherm

    logger = logging.getLogger(__name__)

    hosts = []
    if CONF_HOST in config:
        hosts = config[CONF_HOST]
    else:
        hosts.append(radiotherm.discover.discover_address())

    if hosts is None:
        logger.error("no radiotherm thermostats detected")
        return

    tstats = []

    for host in hosts:
        try:
            tstat = radiotherm.get_thermostat(host)
            tstats.append(RadioThermostat(tstat))
        except (URLError, OSError):
            logger.exception(
                "Unable to connect to Radio Thermostat: %s", host)

    add_devices(tstats)


class RadioThermostat(ThermostatDevice):
    """ Represent a Radio Thermostat. """

    def __init__(self, device):
        self.device = device
        self.set_time()
        self._target_temperature = None
        self._current_temperature = None
        self._operation = STATE_IDLE
        self._name = None
        self.update()

    @property
    def name(self):
        """ Returns the name of the Radio Thermostat. """
        return self._name

    @property
    def unit_of_measurement(self):
        """ Unit of measurement this thermostat expresses itself in. """
        return TEMP_FAHRENHEIT

    @property
    def device_state_attributes(self):
        """ Returns device specific state attributes. """
        return {
            "fan": self.device.fmode['human'],
            "mode": self.device.tmode['human']
        }

    @property
    def current_temperature(self):
        """ Returns the current temperature. """
        return round(self._current_temperature, 1)

    @property
    def operation(self):
        """ Returns current operation. head, cool idle """
        return self._operation

    @property
    def target_temperature(self):
        """ Returns the temperature we try to reach. """

        return round(self._target_temperature, 1)

    def update(self):
        self._current_temperature = self.device.temp['raw']
        self._name = self.device.name['raw']
        if self.device.tmode['human'] == 'Cool':
            self._target_temperature = self.device.t_cool['raw']
            self._operation = STATE_COOL
        elif self.device.tmode['human'] == 'Heat':
            self._target_temperature = self.device.t_heat['raw']
            self._operation = STATE_HEAT
        else:
            self._operation = STATE_IDLE

    def set_temperature(self, temperature):
        """ Set new target temperature """
        if self._operation == STATE_COOL:
            self.device.t_cool = temperature
        elif self._operation == STATE_HEAT:
            self.device.t_heat = temperature
        self.device.hold = 1

    def set_time(self):
        """ Set device time """
        now = datetime.datetime.now()
        self.device.time = {'day': now.weekday(),
                            'hour': now.hour, 'minute': now.minute}

@@ -157,16 +157,196 @@
 %0AConfig:
+%0Athermostat:%0A    platform: radiotherm%0A    hold_temp: boolean to control if hass temp adjustments hold(True) or are temporary(False)%0A    host: list of thermostat host/ips to control
 %0A%0AExampl
@@ -381,24 +381,44 @@
  radiotherm%0A
+    hold_temp: True%0A
     host:%0A  
@@ -518,16 +518,227 @@
 ion.yaml
+.  Temperature settings sent from%0Ahass will be sent to thermostat and then hold at that temp.  Set to False if you set%0Aa thermostat schedule on the tstat itself and just want hass to send temporary temp%0Achanges.
 %0A%0A%22%22%22%0Aim
@@ -1051,16 +1051,41 @@
 =1.2'%5D%0A%0A
+HOLD_TEMP = 'hold_temp'%0A%0A
 %0Adef set
@@ -1498,16 +1498,61 @@
 return%0A%0A
+    hold_temp = config.get(HOLD_TEMP, False)%0A
     tsta
@@ -1695,16 +1695,27 @@
 at(tstat
+, hold_temp
 ))%0A     
@@ -1978,24 +1978,35 @@
 self, device
+, hold_temp
 ):%0A        s
@@ -2185,32 +2185,67 @@
 lf._name = None%0A
+        self.hold_temp = hold_temp%0A
         self.upd
@@ -3964,28 +3964,106 @@
     
-self.device.hold = 1
+if self.hold_temp:%0A            self.device.hold = 1%0A        else:%0A            self.device.hold = 0
 %0A%0A  

Add hass configuration parameter hold_temp & config documentation