Porte de garage BFT TIR 60

J’ai fini par ajouter deux capteurs ouverture/fermeture sonoff en m’inspirant de Détecter ouverture porte de garage - #3 par Jeffodilo.

Config du cover personnalisé :

cover:
  - name: "Porte garage"
    device_class: garage

    open_cover:
      - service: switch.turn_on
        target:
          entity_id: switch.porte_de_garage
    close_cover:
      - service: switch.turn_on
        target:
          entity_id: switch.porte_de_garage
    stop_cover:
      - service: switch.turn_on
        target:
          entity_id: switch.porte_de_garage

    position: >-
      {% set GO = is_state('binary_sensor.porte_garage_ouverte', 'on') %}
      {% set GF = is_state('binary_sensor.porte_garage_fermee', 'on') %}

      {% if GO and not GF %}
        0
      {% elif not GO and GF %}
        100
      {% else %}
        50
      {% endif %}

    icon: >-
      {% set GO = is_state('binary_sensor.porte_garage_ouverte', 'on') %}
      {% set GF = is_state('binary_sensor.porte_garage_fermee', 'on') %}

      {% if GO and not GF %}
        mdi:garage-variant
      {% elif not GO and GF %}
        mdi:garage-open-variant
      {% else %}
        mdi:garage-alert-variant
      {% endif %}

Et pour le dashboard :

type: custom:button-card
entity: cover.porte_garage
tap_action:
  action: call-service
  service: switch.turn_on
  target:
    entity_id: switch.porte_de_garage
show_state: false
label: |-
  [[[
    const GO = hass.states['binary_sensor.porte_garage_ouverte'].state === 'on';
    const GF = hass.states['binary_sensor.porte_garage_fermee'].state === 'on';

    if (GO && !GF) return 'Fermée';
    else if (!GO && GF) return 'Ouverte';
    else return 'Entre ouverte';
  ]]]
show_label: true
styles:
  card:
    - height: 120px
  label:
    - color: gray
    - font-size: 9px
    - padding: 0px 5px

Pas réussi à accéder à la position du cover dans le button-card.