King Of Fans MR101Z missing MAX setting

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. :laughing:

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

1 Like