Changement de l'icône d'un bouton poussoir suite à un évènement extérieur

bonjour,
Je debute et j’ai qq difficultés avec yaml et lovelace

Mon problème

Sur mon dashboard, j’ai créé un bouton poussoir qui ouvre/ ferme une porte de garage et je souhaite changer l’icône et la couleur de celui-ci lorsque la porte est completement ouverte.

  1. Le bouton poussoir execute un (service) automatisation qui active un relais pendant 1,5s.
  2. La porte met 3 à 5 secondes pour s’ouvrir completement.
  3. Un contact de fin de course « sensor » devient « ON » lorsque la porte de garage est totalement ouverte et un témoin led (physique) s’allume dans mon entrée.
  4. Lorsque le « sensor » est « ON » l’icône du bouton poussoir doit changer de forme et de couleur

Les étapes 1, 2 et 3 fonctionnent parfaitement. Je sèche pour l’étape 4.
j’ai essayé plusieurs types de cartes mais cela ne change rien.

Est-il possible de changer l’icône et la couleur du bouton poussoir lorsque le statut du capteur de fin de course (sensor) est « ON » ou « OFF » quelques secondes plus tard ?


les relais, sensor (fin de course) et Led sont des GPIOs sur un ESP-32

Code Bouton poussoir

show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: automation.trigger
  service_data:
    entity_id: automation.garage_X_bouton_poussoir
hold_action:
  action: none
name: Garage X
icon: mdi:garage
show_state: false
theme: Mushroom

Automatisation

alias: Garage X bouton poussoir
description: Bouton poussoir ouverture/fermeture garage X
trigger:
  - event_data: {}
    event_type: ""
    platform: event
condition: []
action:
  - data:
      entity_id: switch.garage_X
    service: switch.turn_off
  - delay:
      milliseconds: 1500
  - data:
      entity_id: switch.garage_X
    service: switch.turn_on
mode: single

Ma configuration


[center] |Version|core-2022.11.2|
| — | — |
|Type d’installation|Home Assistant OS|
|Développement|false|
|Supervisor|true|
|Docker|true|
|Utilisateur|root|
|Environnement virtuel|false|
|Version de Python|3.10.7|
|Famille du système d’exploitation|Linux|
|Version du système d’exploitation|5.15.61-v8|
|Architecture du processeur|aarch64|
|Fuseau horaire|Europe/Paris|
|Répertoire de configuration|/config|

Home Assistant Community Store

GÉRER

GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4933
Installed Version 1.28.3
Stage running
Available Repositories 1210
Downloaded Repositories 10

Home Assistant Cloud

GÉRER

Connecté false
Accéder au serveur de certificats ok
Accéder au serveur d’authentification ok
Accéder à Home Assistant Cloud ok

Home Assistant Supervisor

Système d’exploitation hôte Home Assistant OS 9.3
Mise à jour stable
Version du Supervisor supervisor-2022.10.2
Version de l’agent 1.4.1
Version de Docker 20.10.18
Taille total du disque 116.7 GB
Taille du disque utilisé 7.4 GB
Sain true
Prise en charge true
Tableau de bord rpi4-64
API du Supervisor ok
Version API ok
Modules complémentaires installés Terminal & SSH (9.6.1), ESPHome (2022.10.1), Let’s Encrypt (4.12.7), Studio Code Server (5.4.1), Samba share (10.0.0), File editor (5.4.2), Node-RED (13.5.2), Mosquitto broker (6.1.3), Grafana (8.1.0), InfluxDB (4.5.0)

Dashboards

GÉRER

Tableaux de bord 6
Ressources 7
Vues 20
Mode storage

Recorder

Heure de démarrage de l’exécution la plus ancienne 7 novembre 2022 à 04:01
Heure de démarrage de l’exécution actuelle 14 novembre 2022 à 05:01
Taille estimée de la base de données (en Mio) 11.75 MiB
Moteur de la base de données sqlite
Version de la base de données 3.38.5

Données du cœur

Utilisation du processeur
0.2 %

Utilisation de la mémoire
16.8 %

Données du superviseur

Utilisation du processeur
0.9 %

Utilisation de la mémoire
5.5 %
[/center]
Comment récupérer ma configuration :
Dans votre HA, Menu latéral Paramètres > Système > Corrections puis les trois petits points en haut a droite > Informations Système puis une fois en bas Copier


