I’ tried another implementation based on this post: https://community.home-assistant.io/t/help-new-template-fan-integration-percentage/286823/12?u=jjmuriel , but the error is the same.
fan:
- platform: template
fans:
study_fan:
friendly_name: "Ventilador Estudio"
value_template: "{{ states('input_boolean.study_fan_state') }}"
percentage_template: "{{ states('input_number.study_fan_speed_selector') }}"
turn_on:
service: script.study_fan_on
turn_off:
service: script.study_fan_off
set_percentage:
service: script.study_fan_set_speed_percent
data:
value: "{{ percentage }}"
speed_count: 4
script:
study_fan_off:
alias: Study Fan Off
sequence:
- choose:
- conditions:
- condition: state
entity_id: switch.speed_1
state: 'on'
sequence:
- service: switch.turn_off
target:
entity_id: switch.speed_1
- conditions:
- condition: state
entity_id: switch.speed_2
state: 'on'
sequence:
- service: switch.turn_off
target:
entity_id: switch.speed_2
- conditions:
- condition: state
entity_id: switch.speed_3
state: 'on'
sequence:
- service: switch.turn_off
target:
entity_id: switch.speed_3
- conditions:
- condition: state
entity_id: switch.speed_4
state: 'on'
sequence:
- service: switch.turn_off
target:
entity_id: switch.speed_4
- service: input_boolean.turn_off
target:
entity_id: input_boolean.study_fan_state
study_fan_on:
alias: Study Fan On
sequence:
- service: input_boolean.turn_on
entity_id: input_boolean.study_fan_state
- service: script.study_fan_set_speed_percent
study_fan_set_speed_percent:
alias: Study Fan Set Percentage
sequence:
- service: input_number.set_value
entity_id: input_number.study_fan_speed_percentage
data:
value: "{{ percentage }}"
- delay:
milliseconds: 500
- service: >
{% if states("input_number.study_fan_speed_percentage") | int == 25 %}
script.study_fan_low_speed
{% elif states("input_number.study_fan_speed_percentage") | int == 50 %}
script.study_fan_medium_speed
{% elif states("input_number.study_fan_speed_percentage") | int == 75 %}
script.study_fan_medium_high_speed
{% elif states("input_number.study_fan_speed_percentage") | int == 100 %}
script.study_fan_high_speed
{% else %}
script.study_fan_off
{% endif %}
- service: >
{% if states("input_number.study_fan_speed_percentage") | int == 25 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percentage") | int == 50 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percentage") | int == 75 %}
input_boolean.turn_on
{% elif states("input_number.study_fan_speed_percentage") | int == 100 %}
input_boolean.turn_on
{% else %}
input_boolean.turn_off
{% endif %}
entity_id: input_boolean.study_fan_state
study_fan_low_speed:
alias: Study Fan Low
sequence:
- service: switch.turn_on
entity_id: switch.speed_1
study_fan_medium_speed:
alias: Study Fan Medium
sequence:
- service: switch.turn_on
entity_id: switch.speed_2
study_fan_medium_high_speed:
alias: Study Fan Medium High
sequence:
- service: switch.turn_on
entity_id: switch.speed_3
study_fan_high_speed:
alias: Study Fan High
sequence:
- service: switch.turn_on
entity_id: switch.speed_4
* Ventilador Estudio: Error executing script. Invalid data for call_service at pos 1: expected float for dictionary value @ data['value']