Icone et couleur variable en fonction de l'état

Bonjour

Je suis un peu perdu dans les différents postes du forum sur le sujet de la colorisation des icones en fonction de l’état et je souhaite aussi changer l’icone par la même occasion :slight_smile:

En effet j’ai vu plusieurs choses plus ou moins complète mais qui date de 2020, puis il y a eu des mises à jour de l’outil et au final je n’arrive pas à changer ces deux valeurs !

Mon contexte :
J’ai plusieurs antennes Bluetooth sur des esp32 qui me retourne not_home ou le nom de l’antenne pour un même sensor (ici un nut mini par exemple)

Je souhaite en fonction de la valeur de mon sensor que l’icone soit vert ou gris par exemple et que l’icone soit un mdi: bluetooth ou mdi:nluetooth-off en plus.

dans des tests il y a plusieurs mois, il me semblait avoir réussi le truc en passant par un fichier customize.yaml avec le code suivant :

sensor.nut_mini_jerome:
  templates:
    icon: >
      if (state === 'not_home') return 'mdi:bluetooth-off'; return 'mdi:bluetooth';
    icon_color: >
      icon_color: if (state <> 'not_home') return 'red'; return 'green';

il me semble que l’icone est bien pris en compte mais pas la couleur !
image

Mais je doute de moi pour le coup et je doute aussi sur le fait que cela fonctionne encore avec les mise à jour de HA

Bref c’est la patauge comme on dit si bien :slight_smile:

Merci de votre aide

Hello

Essai cela

sensor.nut_mini_jerome:
  show_last_changed: true
  templates:
    icon: >
      if (state === 'home') return 'mdi:bluetooth';
      return 'mdi:bluetooth-off';
    icon_color: >
      if (state === 'home') return 'blue';
      return 'grey';

Salut,
@ClassicRed tu rajoute pas un else ?
j’ai un else moi, je pensais que c’était obligatoire .

binary_sensor.0x00158d0007ef4edc_contact:
  friendly_name: Porte Entrée
  templates:
    icon_color: "if (state === 'on') return '#ff0000'; else return '#00b300';"
    icon: "if (state === 'on') return 'phu:panel-glass-door2-open'; else return 'phu:panel-glass-door2-close';"

Re,
possible c’est un vieux code que j’ai repêché dans une backups de 2021 de mon HA

Il est la ton soucis, c’est

icon_color: if (state === 'not_home') return 'red'; return 'green';

@WarC0zes
Je sais pas si c’est mon soucis mais j’ai 5/6 antennes avec des noms différents
Donc je ne voulais pas faite un if (state === ‹ BT_antenne1 ›) alors xxxx sinon xxxxx puis if (state === ‹ BT_antenne ›) alors yyyy sinon yyyy

du coup j’ai pris le sujet dans l’autre sens mais effectivement j’ai fait deux fois la négation pour le coup là

je relance pour voir si mieux ou pas :slight_smile:
Car quand tu pars à la dérive et bien je crois que c’est la glissade aussi sur la carte :upside_down_face: :rofl:
ça marche par alors mode on touche à tout et panique à bord non mais allo quoi !!

tu customize chaque entité des antennes, pas trop le choix.

Sinon fait un groupe en yaml et customise que le groupe

group.yaml:

grp_person:
  name: grp_person
  entities:
    - person.xxxxx
    - person.xxxxx
    - person.xxxxx
    - person.xxxxx

customize.yaml:

group.grp_person:
  friendly_name: Famille xxxxxxxx
  templates:
    icon_color: "if (state === 'home') return '#00b300'; else return '#ff0000';"
    icon: "if (state === 'home') return 'mdi:account'; else return 'mdi:account-off';"

Alors voici un carte comme je l’attendais c’est top merci de votre coup de pouce :wink:

image

je mets le code pour ceux qui se casserait le nez bêtement comme moi

Code de la carte
show_name: true
show_icon: true
show_state: true
type: glance
entities:
  - entity: sensor.myfox_jerome
    name: MyFox
  - entity: sensor.nut_mini_jerome
    name: Nut
  - entity: sensor.espresense_iphone_jerome
    name: iPhone
title: BT Jérôme
state_color: true
columns: 3

Ensuite dans le fichier customize.yaml j’ai mis ceci sur les conseils de @ClassicRed et @WarC0zes

sensor.nut_mini_jerome:
  friendly_name: nut mini jérôme
  show_last_changed: true
  templates:
    icon: >
      if (state === 'not_home') return 'mdi:bluetooth-off';
      return 'mdi:bluetooth';
    icon_color: >
      if (state === 'not_home') return 'grey';
      return 'green';

@WarC0zes Je suis d’accord avec toi sur plusieurs entités mais là j’ai une seule entité qui peut prendre plusieurs valeurs dont une seule est « fausse » le not_home.

mon sensor pour le nut sensor.nut_mini_jerome peut prendre les valeurs suivantes :

  • BT_Salon (présent)
  • BT_Palier (présent)
  • BT_Couloir (présent)
  • BT_Garage (présent)
  • BT_Atelier (présent)
  • Not_Home (absent)

Donc avec ceci pas moyen de faire le groupe dont tu parles.
Par contre entre les 3 éléments mon screen peut être que cela fonctionne oui.

Le but est juste de faire un affichage claire de ce qui est capté ou non et souvent c’est synonime de « plus de piles » (car l’info batterie ne remonte pas sur ces objets. (le téléphone c’est pour jouer sur le cas absent car lui j’ai la batterie :slight_smile: )

2 « J'aime »