diff --git a/homeassistant/components/__init__.py b/homeassistant/components/__init__.py index 6db147a5f59..b5ac57080d1 100644 --- a/homeassistant/components/__init__.py +++ b/homeassistant/components/__init__.py @@ -10,6 +10,7 @@ Component design guidelines: import asyncio import itertools as it import logging +import os import homeassistant.core as ha import homeassistant.config as conf_util @@ -110,6 +111,11 @@ def async_reload_core_config(hass): @asyncio.coroutine def async_setup(hass, config): """Set up general services related to Home Assistant.""" + descriptions = yield from hass.async_add_job( + conf_util.load_yaml_config_file, os.path.join( + os.path.dirname(__file__), 'services.yaml') + ) + @asyncio.coroutine def async_handle_turn_service(service): """Handle calls to homeassistant.turn_on/off.""" @@ -149,11 +155,14 @@ def async_setup(hass, config): yield from asyncio.wait(tasks, loop=hass.loop) hass.services.async_register( - ha.DOMAIN, SERVICE_TURN_OFF, async_handle_turn_service) + ha.DOMAIN, SERVICE_TURN_OFF, async_handle_turn_service, + descriptions[ha.DOMAIN][SERVICE_TURN_OFF]) hass.services.async_register( - ha.DOMAIN, SERVICE_TURN_ON, async_handle_turn_service) + ha.DOMAIN, SERVICE_TURN_ON, async_handle_turn_service, + descriptions[ha.DOMAIN][SERVICE_TURN_ON]) hass.services.async_register( - ha.DOMAIN, SERVICE_TOGGLE, async_handle_turn_service) + ha.DOMAIN, SERVICE_TOGGLE, async_handle_turn_service, + descriptions[ha.DOMAIN][SERVICE_TOGGLE]) @asyncio.coroutine def async_handle_core_service(call): @@ -178,11 +187,14 @@ def async_setup(hass, config): hass.async_add_job(hass.async_stop(RESTART_EXIT_CODE)) hass.services.async_register( - ha.DOMAIN, SERVICE_HOMEASSISTANT_STOP, async_handle_core_service) + ha.DOMAIN, SERVICE_HOMEASSISTANT_STOP, async_handle_core_service, + descriptions[ha.DOMAIN][SERVICE_HOMEASSISTANT_STOP]) hass.services.async_register( - ha.DOMAIN, SERVICE_HOMEASSISTANT_RESTART, async_handle_core_service) + ha.DOMAIN, SERVICE_HOMEASSISTANT_RESTART, async_handle_core_service, + descriptions[ha.DOMAIN][SERVICE_HOMEASSISTANT_RESTART]) hass.services.async_register( - ha.DOMAIN, SERVICE_CHECK_CONFIG, async_handle_core_service) + ha.DOMAIN, SERVICE_CHECK_CONFIG, async_handle_core_service, + descriptions[ha.DOMAIN][SERVICE_CHECK_CONFIG]) @asyncio.coroutine def async_handle_reload_config(call): @@ -197,6 +209,7 @@ def async_setup(hass, config): hass, conf.get(ha.DOMAIN) or {}) hass.services.async_register( - ha.DOMAIN, SERVICE_RELOAD_CORE_CONFIG, async_handle_reload_config) + ha.DOMAIN, SERVICE_RELOAD_CORE_CONFIG, async_handle_reload_config, + descriptions[ha.DOMAIN][SERVICE_RELOAD_CORE_CONFIG]) return True diff --git a/homeassistant/components/services.yaml b/homeassistant/components/services.yaml index 9fd47d84fa0..2c743f04471 100644 --- a/homeassistant/components/services.yaml +++ b/homeassistant/components/services.yaml @@ -580,3 +580,31 @@ wink: refresh_state_from_wink: description: Pull the latest states for every device. + +homeassistant: + check_config: + description: Check the Home Assistant configuration files for errors. Errors will be displayed in the Home Assistant log. + reload_core_config: + description: Reload the core configuration. + restart: + description: Restart the Home Assistant service. It is normal to get a "Failed to call service homeassistant/restart" message. + stop: + description: Stop the Home Assistant service. It is normal to get a "Failed to call service homeassistant/stop" message. + toggle: + description: Generic service to toggle devices on/off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + fields: + entity_id: + description: The entity_id of the device to toggle on/off + example: light.living_room + turn_on: + description: Generic service to turn devices on under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + fields: + entity_id: + description: The entity_id of the device to turn on + example: light.living_room + turn_off: + description: Generic service to turn devices off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + fields: + entity_id: + description: The entity_id of the device to turn off + example: light.living_room \ No newline at end of file