thermostat: split up services

This commit is contained in:
Michael Auchter 2016-01-24 12:02:23 -06:00
parent df450c3d1f
commit afa4fc4ef5

View File

@ -75,28 +75,39 @@ def setup(hass, config):
SCAN_INTERVAL, DISCOVERY_PLATFORMS) SCAN_INTERVAL, DISCOVERY_PLATFORMS)
component.setup(config) component.setup(config)
def thermostat_service(service): descriptions = load_yaml_config_file(
""" Handles calls to the services. """ os.path.join(os.path.dirname(__file__), 'services.yaml'))
def away_mode_set_service(service):
""" Set away mode on target thermostats """
# Convert the entity ids to valid light ids
target_thermostats = component.extract_from_service(service) target_thermostats = component.extract_from_service(service)
if service.service == SERVICE_SET_AWAY_MODE:
away_mode = service.data.get(ATTR_AWAY_MODE) away_mode = service.data.get(ATTR_AWAY_MODE)
if away_mode is None: if away_mode is None:
_LOGGER.error( _LOGGER.error(
"Received call to %s without attribute %s", "Received call to %s without attribute %s",
SERVICE_SET_AWAY_MODE, ATTR_AWAY_MODE) SERVICE_SET_AWAY_MODE, ATTR_AWAY_MODE)
return
elif away_mode:
for thermostat in target_thermostats: for thermostat in target_thermostats:
if away_mode:
thermostat.turn_away_mode_on() thermostat.turn_away_mode_on()
else: else:
for thermostat in target_thermostats:
thermostat.turn_away_mode_off() thermostat.turn_away_mode_off()
elif service.service == SERVICE_SET_TEMPERATURE: thermostat.update_ha_state(True)
hass.services.register(
DOMAIN, SERVICE_SET_AWAY_MODE, away_mode_set_service,
descriptions.get(SERVICE_SET_AWAY_MODE))
def temperature_set_service(service):
""" Set temperature on the target thermostats """
target_thermostats = component.extract_from_service(service)
temperature = util.convert( temperature = util.convert(
service.data.get(ATTR_TEMPERATURE), float) service.data.get(ATTR_TEMPERATURE), float)
@ -108,18 +119,10 @@ def setup(hass, config):
temperature, hass.config.temperature_unit, temperature, hass.config.temperature_unit,
thermostat.unit_of_measurement)) thermostat.unit_of_measurement))
for thermostat in target_thermostats:
thermostat.update_ha_state(True) thermostat.update_ha_state(True)
descriptions = load_yaml_config_file(
os.path.join(os.path.dirname(__file__), 'services.yaml'))
hass.services.register( hass.services.register(
DOMAIN, SERVICE_SET_AWAY_MODE, thermostat_service, DOMAIN, SERVICE_SET_TEMPERATURE, temperature_set_service,
descriptions.get(SERVICE_SET_AWAY_MODE))
hass.services.register(
DOMAIN, SERVICE_SET_TEMPERATURE, thermostat_service,
descriptions.get(SERVICE_SET_TEMPERATURE)) descriptions.get(SERVICE_SET_TEMPERATURE))
return True return True