Picture-elements / state_image avec conditions

Bonjour,

je planche depuis plusieurs jours sur le fait de mettre une condition(ou plus) dans une image de picture element,.
dans la console de modèles, cela fonctionne bien, mais lors de la transposition dans la carte, l’image ne s’affiche pas du tout et j’ai un gros paté a la place. :frowning:

j’ai essayé avec des quotes, des quotes quotes, des doubles quotes, des {%, etc… rien n’y fait.

si vous avez une idée, voici un bout de code, le principe est de mettre un test sur un boolean, ou autre lorsque l’entité est dans un état ou elle doit afficher une image particulière.

si je mets par defaut cela :

    state_image:
      on: /local/images/test/etat_on.png
      off: /local/images/test/etat_off.png

cela fonctionne très bien, c’est le principe du picture-elements, de mon coté, je veux introduire un test en plus sur une autre entité dans une des conditions, par exemple sur la condition ON en mettant :

    state_image:
      on: |
        {% if states['input_boolean.test01'].state  == 'off' %}
          /local/images/test/etat_1.png
          {% else %}
          /local/images/test/etat_on.png
        {% endif %}
      off: /local/images/test/etat_off.png

et là, cela ne fonctionne plus dans la card pour la condition ON alors que pour OFF, c’est toujours ok… et dans dans la console, cela est ok.

voici le résultat de la console, on voit bien qu’il a prit la bonne image :

voici un exemple de code complet :

type: picture-elements
image: /local/images/fond01.png
style:
  width: 20%
  height: 20%
elements:
  - type: image
    entity: light.bureau
    state_image:
      on: |
        {% if states['input_boolean.test01'].state  == 'off' %}
          /local/images/test/etat_1.png
          {% else %}
          /local/images/test/etat_on.png
        {% endif %}
      off: /local/images/test/etat_off.png
    style:
      top: 33%
      left: 53%
      width: 25%

si vous avez des idées.
merci par avance.

Salut

Sans doute un truc que j’ai pas compris.
Pourquoi ne pas utiliser l’input directement pour afficher la bonne image de la lampe ?

hello,

moi j’ai fait ça

    state_image:
      "on": /local/plan3D/ouverte.gif
      "off": /local/plan3D/base.png
      unavailable: /local/plan3D/defaut.gif

ça n’irait pas?

cdt

1 « J'aime »

Ou même deux type image superposés… Je ne comprends pas l’objectif ni le test

pour une lampe je vois pas trop, pour mes ouvrants par contre fermé / ouvert / capteur en défaut j’ai l’état qui remonte via mes pi si pas ouvert ou pas fermé :wink:

donc tri state, après dans l’absolu il n’ y a pas de limite que l’outil quand on pousse les concepts dans les extrêmes :smiley:
cdt

edit, en y pensant on peut aussi jouer directement sur la lampe, fond « éteint » lampe jaune fond « allumé » lampe noire parce que pas facile de voir une lampe jaune sur un fond jaume… pas trouvé mieux pour le moment

Anim1

Pour mes volets j’ai 5 valeurs. Jai fait un sensor qui créer des paliers. Et une carte avec 5 états.
Ça consomme sans doute plus de temps à caculer la position pour chaque affichage toute la journée journée sur la console de la maison que de faire ça dans un sensor qui ne fait le truc que quand le volet bouge

1 « J'aime »

Parce que je ne veux pas afficher une image par rapport a un état d’une entité, (la lampe est un exemple), mais par rapport a un état d’une entité, mais pas tout le temps, et a un attribut d’une autre entité, ou d’une autre condition.
les trucs simple comme ça :

    state_image:
      "on": /local/plan3D/ouverte.gif
      "off": /local/plan3D/base.png
      unavailable: /local/plan3D/defaut.gif

cela ne me convient pas car cela teste QUE l’état d’une entité, et pas un second paramètre en plus qui est une condition, mais pas tout le temps dans l’état de l’entité, suivant l’état, j’affiche une image, et suivant un etat particulier, j’ai besoin de tester un attribu d’une seconde entité en plus pourt afficher non pas l’image de l’état de l’entité, mais une autre…sinon, cela ne serait pas amusant et trop facile a faire, d’ou le casse tete que j’ai depuis quelques jours, sur je pense le fond et la forme de la formule, qui fonctionne bien dans la console, mais en transposition dans la carte ne fonctionne plus.

le boolean est un exemple comme un autre, il fait exactement comme si je testais n’importe quoi.
mais si la solution est de passer par un sensor intermédiaire, je vais continuer a chercher dans mon sens, car les sensor, j’en ai tellement… surtout que ce type de sensor ne sera pas utilisé ailleurs.

mais du coup pourquoi tu fais pas une carte conditionnelle au pire pour afficher ou pas l’entité? ou pas suivant l’état et ou la condition ou les deux, gaffe ça pique tout de suite en codage dès qu’on arrive à 3

j’ai pas testé sur autre chose que des états

  - type: conditional
    conditions:
      - entity: light.applique_g
        state: "on"
      - entity: light.applique_d
        state: "off"
      - entity: light.lampe
        state: "on"
    elements:
      - type: image

faut relire la doc

state_filter:
  "on": brightness(110%) saturate(1.2)
  "off": brightness(50%) hue-rotate(45deg)

pour l’exemple

si j’ai tout compris
cdt

oui, j’avais vu cela, mais jamais réussis a la faire fonctionner, car apparemment, cela regarde les attribut de l’entité, mais cela ne fonctionne pas… ou je m’y suis pris comme un pied, c’est aussi une possibilité :slight_smile:

Re,

J’ai pas creusé plus avant je n’utilise pas (encore lol) les attributs, je ne dois pas avoir été assez loin dans mon plan :slight_smile:
cdt

Je sais qu’il est tôt et que j’ai pas encore assimiler mon shot de caféine mais là d’un bloc c’est chaud :sweat_smile:
Avec un vrai exemple :
J’ai besoin d’afficher un calque qui correspond non pas à l’état de ma lampe mais à sa couleur…

Si c’est ça, un truc facile c’est de faire une entité qui vaut la valeur de ton attribut. Et l’image ce base sur l’entité nouvelle.
Plus simple qu’une pile de cartes conditionnelles

1 « J'aime »

:slight_smile:
dès que j’ai la solution, je posterai… je vais trouver, c’est en étant persévérant que l’on trouve. tjrs une solution a ce que l’on veut faire.

ça, je sais faire, et c’est très simple :slight_smile:
je change l’icone de la lampe si elle est verte, rouge bleue, etc… pas de soucis, mais ce n’est pas ce que je cherche dans ma démarche, c’est avoir l’état d’une entité et un attribu d’une autre , sans passer par un sensor, car j’en ai déja pas mal.
mais comme j’ai dit, je vais trouver , ce n’est qu’une histoire de mise en forme de la formule.
Merci en tout cas

Avec ces cartes, sans passer par un sensor, je pense que c’est mort… Il n’y pas d’évaluation du syntaxe jinja dans le code.

Enfin tu me diras

NB : avoir un sensor en plus ou en moins c’est pas grave, si ça ta simplifie la vie au niveau des dashboard c’est pas perdu.
Et puis typiquement c’est un sensor dont on se fiche de l’historique (donc à exclure dans le recoder si c’est pas le comportement) par défaut

Bonjour,

tu peux le faire avec une custom:button-card… Tu indiques toutes les conditions que tu veux sans avoir besoin de préciser une entité et tu modifies l’afficahge en fonction.

Sauf qu’au niveau rendu de l’affichage, c’est pas forcément pareil.
A voir si ça convient