home-assistant.io/source/_docs/scripts/service-calls.markdown
Fabian Affolter 481320128f Re-organisation Documentation and Getting started (#2055)
* Split MQTT documentation

* Add more details

* Move content to /docs

* Enable sidebar

* Move content to /docs

* Enable sidebar

* Move content

* Update links

* Remove wizard stuff

* Enable sidebar

* Minor changes

* Move MQTT parts to /docs

* update links

* Update links and sync content

* Fix link

* Enable sidebar

* Remove navigation

* Remove navigation and other minor updates

* Update links

* Add overview page

* Make title linkable

* Update

* Plit content

* Update links

* Rearrange content

* New getting-started section

* Add icons for docs

* Update for new structure

* Update for new structure

* Add docs navigation

* Add docs overview page

* Remove ecosystem navigation

* Add docs and remove other collections

* Move ecosystem to docs

* Remove duplicate files

* Re-add ecosystem overview

* Move to ecosystem

* Fix permission

* Update navigation

* Remove collection

* Move overview to right folder

* Move mqtt to upper level

* Move notebook to ecosystem

* Remove un-used files

* Add one more rectangle for iOS

* Move two parts back from docs and rename Run step

* Remove colon

* update getting-started section

* Add redirect

* Update

* Update navigation
2017-02-23 11:09:41 +01:00

2.8 KiB

layout title description date sidebar comments sharing footer redirect_from
page Service Calls Instructions how to call services in Home Assistant. 2016-03-12 12:00 -0800 true false true true /getting-started/scripts-service-calls/

Various components allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo.

The configuration options to call a config are the same between all components and are described on this page.

Examples on this page will be given as part of an automation component configuration but different approaches can be used for other components too.

Use the service developer tool in the frontend to discover available services.

{% linkable_title The basics %}

Call the service homeassistant.turn_on on the entity group.living_room. This will turn all members of group.living_room on. You can also omit entity_id and it will turn on all possible entities.

service: homeassistant.turn_on
entity_id: group.living_room

{% linkable_title Passing data to the service call %}

You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness.

service: light.turn_on
entity_id: group.living_room
data:
  brightness: 120
  rgb_color: [255, 0, 0]

{% linkable_title Use templates to decide which service to call %}

You can use templating support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on.

service_template: >
  {% raw %}{% if states.sensor.temperature | float > 15 %}
    switch.turn_on
  {% else %}
    switch.turn_off
  {% endif %}{% endraw %}
entity_id: switch.ac

{% linkable_title Using the Services Developer Tool %}

You can use the Services Developer Tool to test data to pass in a service call. For example, you may test turning on or off a 'group' (See [groups] for more info)

To turn a group on or off, pass the following info: Domain: homeassistant Service: turn_on Service Data: { "entity_id": "group.kitchen" }

{% linkable_title Use templates to determine the attributes %}

Templates can also be used for the data that you pass to the service call.

service: thermostat.set_temperature
data_template:
  entity_id: >
    {% raw %}{% if is_state('device_tracker.paulus', 'home') %}
      thermostat.upstairs
    {% else %}
      thermostat.downstairs
    {% endif %}{% endraw %}
  temperature: {% raw %}{{ 22 - distance(states.device_tracker.paulus) }}{% endraw %}