Cover dans une carte picture-element

Bonjour,
Je cherche à intégrer une entité « cover » dans une carte picture-element.
Je possède une entité cover pour ma porte de garage qui fonctionne correctement quand je l’intègre à un dashboard standard:


En particulier, l’icone varie bien en fonction de la position de la porte (ici fermé, mais a une position « intermédiare » et « ouvert »)

J’aimerais intégrer ce cover dabs une carte picture-element.
Malheureusement je n’arrive pas à récupérer l’icone.
Je pourrais mettre une image variable en fonction de l’état, mais je ne comprends pas pourquoi dans les outils de développement, mon entité cover est toujours dans une état « unknown »… bien que l’icone de l’entité varie bien.

Je possède un
Je pense qu’il me manque un élément dans mon cover pour faire varier son état. Ci-dessous le code de mon cover:

cover:
  - platform: template
    covers:
      garage_door:
        device_class: garage
        friendly_name: "Porte du garage"
        position_template: "{{ states('sensor.position_porte_du_garage_pour_cover') }}"
        open_cover:
          - condition: state
            entity_id: sensor.position_porte_du_garage_pour_cover
            state: "Closed"
          - service: light.turn_on
            target:
              entity_id: light.actionneur_garage_light
        close_cover:
          - condition: state
            entity_id: sensor.position_porte_du_garage_pour_cover
            state: "Open"
          - service: light.turn_on
            target:
              entity_id: light.actionneur_garage_light_2
        stop_cover:
          service: light.turn_on
          target:
            entity_id: light.actionneur_garage_light_2
        icon_template: >-
          {% if is_state('sensor.position_porte_du_garage', 'Ouvert') %}
            mdi:garage-open-variant
          {% elif is_state('sensor.position_porte_du_garage', 'Fermé') %}
            mdi:garage-variant-lock         
          {% else %}
            mdi:garage-alert-variant
          {% endif %}

… et le code du sensor de position de la porte de garage:

    - name: "Position porte du garage pour cover"
      unique_id: position_garage_door
      state: >-
        {% if is_state('binary_sensor.capteur_fermeture_garage_iaszone', 'off') %}
          Closed
        {% elif is_state('binary_sensor.capteur_ouverture_garage', 'off') %}
          Open
        {% else %}
          Closing
        {% endif %}

Salut.

Avec juste le code (et pas les valeurs), c’est pas évident de voir ce qui cloche mais:

  • La position du cover est définie par : position_template
  • Le sensor associé semble être ton deuxième bloc position_garage_door , mais attention celui-ci renvoi des valeurs en majuscules ! Pas certain que ce soit normalisé mais tu utilises les même pour les fonctions open_cover et close_cover donc en principe c’est bon. Au passage, avec un état de porte correcte, mettre des conditions dans ces 2 fonctions est inutile
  • Dernier point et c’est là que ça se corse, icon_template utilise l’état Ouvert/Fermé … C’est pas l’état renvoyé par sensor.position_porte_du_garage_pour_cover (il est en anglais) … Et en plus il y a des accents (c’est pas idéal dans le code, ça passe dans l’affichage)…
1 « J'aime »

Merci @Pulpy-Luke d’essayer de m’aider.
Sur le dernier point ci-dessus, c’est parce que j’ai 2 sensor de position de la porte. Un en français et un en anglais. Je voulais pouvoir afficher l’état en français sur ma carte, tout en ayant le sensor en anglais pour utiliser pour le cover.
Je pense que mon problème vient du fait que le « Position_template » ne se met pas à jour.
PS: je ne comprends pas ton point sur les majuscules. Je veins de mettre à jour en mettant des états « open », « closed » et « closing »… sans changements

Pour la ‹ mise en forme ›, l’idée c’est de garder ce que fait HA de base pour être compatible.
open/opening/closed/closing sont les états par défauts:


Tu peux effectivement mettre Closed mais dans ces cas là, si un carte (issue de HACS) ou un traitement automatique de HA se base sur l’état sans majuscule ça ne marchera pas pour toi.
Ce n’est donc pas une obligation, mais c’est quand même mieux.

Concernant l’affichage français/anglais, tu peux sans doute économiser un sensor et avoir une carte custom à la place. Charge à la carte de faire la ‹ traduction ›. Là aussi ça marche dans les 2 cas mais c’est plus simple avec une carte : multiplier les entités, c’est se rendre la vie plus complexes après au risque de se mélanger les pinceaux.

Redécompose le alors. Quel est la valeur de sensor.position_porte_du_garage_pour_cover ?

Je me réponds à moi même.
Il semble en effet qu’il y a un problème pour updater le cover. Ci-dessous une erreur dans les logs de HA:

Logger: homeassistant.components.template.cover
Source: components/template/cover.py:249
Integration: Template (documentation, issues)
First occurred: 10:56:03 (2 occurrences)
Last logged: 10:56:03

could not convert string to float: ‹ unknown ›
could not convert string to float: ‹ closed ›

cover.garage_door reste en « unknown », alors que sensor.position_porte_du_garage_pour_cover prend bein les états « closed », « closing » et « open » (tout en minuscules maintenant que j’ai corrigé).

En relisant la doc, on voit :


Donc c’est pas du texte qu’il faut mais un nombre (c’est pareil sur ma capture d’écran):

  • etat = texte
  • position = nombre
1 « J'aime »

Victoire, et merci pour ton aide @Pulpy-Luke.
J’ai compris qu’il y a 2 options:

  • position_template qui attend en effet une valeur numérique
  • value-template qui prends les valeurs « open », « closed », « closing » et « opening »
    En remplaçant dans mon code position-template par « value-template », tout fonctionne parfaitement.

Merci encore