Help with automation to control my HVAC speed

I’ve added a bucket load of code to essentially create a zone control system for my under-floor central heating with 2 x 200mm dampers controlled by 2 x Shelly 2.5’s in cover mode. A temp sensor in each bedroom feeds info back to a fake climate devices that prevent the two bedrooms from overheating when the rumpus room (where the main thermostat is located) is turned on.

Thing is, you have to reduce the fan speed if one or both of the dampers is closed to reduce the pressure in the system. With the Mitsi $2500 stock zone control system, this is automated using a pressure sensor installed during the setup.

For now, I’ve simply forced the fan speed to low if any of the two dampers close but this is not dynamic. If the dampers both open to heat the bedrooms, the fan speed does not go back up. Id like the fan speed to be dynamic and to be high when the HVAC is set to heat (and both dampers are open which is the default state), change to medium if one damper closes and down to low if both dampers close. The the reverse as the dampers open back up.

I have played around with the code below and apart from the fan speed going to high on the initial turn on of the HVAC to heat, the other fan modes (replicated by a fake input select for testing) do not change. I’ve been staring at it for so long and trying so many different options, I can’t see the wood for the trees now.

Anyone spot my errors or suggest a better way using a service template?

alias: Test fan speed based on dampers
description: ""
trigger:
  - platform: state
    entity_id:
      - climate.rumpus
    to: heat
    id: Rumpus Climate on Heat
  - platform: state
    entity_id:
      - cover.damper_group
    id: Damper Group Open
    alias: When Position of Damper Group changes to 100 (open)
    attribute: current_position
    to: "100"
  - platform: state
    entity_id:
      - cover.damper_group
    to: "0"
    id: Damper Group Closed
    alias: When Position of Damper Group changes to 0 (closed)
    attribute: current_position
  - platform: state
    entity_id:
      - cover.damper_group
    attribute: current_position
    to: "50"
    id: Damper Group 50%
    alias: When Position of Damper Group changes to 50 (one open, one closed)
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Rumpus Climate on Heat
        sequence:
          - service: input_select.select_option
            data:
              option: High
            target:
              entity_id: input_select.fake_fan_switch
            alias: Set fake fan switch to High
      - conditions:
          - condition: trigger
            id:
              - Damper Group 50%
          - condition: state
            entity_id: climate.rumpus
            state: heat
        sequence:
          - service: input_select.select_option
            data:
              option: Medium
            target:
              entity_id: input_select.fake_fan_switch
            alias: Set fake fan switch to Med
      - conditions:
          - condition: trigger
            id:
              - Damper Group Closed
        sequence:
          - service: input_select.select_option
            data:
              option: Low
            target:
              entity_id: input_select.fake_fan_switch
            alias: Set fake fan switch to Low
      - conditions:
          - condition: trigger
            id:
              - Damper Group Open
        sequence:
          - service: input_select.select_option
            data:
              option: High
mode: single

Seems there is a problem in 2023.8.3 with the cover group state being reported? If I use the hand coded yaml below, it works just fine.

alias: Damper State Test
description: ""
trigger:
  - platform: state
    entity_id:
      - cover.damper_group
    id: Damper State
condition: []
action:
  - service: input_select.select_option
    data:
      option: >-
        {% if is_state_attr('cover.damper_group', 'current_position', 50)%}
        Medium 
        {% elif is_state_attr('cover.damper_group', 'current_position', 100)%} 
        High 
        {% elif is_state_attr('cover.damper_group', 'current_position', 0)%} 
        Low 
        {%endif%}
    target:
      entity_id: input_select.fake_fan_switch
mode: single