Making dumb RF blinds Smart

Got some dumb motorized blinds at a great price. I wanted to be able to set them at various positions, like 25%,50%,75% closed. As well as fully open and fully closed.
Youll need a door sensor for each blind.
Youll need a counter helper. Set to a step size of 25. Min is 0, max is 100
Youll need a input number helper. Step size of 25. Min 0, Max of 100. I set mine to slider mode.
Once set up, youll control the blind with the Input Number slider. You can put a card on a dashboard for this. In automations, you can use The Call Service-Input number: Set and set the number of the input number entity to the position you want. Example sun angle automation below.

Automation

alias: Stairway Blind Controller
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.stairway_blind_desired_position
    to: "50.0"
    id: Open Blind
  - platform: state
    entity_id:
      - input_number.stairway_blind_desired_position
    to: "25.0"
    id: Open Blind
  - platform: state
    entity_id:
      - input_number.stairway_blind_desired_position
    to: "75.0"
    id: Open Blind
  - platform: state
    entity_id:
      - input_number.stairway_blind_desired_position
    to: "0.0"
    id: Send Home
  - platform: state
    entity_id:
      - input_number.stairway_blind_desired_position
    to: "100.0"
    id: Open Blind
  - platform: template
    value_template: >-
      {{ states('counter.stairway_blind_counter') | int(0) ==
      states('input_number.stairway_blind_desired_position') | int(0) }}
    for:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 100
    id: Stop Blind
  - type: not_opened
    platform: device
    device_id: 502e07e66c1dba7b2733952d42f546be
    entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_opening
    domain: binary_sensor
    id: Set Counter
    for:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 50
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: Open Blind
        sequence:
          - choose:
              - conditions:
                  - condition: numeric_state
                    entity_id: counter.stairway_blind_counter
                    above: input_number.stairway_blind_desired_position
                sequence:
                  - service: cover.open_cover
                    data: {}
                    target:
                      entity_id: cover.allen_roth
                  - wait_for_trigger:
                      - type: opened
                        platform: device
                        device_id: 502e07e66c1dba7b2733952d42f546be
                        entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_opening
                        domain: binary_sensor
                    timeout:
                      hours: 0
                      minutes: 0
                      seconds: 5
                      milliseconds: 0
              - conditions:
                  - condition: numeric_state
                    entity_id: counter.stairway_blind_counter
                    below: input_number.stairway_blind_desired_position
                sequence:
                  - service: cover.close_cover
                    data: {}
                    target:
                      entity_id: cover.allen_roth
                  - wait_for_trigger:
                      - type: opened
                        platform: device
                        device_id: 502e07e66c1dba7b2733952d42f546be
                        entity_id: binary_sensor.lumi_lumi_sensor_magnet_aq2_opening
                        domain: binary_sensor
                    timeout:
                      hours: 0
                      minutes: 0
                      seconds: 5
                      milliseconds: 0
      - conditions:
          - condition: trigger
            id: Stop Blind
        sequence:
          - device_id: 0c44cd75a79279b72981f4958b083b0a
            domain: cover
            entity_id: cover.allen_roth
            type: stop
      - conditions:
          - condition: trigger
            id: Set Counter
          - condition: state
            entity_id: cover.allen_roth
            state: closed
        sequence:
          - service: counter.increment
            data: {}
            target:
              entity_id: counter.stairway_blind_counter
      - conditions:
          - condition: trigger
            id: Set Counter
          - condition: state
            entity_id: cover.allen_roth
            state: open
        sequence:
          - service: counter.decrement
            data: {}
            target:
              entity_id: counter.stairway_blind_counter
      - conditions:
          - condition: trigger
            id: Send Home
        sequence:
          - device_id: 0c44cd75a79279b72981f4958b083b0a
            domain: cover
            entity_id: cover.allen_roth
            type: open
          - delay:
              hours: 0
              minutes: 2
              seconds: 0
              milliseconds: 0
          - service: counter.configure
            data:
              value: 0
            target:
              entity_id: counter.stairway_blind_counter
mode: single


Example sun angle automation:

alias: Close stairway blind near sunset
description: ""
trigger:
  - platform: numeric_state
    entity_id: sun.sun
    attribute: elevation
    below: 13
    id: Close Blind 75%
  - platform: sun
    event: sunset
    offset: 0
    id: Open Blind
  - platform: numeric_state
    entity_id: sun.sun
    attribute: elevation
    below: 24
    id: Close Blind 50%
condition:
  - condition: state
    entity_id: sun.sun
    attribute: rising
    state: false
action:
  - choose:
      - conditions:
          - condition: trigger
            id: Close Blind 75%
        sequence:
          - service: input_number.set_value
            data:
              value: 75
            target:
              entity_id: input_number.stairway_blind_desired_position
      - conditions:
          - condition: trigger
            id: Open Blind
        sequence:
          - service: input_number.set_value
            data:
              value: 0
            target:
              entity_id: input_number.stairway_blind_desired_position
      - conditions:
          - condition: trigger
            id: Close Blind 50%
        sequence:
          - service: input_number.set_value
            data:
              value: 50
            target:
              entity_id: input_number.stairway_blind_desired_position
mode: single

Made an edit to combine the 2 automations into one for controlling the blinds.
Also put in a mechanism to combat what I call overshooting. This happens when Home Assistant cant get the stop command to the blind before it completely passes the desired magnet. For example, you want to go from 75 to 50%. The blind passes by the magnet before it gets the stop command. So, if you want to go back down to 75% it would count the 50% magnet and stop. If you are going to continue to the 25% stop, it wont be affected.
This is handled with the “wait for trigger” part. Set the timeout for about 40-50% of the time it takes the blind to go from one magnet to the other. Most of the time if it overshoots it will only be just past the magnet. It just takes a second for the blind to respond to the command.

Just wanted to say Thank you! This works amazingly well!

Glad it worked for you.