Rafraichissement de la couleur d'une icone avec card-mod et multiple-entity-row

Coucou,

Petit soucis relou sur lequel je me casse les dents depuis plusieurs jours.
Pour le contexte, j’ai un vieux chauffage réversible air/air que je peux piloter via HA avec les petits broadlink rm3.
Donc ce n’est pas considéré comme une entité clim, j’ai diverses commandes que j’appelle dans des scripts pour soit allumer en chauffage, soit en clim, soit arrêter.
Pour que çe soit facile, j’avais fais des lignes avec un multiple-entity-row, et c’était parfait.

Aucun retour d’état, parce que pas possible, donc juste des icones. Et tout marche parfaitement !

A un moment, j’ai voulu répondre à un besoin : que l’unité intérieur s’éteigne 2h après, quand je dors par exemple.
Donc plutôt que de faire un autre bouton qui appelle un script, qui va appeler les 2 scripts existants et faire une pose entre les deux. Je me suis dit que j’allais plutôt activer un timer, et c’est ce timer qui a la fin, active l’arrêt. Et ça fonctionne aussi.

Donc nouveau bouton tout gris pour activer, et c’est la que les choses ne vont plus: ça serait bien si il était rouge si non activé, et vert si activé ! Par ce que comme ça, je connais l’état, et peut l’activer/désactiver à ma guise.

Sur ce GIF, vous pouvez voir que quand je clique, il ne se passe rien de visible (mais le timer démarre bien). L’icone passera en vert, seulement si je fais CTRL+F5 (sur le tel, c’est une misère, je dois rafraichir la page 2-3 fois)
Enregistrement 2025-07-16 084358

Voila, peut-être auriez vous une idée, ou un truc qui me manque pour provoquer le rafraichissement de l’icone au clic.

La partie du code en question

  - entity: remote.clim_parents
    type: custom:multiple-entity-row
    name: Chambre Parents
    show_state: false
    icon: mdi:hvac
    tap_action:
      action: none
    entities:
      - icon: mdi:power-off
        tap_action:
          action: call-service
          service: script.clim_off_parents
      - icon: mdi:air-conditioner
        tap_action:
          action: call-service
          service: script.clim_on_cold_19_parents
      - icon: mdi:radiator
        tap_action:
          action: call-service
          service: script.clim_on_heat_19_parents
      - icon: mdi:timer-remove-outline
        tap_action:
          action: call-service
          service: script.activation_et_desactivation_timer_manu_off_clim_parents
    card_mod:
      style: |
        .entities-row div.entity {  
          --card-mod-icon-color: var(--secondary-text-color);
        }
        .entities-row div.entity:nth-child(4) {
          {% if is_state('timer.timer_off_manu_clim_parent', 'active') %}
            --card-mod-icon-color: var(--green-color);
          {% else %}
            --card-mod-icon-color: var(--red-color);
          {% endif %}
        }
Le code complet
type: entities
entities:
  - entity: remote.clim_bureau
    type: custom:multiple-entity-row
    name: Bureau
    show_state: false
    icon: mdi:hvac
    tap_action:
      action: none
    entities:
      - icon: mdi:power-off
        tap_action:
          action: call-service
          service: script.clim_off_bureau
      - icon: mdi:air-conditioner
        tap_action:
          action: call-service
          service: script.clim_on_cold_19_bureau
      - icon: mdi:radiator
        tap_action:
          action: call-service
          service: script.clim_on_heat_19_bureau
    card_mod:
      style: |
        .entities-row div.entity {  
          --card-mod-icon-color: var(--secondary-text-color);
        }
  - entity: remote.clim_chambre_jardin_haut
    type: custom:multiple-entity-row
    name: Chambre Haut
    show_state: false
    icon: mdi:hvac
    tap_action:
      action: none
    entities:
      - icon: mdi:power-off
        tap_action:
          action: call-service
          service: script.clim_off_chambre_jardin_haut
      - icon: mdi:air-conditioner
        tap_action:
          action: call-service
          service: script.clim_on_cold_19_chambre_jardin_haut
      - icon: mdi:radiator
        tap_action:
          action: call-service
          service: script.clim_on_heat_19_chambre_jardin_haut
    card_mod:
      style: |
        .entities-row div.entity {  
          --card-mod-icon-color: var(--secondary-text-color);
        }
  - entity: remote.clim_parents
    type: custom:multiple-entity-row
    name: Chambre Parents
    show_state: false
    icon: mdi:hvac
    tap_action:
      action: none
    entities:
      - icon: mdi:power-off
        tap_action:
          action: call-service
          service: script.clim_off_parents
      - icon: mdi:air-conditioner
        tap_action:
          action: call-service
          service: script.clim_on_cold_19_parents
      - icon: mdi:radiator
        tap_action:
          action: call-service
          service: script.clim_on_heat_19_parents
      - icon: mdi:timer-remove-outline
        tap_action:
          action: call-service
          service: script.activation_et_desactivation_timer_manu_off_clim_parents
    card_mod:
      style: |
        .entities-row div.entity {  
          --card-mod-icon-color: var(--secondary-text-color);
        }
        .entities-row div.entity:nth-child(4) {
          {% if is_state('timer.timer_off_manu_clim_parent', 'active') %}
            --card-mod-icon-color: var(--green-color);
          {% else %}
            --card-mod-icon-color: var(--red-color);
          {% endif %}
        }

