Fusion de 2 entity cards Mushroom

Bonjour à tous,

J’utilise Mushroom et en particulier l’entity card. Je souhaiterai mettre sur une entity card type « light » les infos de la température de pièce et de l’hygrométrie pour éviter de prendre top de place sur le tableau de bord.
Je souhaiterai aussi faire afficher la bulle de température d’une certaine couleur si sa valeur est inférieure à celle du thermostat.
Actuellement :
avant

« Souhaité » :
après

Sincèrement, je ne suis pas arrêté sur la forme. L’idée c’est d’avoir l’info rapidement de la température et surtout de pouvoir cliquer sur l’entité.

Merci d’avance pour le coup de mains.

Salut,

une très bonne explication a était faites la : Présentation + [Mon Dashboard] BBE - #2 par BBE

Cdt

1 « J'aime »

Sinon pour quelque chose de simple comme ça on peut aussi utiliser uniquement une carte mushroom template avec l’info secondaire sur une ou deux lignes… Ca permet de commencer doucement à se familiariser avec le code des templates en Jinja…

Bref plusieurs solutions:

  • simple avec une seule carte mushroom template:

image

le "code" une ligne:
type: custom:mushroom-template-card
primary: Bureau
secondary: >-
  Temperature: {{states('sensor.pac_room_temperature')}}°C / Humidité:
  {{states('sensor.pac_room_temperature')}}% 
icon: mdi:lightbulb
entity: light.ampoule_bureau
multiline_secondary: false
icon_color: |-
  {% if states(entity) == 'on' %}
  orange
  {% elif states(entity) == 'off' %}
  grey
  {% endif %}
tap_action:
  action: toggle
hold_action:
  action: more-info
double_tap_action:
  action: more-info


image

le "code" deux lignes:
type: custom:mushroom-template-card
primary: Bureau
secondary: |-
  Temperature: {{states('sensor.pac_room_temperature')}}°C
  Humidité: {{states('sensor.pac_room_temperature')}}% 
icon: mdi:lightbulb
entity: light.ampoule_bureau
multiline_secondary: true
icon_color: |-
  {% if states(entity) == 'on' %}
  orange
  {% elif states(entity) == 'off' %}
  grey
  {% endif %}
tap_action:
  action: toggle
hold_action:
  action: more-info
double_tap_action:
  action: more-info

  • plus compliquée avec stack-in (dispo sous HACS) et card mod (dispo sous HACS) en utilisant la méthode décrite dans le lien envoyé par @roumano appliqué à une carte mushroom light et deux mushroom chips « entity »:
    image
le code:
type: custom:vertical-stack-in-card
cards:
  - type: custom:mushroom-light-card
    entity: light.ampoule_bureau
    name: Bureau
  - type: custom:mushroom-chips-card
    chips:
      - type: entity
        entity: sensor.pac_room_temperature
        tap_action:
          action: more-info
        hold_action:
          action: more-info
        double_tap_action:
          action: more-info
      - type: entity
        entity: sensor.imprimante_bureau_canonmx520_color
        tap_action:
          action: more-info
        hold_action:
          action: more-info
        double_tap_action:
          action: more-info
    alignment: end
    card_mod:
      style:
        style: |
          ha-card {
            padding-top: 15px;
            padding-bottom: 15px;
            margin-left: -50px;
            padding-left: -150px;
            padding-right: 15px;
          }

  • la « room card » mushroom que je décris là et qui est plus complète encore:

Personnellement, dans un cas où il ne s’agit que de visualisation et où il n’y a pas besoin d’agir sur des boutons supplémentaires, je me contente très souvent de rajouter des infos dans une carte mushroom template. D’autant plus qu’avec mushroom tu peux définir des comportements différents sur clic simple, double clic et appui maintenu, et par exemple ici avoir le toggle de la lampe sur clic simple, le « more info » de la lampe sur l’appuis maintenu et la navigation vers une page « températures » avec le double clic.
Note aussi qu’avec la carte mushroom template tu dispose d’un badge (mini icone) dont tu peux choisir l’icone et la couleur par exemple avec un template jinja et ainsi ajouter une info de plus (détecteur de mouvement, mode du chauffage, alerte, compteur etc…)
Quelques exemples en vrac:



image

Un contre exemple :

