diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown index 0a8064afa7b..f707beb020a 100644 --- a/source/_integrations/fan.template.markdown +++ b/source/_integrations/fan.template.markdown @@ -13,6 +13,8 @@ The `template` platform creates fans that combine integrations and provides the ability to run scripts or invoke services for each of the `turn_on`, `turn_off`, `set_percentage`, `set_preset_mode`, `set_oscillating`, and `set_direction` commands of a fan. +## Configuration + To enable Template Fans in your installation, add the following to your `configuration.yaml` file: @@ -146,3 +148,110 @@ When converting a fan with 3 speeds from the old fan entity model, the following 33 - `low` 66 - `medium` 100 - `high` + +## Examples + +### Helper Fan + +This example uses an input_boolean and an input_number to mimic a fan, and +the example shows multiple service calls for set_percentage. + +{% raw %} + +```yaml +fan: + - platform: template + fans: + helper_fan: + friendly_name: "Helper Fan" + value_template: "{{ states('input_boolean.state') }}" + turn_on: + - service: input_boolean.turn_on + target: + entity_id: input_boolean.state + turn_off: + - service: input_boolean.turn_off + target: + entity_id: input_boolean.state + percentage_template: > + {{ states('input_number.percentage') if is_state('input_boolean.state', 'on') else 0 }} + speed_count: 6 + set_percentage: + - service: input_boolean.turn_{{ 'on' if percentage > 0 else 'off' }} + target: + entity_id: input_boolean.state + - service: input_number.set_value + target: + entity_id: input_number.percentage + data: + value: "{{ percentage }}" +``` + +{% endraw %} + +### Preset Modes Fan + +This example uses an existing fan with only a percentage. It extends the +percentage value into useable preset modes without a helper entity. + +{% raw %} + +```yaml +fan: + - platform: template + fans: + preset_mode_fan: + friendly_name: "Preset Mode Fan Example" + value_template: "{{ states('fan.percentage_fan') }}" + turn_on: + - service: fan.turn_on + target: + entity_id: fan.percentage_fan + turn_off: + - service: fan.turn_off + target: + entity_id: fan.percentage_fan + percentage_template: > + {{ state_attr('fan.percentage_fan', 'percentage') }} + speed_count: 3 + set_percentage: + - service: fan.set_percentage + target: + entity_id: fan.percentage_fan + data: + percentage: "{{ percentage }}" + preset_modes: + - "off" + - "low" + - "medium" + - "high" + preset_mode_template: > + {% if is_state('fan.percentage_fan', 'on') %} + {% if state_attr('fan.percentage_fan', 'percentage') == 100 %} + high + {% elif state_attr('fan.percentage_fan', 'percentage') == 66 %} + medium + {% else %} + low + {% endif %} + {% else %} + off + {% endif %} + set_preset_mode: + - service: fan.set_percentage + target: + entity_id: fan.percentage_fan + data: + percentage: >- + {% if preset_mode == 'high' %} + 100 + {% elif preset_mode == 'medium' %} + 66 + {% elif preset_mode == 'low' %} + 33 + {% else %} + 0 + {% endif %} +``` + +{% endraw %}