ESPHome Cover visual/logical issue

I have defined my first ESPHome cover (of type timer) and it is discovered fine by HA.
Using ESPHome API and not MQTT interface to HA.

The issue is that the position indicator and open/close arrows in HA entity are confusing - the arrows don’t get greyed out as they should and the Blue position inidcator is mirrored relative to the up/down arrows.
The only thing that looks OK is the shutter icon on the left.
ESPHome defines closed as 0% and open as 100%.
As you can see the HA States shows the blind as closed and 0% which it is indeed (physically)

  • 1st, It would look more logical if the up-down arrows could be reversed - can they? Or maybe reverse percentage (100% closed, 0% open)? I know that for zwave these options exist.
  • 2nd Why doesn’t the down arrow (close) gery out? It should shouldn’t it? as HA knows it is in closed position…

regarding the 2nd point I made I found that the assumed_state was true - changed it to false and now arrow is greyed out.
Why is this the default?

Still wandering regarding 1st point…

Invert you’re logic in the ESP config?

ו though about it but then the physical buttons on the actual switch will be wrong…

Strongly agree, the DOWN arrow MUST be on the left side of the User Interface and the UP arrow on the right side and this applies to any User Interface used to control any type of Covers, Roller Blinds…

I added a feature request

I have the same issue… I made a time based cover in esphome to control my external sunscreens and for some reason the position or open/closed state get reversed. Ended up creating a template cover in HA to reverse the open/close buttons and ‘copy’ the position state of my esphome cover.

  - platform: template
        friendly_name: "Screen 1"
        device_class: shade
        position_template: "{{ state_attr('cover.screen_esphome_1', 'current_position') }}"
          service: cover.close_cover
          entity_id: cover.screen_esphome_1

          service: cover.open_cover
          entity_id: cover.screen_esphome_1
          service: cover.stop_cover
          entity_id: cover.screen_esphome_1

          service: cover.set_cover_position
            position: "{{ position }}" 
            entity_id: cover.screen_esphome_1

The only thing that still is not working properly is greyed-out buton. I did have to set assumed_state to true, because the wrong buttons keep getting greyed-out.


i’m dealing with the same problem. For me, 100% should be closed, so I wired the Motor the “wrong” way.

The template seems like a good solution. Is it possible to define a template for a whole class/group of devices, so I don’t have to include it for every single shutter?

Best Regards

@Taraman If you wired it the wrong way don’t the physical buttons/switch work the wrong way as well? or don’t you have phsical buttons/switch

If you think this is needed please vote on the feature request.

I also switched the cables in the physical switches. :innocent:

Vote is in.

Can you send a picture of the switch?

Does that help? Or would you rather need a picture of the wiring side?

Did you have to turn your switch around so the buttons make sense?
I can’t turn mine around because the markings are different for up and down (not symmetrical)

Actually turning around the switch would give you the same picture. :yum:

In this sketch, you can see the Motor (in my case the z-Wave Module) is connected to the contacts AUF (up) und AB (down). So i just switched these cables and I got kind of a “double-negative”.

Before changing wiring I am trying to understand the logic.

I have a wifi switch with 2 physical buttons (CLOSE, OPEN - as seen in previous picture of the switch) and 2 internal relays (L1, L3), running ESPhome - I decide which physical button operates which relay (they are not hard wired to each other).

When I instruct interanly via ESPhome to open ( it will always return state opened with position 100%
When instruct interanly via ESPhome to close (cover.close) it will always return state closed with position 0%.
It doesn’t matter how things are wired and which button I press - if these are the commands I send these will be the states (open/close/position) HA will see…
The butttons and relays play no role in the state itself - they just fascilitate the user and the movement.

For example, if for physical OPEN button I sent the cover.close command (using either L1/L3 relay) and wire the motor to go down (because that is the direction the motor is supposed to move) - I will get status closed with 0% - No good

Help me understand where I am missing something in my understanding - if I am :wink:

Ah, your switch and wifi Module is in 1 piece.

My setup has 2 devices. A z-wave relay and an up/down switch. The Motor is connected to the z-wave relay and the relay to the switch. Thus I have two points where I can switch cables.

You have only 1, so my solution is not possible for you.

Best regards

And as a conclusion, what I did to solve the Problem:

I just eliminated the switches in my UI. I made a custom card showing only the position in % and a slider to move the shutter:

This uses the following plugins:

  • slider-entity-row
  • card-templater
  • card-tools

The Code for the card then is as follows:

    - entity: cover.rolladen_arbeitszimmer_level
      full_row: true
      hide_state: true
      name: Rolladen
      step: 1
      type: 'custom:slider-entity-row'
  icon: 'mdi:window-shutter'
  title_template: >
    Rolladen {{ state_attr('cover.rolladen_arbeitszimmer_level',
    'current_position') }}%
  type: entities
  - cover.rolladen_arbeitszimmer_level
type: 'custom:card-templater'

As laid out above, my physical switches are apart from the z-wave module and thus could be wired to operate in the right direction.