Changement de couleur d'un icône en fonction d'un input_boolean

Bonjour à tous,

je viens vers vous suite à un problème que je rencontre concernant la personnalisation des cartes.
J’ai actuellement une carte « glance » avec une entité à l’intérieur m’indiquant la consommation électrique de mon radiateur.
J’ai créé une entrée input_boolean qui change d’état suivant que le radiateur est en mode off ou en mode confort.
J’aimerai donc pouvoir changer la couleur de l’icône de mon entité en fonction de cet input_boolean.

Malheureusement, tout ce que j’ai pu tester n’a abouti à rien du tout.

Si vous avez une piste sur laquelle je pourrai me lancer et essayer de résoudre mon problème, ça serai sympa de votre part :slight_smile:

Salut,

Tu as essayé de passer par le template cutom ?

homeassistant:
  customize:
    input_boolean.etat_chauffage:
      templates:
        icon: >
          if (state === 'on') return 'mdi:radiator';
          return 'mdi:radiator-off';
        icon_color: >
          if (state === 'on') return 'rgb(251, 210, 41)';
          return 'rgb(54, 95, 140)';

J’avais essayé un truc du genre mais en passant directement par le YAML de la carte en question. Mais je n’avais rien de bien concluant

Donc refait comme dans mon exemple… ça fonctionne

Visiblement, ça ne fonctionne pas chez moi…

Il n’y a pas de raison… Par contre c’est pas à faire dans la carte… Mais dans la partie customize du configuration.yaml

Oui, j’étais au bon endroit pour ça :
Screenshot_20220208_212101

Tu redémarré le core ?

Oui… Et rien n’y fait…

Vérifie ce que ça donne avec la carte entity

icon

Pas de changement… L’icône ne bouge pas d’un poil…

Et coté outils dev, tu as quoi ?

Hello,

Ca sent l’icone forcée dans lovelace qui prend la priorité sur le yaml de l’entité :thinking: :

Voilà ce que j’ai :

editable: true
friendly_name: Etat Radiateur - Couloir
templates:
  icon: |
    if (state === 'on') return 'mdi:radiator'; return 'mdi:radiator-off';
  icon_color: |
    if (state === 'on') return 'rgb(251, 210, 41)'; return 'rgb(54, 95, 140)';

@AlexHass aucun icône forcée

En fait je pensais à la carte lovelace.

Tu ne veux pas partager la même image que moi / le bloc complet ? Là on ne voit pas l’état actuel (on/off) et on ne voit pas la résultat du calcul pour icon et icon_color

@AlexHass Même à la carte Lovelace, aucun icône forcé…

@Pulpy-Luke voilà
Screenshot_20220209_051101

Bon après avoir fait des tests dans tous les sens.

Je viens de me rendre compte que cela fonctionne en ajoutant la ressource custom-ui.js

@Pulpy-Luke je reviens sur ces lignes concernant la customisation. Si tu veux économiser des lignes, tu peux passer de ça :

homeassistant:
  customize:
    input_boolean.etat_chauffage:
      templates:
        icon: >
          if (state === 'on') return 'mdi:radiator';
          return 'mdi:radiator-off';
        icon_color: >
          if (state === 'on') return 'rgb(251, 210, 41)';
          return 'rgb(54, 95, 140)';

à ça :

homeassistant:
  customize:
    input_boolean.etat_chauffage:
      templates:
        icon: >
          return (state === 'on') ? 'mdi:radiator' : 'mdi:radiator-off';
        icon_color: >
          return (state === 'on') ? 'rgb(251, 210, 41)' : 'rgb(54, 95, 140)';

Ça revient exactement à la même chose mais ça fait des lignes en moins. Surtout quand tu commences à customiser tout et n’importe quoi :wink:
le state === 'on', ce n’est pas une obligation de le mettre en parenthèse mais j’aime bien le faire car comme ça, je vois tout de suite la condition qui est testée.

Salut.

Oui, je fais pas trop la chasse au nombre de lignes, ni à la quantité de commentaires.
Après je trouve ça moins lisible, c’est une simple question de goût.

1 « J'aime »