1 « J'aime »

C’est top !! exactement ce que je voulais. Mille mercis

1 « J'aime »

Typiquement, pour ce besoin:

Tu peux le faire avec le badge de la carte mushroom template.

N’hésites pas à demander de l’aide ou des exemples , les templates c’est un peu abrupt au début, mais on arrive vite à faire des choses bien dès qu’on a compris la structure…

Il te suffit de définir une icone mdi pour le badge et de reprendre le même type de code que ce que j’ai mis pour la gestion de la couleur de l’icone et de l’adapter pour le badge:

  {% if states('sensor.pac_room_temperature') <= '19' %}
  blue
  {% elif states('sensor.pac_room_temperature') >= '19' %}
  orange
  {% endif %}

tu peux même changer d’icone en fonction de la temperature ou du mode de ton chauffage sur le même modèle en mettant ce type de code dans le choix de l’icone (si tu as un choix sans icone, l’icone sera absente, ce qui est aussi intéressant pour un warning par exemple, avec le badge affiché seulement quand l’alerte est justifiée):

  {% if states('sensor.pac_room_temperature') <= '19' %}
  mdi:snowflake
  {% elif states('sensor.pac_room_temperature') >= '19' %}
  mdi:fire
  {% endif %}

ou alors celui ci où le badge ne s’affiche que si la temperature est <=19 et rien au dessus (même si tu as défini une couleur…)

  {% if states('sensor.pac_room_temperature') <= '19' %}
  mdi:snowflake
  {% else %}

  {% endif %}

Les possibilités sont immenses quand tu as compris comment faire des templates… ça vaut le coup de s’y plonger…
image

Si tu pars sur la solution plus compliquée, il te faut utiliser une chips template à la place d’une chips entity et faire la même chose dans les zones de choix de l’icone et de la couleur de la chips template…

mais c’est de toute beauté !!!

Si c’est pas abusé, je veux bien un exemple ou la couleur de la petite icone est modifiée en fonction.
Genre si température > 19, j’affiche icone flamme en rouge
si température < 19, j’affiche icone flocon en bleue

bon j’ai pas de capteur d’humidité donc j’ai mis 2x la temperature, mais ça peut faire ça:
image

le code
type: custom:mushroom-template-card
primary: Bureau
secondary: >-
  Temperature: {{states('sensor.pac_room_temperature')}}°C / Humidité:
  {{states('sensor.pac_room_temperature')}}% 
icon: mdi:lightbulb
entity: light.ampoule_bureau
multiline_secondary: false
icon_color: |-
  {% if states(entity) == 'on' %}
  orange
  {% elif states(entity) == 'off' %}
  grey
  {% endif %}
tap_action:
  action: toggle
hold_action:
  action: more-info
double_tap_action:
  action: more-info
badge_icon: |2-
    {% if states('sensor.pac_room_temperature') <= '19' %}
    mdi:snowflake
    {% elif states('sensor.pac_room_temperature') >= '19' %}
    mdi:fire
    {% endif %}
badge_color: |2-
    {% if states('sensor.pac_room_temperature') <= '19' %}
    blue
    {% elif states('sensor.pac_room_temperature') >= '19' %}
    orange
    {% endif %}

Une fois copié-collé tu verras que c’est exactement ce que je t’ai mis dans le post au dessus… Comme c’est du mushroom « de base » tu as access à toutes les options dans l’interface graphique…

1 « J'aime »

Et pour tester tes templates si tu veux modifier, tu peux essayer dans l’interface "outils de developpement / modèles

Merci c’est top et très clair.

1 « J'aime »

Hello, question bête. Comment tu liste le nombres de type d’entité (lumière, volets, etc …) ?

Avec un template:
3 exemples:

