Modifier l’icone d’un switch en fonction d’un capteur

Salut, aujourd’hui je te propose de modifier l’icone d’un switch, dans mon exemple ma porte de garage, en fonction de l’état du capteur pour détecter que la porte est bien fermée.

C’est partie !

Pour pouvoir customiser facilement les icones ou même les couleurs il faut absolument installer custom-ui.

Une fois fait il suffit d’éditer le fichier customize.yaml et d’y ajouter ces lignes :

switch.porte_de_garage:
   templates:
     icon: if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'off') return 'mdi:garage';
       if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'on') return 'mdi:garage-open';
       return 'mdi:home';

Donc en gros, si mon détecteur binary_sensor.detecteur_porte_de_garage est sur Off alors l’icone de mon switch switch.porte_de_garage sera
Si il est sur On ça sera .

Tu peux faire la même chose avec la couleur

A toi de jouer !

16 Comments

  1. Laurent

    Bonjour, peut-on utiliser cette solution pour un bouton ? Je m’explique, j’aimerais mettre un bouton sur mon Dashboard qui ouvre et ferme ma porte de garage mais qui change d’icône en fonction de l’état ouvert/fermé de cette même porte ?

    Merci

    • Tof

      Bonjour,
      c’est exactement se qui est fait dans cet exemple.
      switch.porte_de_garage est un contact sec que j’ai placé sur mon moteur.

      Il garde sa fonctionnalité de base, dans customize.yaml on ne fait que modifier son icone en fonction d’un capteur. Sur ton dashboard il suffit d’ajouter une carte Button et dans Entity : switch.porte_de_garage

  2. dorian

    Bonjour

    Merci pour ce tuto

    J’ai suivi les informations mais impossible de récupérer le switch.porte_de_garage.

    J’ai bien installé custom-ui

    J’ai bien crée un fichier customize.yaml dans config

    J’ai bien coller les lignes de cod avec mais binary.:
    switch.porte_de_garage:
    templates:
    icon: if (entities[‘binary_sensor.port_de_garage_garage_ferme’].state === ‘off’) return ‘mdi:garage’;
    if (entities[‘binary_sensor.port_de_garage_garage_ouvert’].state === ‘on’) return ‘mdi:garage-open’;
    return ‘mdi:home’;

    J’ai bien mis homeassistant:
    customize: !include customize.yaml
    dans configuration.yaml

    Mais pour autant je ne récupère pas le switch.

    Je suis débutant je doit louper une info mais la quelle ?

  3. Tof

    tu as 2 capteurs pour ta porte de garage ?
    je vois que tu as binary_sensor.port_de_garage_garage_ferme et binary_sensor.port_de_garage_garage_ouvert.

    si c’est le cas je pense que binary_sensor.port_de_garage_garage_ferme doit être a ‘on’ pour que le garage soit fermé

  4. dorian

    Bonjour

    Oui tu a tout a fait raison se sont des contacte fin de course, donc j’ai mis on.
    pour autan je ne retrouve pas « switch.porte_de_garage » ou que se soit.

    • Tof

      Salut,
      Je suis sur smartphone, dure de faire un code propre mais oui tu peux avec des and dans le if

      if (entities[‘binary_sensor.detecteur_porte_de_garage’].state === ‘off’ and entities[‘binary_sensor.detecteur2′].state ===’off’ and… )

    • Tof

      Salut,

      Il me semble que tu fais la même chose que icon mais avec icon_color :

      
      switch.porte_de_garage:
         templates:
           icon: if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'off') return 'mdi:garage';
             if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'on') return 'mdi:garage-open';
             return 'mdi:home';
          icon_color: if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'off') return 'green';
             if (entities['binary_sensor.detecteur_porte_de_garage'].state === 'on') return 'red';
            return 'blue'
      
  5. Libertid

    Bonjour,

    tout d’abord merci pour le petit tuto très sympa.

    J’essaye de faire la même chose mais je n’arrive pas à avoir le visuel. J’ai bien installé le Custom, j’ai bien la confirmation d’install dans « A propos ».

    Voici le code que j’ai mis dans un fichier customize.yaml dans config:

    binary_sensor.cp03_portail_ext_contact:
    templates:
    icon: if (entities[‘binary_sensor.cp03_portail_ext_contact’].state === ‘off’) return ‘mdi:gate’;
    if (entities[‘binary_sensor.cp03_portail_ext_contact’].state === ‘open’) return ‘mdi:gate-open’;
    return ‘mdi:home’;

    Mais ça ne fonctionne pas.

    Si vous avez une idée, je suis preneur.

    Merci d’avance.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Back to Top