I really wish I understood quirks a bit better, I feel like it would almost be easier than what I did. But maybe I think that because I don’t understand quirks.
Anyway, I was able to put together a template and scripts to deal with the new percentages and presets of this fan controller. Figured I’d post it in case anyone else found it helpful.
This is my first template, so there’s probably a ton wrong. I welcome any criticism.
TEMPLATE:
fan:
- platform: template
fans:
office_fan:
friendly_name: "Office fan temp"
unique_id: "jdfskl43443"
value_template: "{{ states('fan.office') }}"
percentage_template: "{{ states('input_number.office_fan_percentage') }}"
preset_mode_template: "{{ states('input_select.office_fan_preset_mode') }}"
turn_on:
service: fan.turn_on
entity_id: fan.office
turn_off:
- service: fan.turn_off
entity_id: fan.office
- service: input_number.set_value
data_template:
entity_id: input_number.office_fan_percentage
value: 0
set_percentage:
service: script.office_fan_set_percentage
data:
percentage: "{{ percentage }}"
set_preset_mode:
service: script.office_fan_set_preset_mode
data_template:
preset_mode: "{{ preset_mode }}"
preset_modes:
- 'max'
- 'breeze'
SCRIPTS:
office_fan_preset_low:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 25
- service: fan.turn_on
data:
percentage: 33
target:
entity_id: fan.office
mode: single
office_fan_preset_medium:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 50
- service: fan.turn_on
data:
percentage: 66
target:
entity_id: fan.office
mode: single
office_fan_preset_high:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 75
- service: fan.turn_on
data:
percentage: 100
target:
entity_id: fan.office
mode: single
office_fan_preset_max:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 100
- service: fan.turn_on
data: {}
target:
entity_id: fan.office
- service: fan.set_preset_mode
target:
entity_id: fan.office
data:
preset_mode: 'on'
mode: single
office_fan_preset_breeze:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 0
- service: fan.turn_on
data: {}
target:
entity_id: fan.office
- service: fan.set_preset_mode
target:
entity_id: fan.office
data:
preset_mode: smart
mode: single
office_fan_set_preset_mode:
sequence:
- service: script.turn_on
data_template:
entity_id: script.office_fan_preset_{{ preset_mode }}
office_fan_set_percentage:
sequence:
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data_template:
value: '{{ percentage }}'
- choose:
- conditions:
- condition: numeric_state
entity_id: input_number.office_fan_percentage
below: 1
sequence:
- service: fan.turn_off
target:
entity_id: fan.office
- conditions:
- condition: numeric_state
entity_id: input_number.office_fan_percentage
below: 26
sequence:
- service: script.office_fan_preset_low
- conditions:
- condition: numeric_state
entity_id: input_number.office_fan_percentage
below: 51
sequence:
- service: script.office_fan_preset_medium
- conditions:
- condition: numeric_state
entity_id: input_number.office_fan_percentage
below: 76
sequence:
- service: script.office_fan_preset_high
- conditions:
- condition: numeric_state
entity_id: input_number.office_fan_percentage
below: 101
sequence:
- service: script.office_fan_preset_max
default: []
mode: single
office_fan_turn_off:
sequence:
- service: fan.turn_off
target:
entity_id: fan.office
- service: input_number.set_value
target:
entity_id: input_number.office_fan_percentage
data:
value: 0
mode: single
edit: Made a couple of adjustments