Service Calls


许多组件都允许通过触发特定的事件调用服务,最常见的是自动化场景触发。 但是脚本和 亚马逊语音服务(Amazon Echo)同样也可以调用服务。

本页所展示的调用服务使用的配置格式在所有组件中通用。

本页将使用自动化组件演示如何调用服务,可使用的调用方式和可适用的组件有很多并不限于自动化部分,请具体问题具体分析。

可以使用主页面左侧栏中的开发者工具 发现可调用的服务。

The basics

以下配置演示如何在群组 group.living_room 中调用 homeassistant.turn_on 服务。该项设定将开启使群组group.living_room中的所有设备。 你也可以省略 entity_id 项,这样这项设定将自动打开所有可供开启的设备。

service: homeassistant.turn_on
entity_id: group.living_room

Passing data to the service call

你也可以在配置中声明相关设备的其他变量。例如,你可以设置开启电灯至某一特定亮度和颜色:

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

Use templates to decide which service to call

你可以运用模板 templating 动态选择所调用的服务。例如,你可以在开灯状态下调用特定的服务:

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

Using the Services Developer Tool

你可以使用开发者工具中的服务面板测试所要调用的服务。

比如,你想要测试开启或关闭群组,有关群组的知识,详见[群组]文档。

开启群组,请在面板中填入如下值: Domain: homeassistant Service: turn_on Service Data: { "entity_id": "group.kitchen" }

Use templates to determine the attributes

传输至所调用服务的信息同样可以使用模板。

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