Salut
Tu peux t’inspirer de ça

Merci pour ces premiers éléments.
J’ai fait une modification et les choses s’ameliorent car l’icône du bouton poussoir change de couleur… , mais ce n’est pas maitrisé.

La couleur de l’icône du bouton poussoir change lorsque le capteur de fin de course change d’état.
Mais je ne maitrise pas le choix des couleurs et l’icône du bouton poussoir ne change pas

Voici le code du bouton poussoir (le capteur de fin de course est: binary_sensor.fin_de_course_X )
A noter que si je n’ajoute pas icon: mdi:garage c’est un autre icone qui est affiché. Donc ça ne fonctionne pas

show_name: true
show_icon: true
entity: binary_sensor.fin_de_course_X
icon: mdi:garage
type: button
tap_action:
  action: call-service
  service: automation.trigger
  service_data:
    entity_id: automation.garage_X_bouton_poussoir
hold_action:
  action: none
templates:
  icon: >-
    if (entities['binary_sensor.fin_de_course_X'].state === 'off') return 'mdi:garage'; 
    if (entities['binary_sensor.fin_de_course_X'].state === 'on')
    return 'mdi:garage-open'; 
name: Garage X test
show_state: false
theme: Mushroom

J’ai ajouté une automatisation (fonctionnement OK) pour que la LED s’allume lorsque le contact de fin de course (binary_sensor.fin_de_course_X) change d’état.

alias: led Garage X
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.fin_de_course_X
condition: []
action:
  - service: light.toggle
    data: {}
    target:
      entity_id: light.temoin_garage_X
mode: single

Ce code sous-entends 2 choses :

  • que le binairy soit on ou off (sans majuscule)
  • qu’il n’existe aucun autre cas, sinon pas d’icone (2 if et pas de else)

Moi je verrai d’abord plus ça

  icon: >-
    if (entities['binary_sensor.fin_de_course_X'].state === 'on') return 'mdi:garage-open';
    else return 'mdi:garage'; 

Effectivement ça ne change pas la couleur car ça ne gère que le « scope » icone, il faut ajouter une partie de ce genre

  icon_color: >
    if (entities['binary_sensor.fin_de_course_X'].state === 'on') return 'red';
    else return 'green'; 

CA FONCTIONNE !

J’ai modifié le code comme vous avez indiqué, mais ça n’a rien changé.
La couleur et l’icône étaient statiques.
J’ai donc réessayé avec un autre type de carte : custom:mushroom-template-card
Et c’est bon :slight_smile:

type: custom:mushroom-template-card
primary: |-
  {% if is_state("binary_sensor.fin_de_course_X", "on") %}
      Ouvert
  {% else %}
      Fermé
  {% endif %}
secondary: Garage X
icon: |-
  {% if is_state("binary_sensor.fin_de_course_X", "on") %}
     mdi:garage-open
  {% else %}
     mdi:garage
  {% endif %}
tap_action:
  action: call-service
  service: automation.trigger
  data: {}
  target:
    entity_id: automation.garage_X_bouton_poussoir
hold_action:
  action: none
double_tap_action:
  action: none
layout: horizontal
icon_color: |-
  {% if is_state("binary_sensor.fin_de_course_X", "on") %}
      red
  {% else %}
      blue
  {% endif %}
badge_color: |-
  {% if is_state("binary_sensor.fin_de_course_X", "on") %}
      white
  {% else %}
      blue
  {% endif %}
fill_container: false

merci encore pour votre aide.
Vos informations m’ont mis sur la bonne voie.

Salut,

c’est bien que ça marche comme tu veux

Mais en alternative tu aurais aussi pu partie sur un « Template Cover » qui en fait permet d’intégrer tous tes capteurs et scripts dans une entité type prévue pour ça et du coup a tous les mécanismes et boutons, icones et images.
Mais bon l’essentiel c’est que ça marche comme tu veux maintenant!

image

bonsoir,
oui, tu as raison, mais je débute et je ne maitrise pas tous les aspects techniques de cet environnement.
J’ai solutionné mon problème et c’est l’essentiel, car je vais au plus pressé pour remplacer mon ancien système domotique que j’avais développé from scratch il y a 2 ans.
Je suis ouvert à toutes les suggestions pour augmenter mon niveau d’expertise (qui est faible) dans ce domaine, mais j’aurai besoin d’aide et d’exemples pour y arriver.
A suivre…