Bonjour,
pourquoi ne pas utiliser l’entité timer directement dans la carte ?

      - entity: timer.climate_salon
        name: false
        icon: mdi:timer-remove-outline
        state_color: true
        styles:
          --state-timer-inactive-color: var(--red-color)
          --state-timer-active-color: var(--green-color)

image

et tu utilises une automatisation, par rapport a l’état du timer et fait les actions que tu veux.

alias: Timer Climate Salon
description: ""
mode: single
triggers:
  - event_type: timer.finished
    event_data:
      entity_id: timer.climate_salon
    trigger: event
conditions: []
actions:
  - target:
      entity_id: climate.versatile_thermostat_salon
    data: {}
    action: climate.turn_off

Pas besoin d’utiliser card_mod pour la couleur d’une icone :
image

      - icon: mdi:power-off
        state_color: true
        styles:
          --state-icon-color: var(--secondary-text-color)
        tap_action:
          action: call-service
          service: script.clim_off_parents  

Bien vu WarC0zes !

En fait, je lance un script pour faire démarrer/interrompre le timer dans le seul but de ne pas avoir la fenetre du timer qui s’ouvre. Juste par confort
Mais oui, l’arrêt se fait bien sur une automation qui a comme trigger la fin du timer.

Card-mod a de vieilles habitudes chez moi :smiley:

Merci pour m’avoir guidé sur un meilleur chemin

entity: remote.clim_parents
type: custom:multiple-entity-row
name: Chambre Parents
show_state: false
icon: mdi:hvac
tap_action:
  action: none
entities:
  - icon: mdi:power-off
    tap_action:
      action: call-service
      service: script.clim_off_parents
    styles:
      "--card-mod-icon-color": var(--secondary-text-color)
  - icon: mdi:air-conditioner
    tap_action:
      action: call-service
      service: script.clim_on_cold_19_parents
    styles:
      "--card-mod-icon-color": var(--secondary-text-color)
  - icon: mdi:radiator
    tap_action:
      action: call-service
      service: script.clim_on_heat_19_parents
    styles:
      "--card-mod-icon-color": var(--secondary-text-color)
  - entity: timer.timer_off_manu_clim_parent
    icon: mdi:timer-remove-outline
    state_color: true
    name: false
    styles:
      "--state-timer-inactive-color": var(--red-color)
      "--state-timer-active-color": var(--green-color)
    tap_action:
      action: call-service
      service: script.activation_et_desactivation_timer_manu_off_clim_parents

1 « J'aime »

Je suis pareil, mais quand on peut faire sans, c’est encore mieux. C’est surtout instantané, comparé avec card_mod ou tu peux voir un petit chargement quand tu affiches une page.

Salut
Si je peux me permettre :

- icon: mdi:power-off
        state_color: true
        styles:
          --state-icon-color: var(--secondary-text-color)
        tap_action:
          action: perform-action
          perform_action: script.clim_off_parents

et non :

- icon: mdi:power-off
        state_color: true
        styles:
          --state-icon-color: var(--secondary-text-color)
        tap_action:
          action: call-service
          service: script.clim_off_parents

:grin:

2 « J'aime »

Tu as raison, mais j’ai utilisé son exemple de code, sans me prendre la tête sur l’action :wink:

Pour le coup, ça ne fonctionne plus de cette manière !
Du à custom:multiple-entity-row ?

Edit: apparement oui selon le github

Oui, ça ne fonctionne pas sur multi-entity-row.

Ca sens malheureusement la card à l’abandon, c’est dommage, je l’ai mise à plein d’endroits !

Ça a l’air :frowning:

A la base je faisait juste une blagounette a warcozes.
Tu peux laisser call-service et service tant que ça fonctionne. On verra bien si un jour il l’enlève ou pas et pour le moment c’est pas prévu.

1 « J'aime »

Oui, mais effectivement ça a mis le doigt sur un truc.
Card qui commence à se casser avec les évolutions du core et qui n’est plus mis à jour.

Ce sujet a été automatiquement fermé après 2 jours. Aucune réponse n’est permise dorénavant.