type: horizontal-stack
cards:
  - type: custom:mushroom-template-card
    primary: Lumières
    secondary: |
      {% set all = expand(entity)| list -%}
      {% set ND1 = all | selectattr('state','eq','on')|list|count%}
      {% set D1 = all | selectattr('state','eq','off')|list|count%}
      Allumées : {{ND1}}
      Eteintes : {{D1}}
    icon: |
      {% if is_state(entity, 'on') %} 
        mdi:lightbulb-group
      {% else %}
        mdi:lightbulb-group-off
      {% endif %}
    icon_color: |
      {% if is_state(entity,'on') %}
        orange
      {% else %}
        grey
      {% endif %}
    badge_icon: |-
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','on')|list|count%}
      {% if open1 <= 9 %}
        mdi:numeric-{{open1}}
      {% elif open1 >= 10 %}
        mdi:numeric-9-plus
      {% else %}
        none
      {% endif %}
    badge_color: |
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','on')|list|count%}
      {% if open1 == 0 %}
        grey
      {% else %}
        orange
      {% endif %}
    entity: group.lumieres_toutes
    layout: vertical
    tap_action:
      action: more-info
    hold_action:
      action: call-service
      service: homeassistant.turn_off
      data: {}
      target:
        entity_id:
          - group.lumieres_toutes
          - switch.prise_tradfri_1
    double_tap_action:
      action: more-info
    multiline_secondary: true
  - type: custom:mushroom-template-card
    primary: Volets
    secondary: |
      {% set all = expand(entity)| list -%}
      {% set ND1 = all | selectattr('state','eq','open')|list|count%}
      {% set D1 = all | selectattr('state','eq','closed')|list|count%}
      Ouverts : {{ND1}}
      Fermés : {{D1}}
    icon: |
      {% if is_state(entity, 'open') %} 
        mdi:window-shutter-open
      {% else %}
        mdi:window-shutter
      {% endif %}
    icon_color: |
      {% if is_state(entity,'open') %}
        light-blue
      {% else %}
        green
      {% endif %}
    badge_icon: |-
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','open')|list|count%}
      {% if open1 <= 9 %}
        mdi:numeric-{{open1}}
      {% elif open1 >= 10 %}
        mdi:numeric-9-plus
      {% else %}
        none
      {% endif %}
    badge_color: |
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','open')|list|count%}
      {% if open1 == 0 %}
        green
      {% else %}
        orange
      {% endif %}
    entity: cover.tous_les_volets
    layout: vertical
    hold_action:
      action: navigate
      navigation_path: /lovelace-smartphone/volets
    double_tap_action:
      action: more-info
    multiline_secondary: true
    tap_action:
      action: navigate
      navigation_path: /lovelace-smartphone/volets
  - type: custom:mushroom-template-card
    primary: Securité
    secondary: |
      {% set all = expand(entity)| list -%}
      {% set ND1 = all | selectattr('state','eq','off')|list|count%}
      {% set D1 = all | selectattr('state','eq','on')|list|count%}
      {% set all2 = expand('binary_sensor.ouverture')| list -%}
      {% set ND2 = all2 | selectattr('state','eq','off')|list|count%}
      {% set D2 = all2 | selectattr('state','eq','on')|list|count%}
      Présence: {{D1}}/{{ND1}}
      Ouvertures: {{D2}}/{{ND2}}
    icon: |
      {% if is_state(entity, 'on') %} 
        mdi:motion-sensor
      {% elif is_state('binary_sensor.ouverture', 'on') %} 
        mdi:door-open
      {% else %}
        mdi:thumb-up
      {% endif %}
    icon_color: |
      {% if is_state(entity,'on') %}
        red
      {% elif is_state('binary_sensor.ouverture', 'on') %} 
        red
      {% else %}
        green
      {% endif %}
    badge_icon: |-
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','on')|list|count%}
      {% set all2 = expand('binary_sensor.ouverture')| list -%} 
      {% set open2 = all2 | selectattr('state','eq','on')|list|count%}
      {% if open1+open2 <= 9 %}
        mdi:numeric-{{open1+open2}}
      {% elif open1+open2 >= 10 %}
        mdi:numeric-9-plus
      {% else %}
        none
      {% endif %}
    badge_color: |
      {% set all = expand(entity)| list -%} 
      {% set open1 = all | selectattr('state','eq','on')|list|count%}
      {% set all2 = expand('binary_sensor.ouverture')| list -%} 
      {% set open2 = all2 | selectattr('state','eq','on')|list|count%}
      {% if open1+open2 == 0 %}
        green
      {% else %}
        red
      {% endif %}
    tap_action:
      action: navigate
      navigation_path: /lovelace-smartphone/securite
    layout: vertical
    multiline_secondary: true
    entity: binary_sensor.presence
    fill_container: false

1 « J'aime »