[Carte] Mise en forme de ma mushroom room-card et tuto

Je suis convaincu que stacking + mushroom + card mod n’est pas la solution optimale.

Mais je n’ai pas encore totalement laché l’UI pour l’instant, donc ce que je disais en intro reste tout à fait exact:

Ton exemple est une preuve de plus que la button card est beaucoup plus adapté dès lors qu’on passe en full YAML…

Je n’ai pas encore passé le cap, j’aime bien me dire que ça reste faisable par un débutant qui a « peur » du YAML (voir le tuto pour la version simplifiée…).

Mais c’est clair que je risque de basculer un jour ou l’autre sur une version « decluttering » (pardon « streamline »…) à base de button card pour avoir un truc plus light… A moins que des tuiles template sortent du bois et que je passe sur un truc 100% cartes core pour essayer de virer de plus en plus de cartes custom…

Petite question @WarC0zes, quand tu dis:

tu veux dire que ça s’affiche plus vite, ou que c’est « juste » plus simple coté code? Tu constate un réel écart de perfo?

Ça s’affiche plus vite. J’ai plus les éléments qui bougent quand tu ouvres une page, comme le fais avec card_mod ( suivant la puissance de la machine ou tu l’affiches).
Ça s’affiche directement avec les éléments à la bonne place.

avec card_mod, les éléments bougent pour être à leur place. Ça le fait qu’une fois le temps que la page soit chargé, quand tu y reviens, c’est bon. Mais chaque fois que tu lances ton navigateur, ça se replace.
popup6

Avec button-card, ca ne le fais pas. La première carte Entrée avec mushroom et card_mod , la deuxième carte Entrée en button-card.
popup7

1 « J'aime »

Et dire que je viens de tout refaire propre avec les sections… :rofl: :scream:

1 « J'aime »

@BBE slt a toi et aux autres , j’ai commencé à essayé de convertir ta card-room en passant par custom button,bah le résultat n’est pas vraiment celui espéré :rofl: ,dans mon Dashboard j’utilise 2 cartes la première j’ai positionnement général correcte mais le style n’y est pas et l’autre j’ai rien dès 2 c’est le foutoir complet rien n’est à sa place sa reagi pas du tout comme sa devrait le style j’en parle pas , mais je vais bien trouver le truc pour que sa passe

Salut @BBE,
j’ai fait un essai avec la vue section et les nouveautés de ce mois-ci. Avec les chips et sans utiliser card_mod.

image

1 « J'aime »

Il va juste manquer la capacité de faire des template dans les cartes header…

On y est presque…

Ca et la possibilité d’encadrer les sections et je vire toutes mes room cards…

J’ai fait quelques tests aussi… Je suis un grand fan des cartes header en mode sous titre en milieu de section…

1 « J'aime »

J’ai joué avec aussi, c’est prometteur (bon là j’ai toujours ma largeur mini à 400px donc c’est « trop large »…)

image

Avec un template helper à la place des entités à la fin, on peut faire dire ce qu’on veut…

Il va « juste » me manquer le fait de ne pas pouvoir « encadrer » ou « mettre un fond » sur une section…

Quelques exemples supplémentaires avec la largeur mini à 200px et des mushroom template plutôt que les chips:
image
image

le code de la vue
title: Test Section Rooms cards
path: test-sections-roomcards
type: sections
sections:
  - type: grid
    cards:
      - type: heading
        heading: Lumières
        heading_style: title
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/lumieres
        badges:
          - type: entity
            show_state: true
            show_icon: true
            entity: light.toutes_les_lumieres
            color: accent
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/lumieres
        icon: ""
      - type: custom:mushroom-template-card
        primary: ""
        secondary: ""
        icon: |2-
                {% if is_state(entity, 'on') %} 
                  mdi:lightbulb-group
                {% else %}
                  mdi:lightbulb-group-off
                {% endif %}
        entity: light.toutes_les_lumieres
        icon_color: |2-
                {% if is_state(entity,'on') %}
                  orange
                {% else %}
                  grey
                {% endif %}
        badge_icon: |2-
                {% 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: |2-
                {% set all = expand(entity)| list -%} 
                {% set open1 = all | selectattr('state','eq','on')|list|count%}
                {% if open1 == 0 %}
                  grey
                {% else %}
                  orange
                {% endif %}
        layout_options:
          grid_columns: 1
          grid_rows: 1
  - type: grid
    cards:
      - type: heading
        heading: Salon
        heading_style: title
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/salon
        badges:
          - type: entity
            entity: sensor.alocatia_temperature_2
          - type: entity
            entity: binary_sensor.echo_salon_mouvement
      - type: custom:mushroom-template-card
        primary: ""
        secondary: ""
        icon: mdi:flower
        entity: plant.alocatia
        icon_color: |2-
                    {% if is_state(entity, 'problem') %} 
                     orange
                    {% else %}
                     grey
                    {% endif %}
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Plante Marsupilami
              content:
                type: custom:flower-card
                entity: plant.alocatia
                show_bars:
                  - moisture
                  - temperature
                  - illuminance
                  - conductivity
                battery_sensor: sensor.alocasia_zebrina_battery
                display_type: compact
        layout_options:
          grid_columns: 1
          grid_rows: 1
      - type: custom:mushroom-template-card
        primary: ""
        secondary: ""
        icon: mdi:play-pause
        entity: media_player.echo_jeanne
        icon_color: |2-
                    {% if is_state(entity, 'playing') %} 
                      #03A9F4
                    {% else %}
                     grey
                    {% endif %}
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Echo salon
              content:
                type: custom:stack-in-card
                cards:
                  - type: custom:mini-media-player
                    entity: media_player.echo_jeanne
                    source: full
                    volume_stateless: false
                    group: true
                    artwork: full-cover
                    tts:
                      platform: alexa
                      entity_id: media_player.echo_jeanne
                      type: announce
                    shortcuts:
                      hide_when_off: true
                      columns: 3
                      buttons:
                        - name: Playlist Jeanne
                          type: AMAZON_MUSIC
                          id: Playlist Jeanne
                        - name: RTL2
                          type: custom
                          id: joue la station RTL deux
                        - name: Pop- Rock
                          type: custom
                          id: joue du pop rock
                        - name: Rock
                          type: custom
                          id: joue du rock
                        - name: Musique douce
                          type: custom
                          id: joue de la musique douce
                        - name: Piano
                          type: custom
                          id: joue de la musique au piano
                        - name: Queen
                          type: custom
                          id: joue du Queen
                        - name: Vianney
                          type: custom
                          id: joue du Vianney
                        - name: Louane
                          type: custom
                          id: joue du Louane
                        - name: Playlist Jeanne
                          type: AMAZON_MUSIC
                          id: Playlist Jeanne sur le groupe rez_de_chaussee
                          icon: mdi:multicast
                        - name: RTL2
                          type: custom
                          id: >-
                            joue la station RTL deux sur le groupe
                            rez_de_chaussee
                          icon: mdi:multicast
                        - name: Pop- Rock
                          type: custom
                          id: joue du pop rock sur le groupe rez_de_chaussee
                          icon: mdi:multicast
                        - name: Rock
                          type: custom
                          id: joue du rock sur le groupe rez_de_chaussee
                          icon: mdi:multicast
                        - name: Musique douce
                          type: custom
                          id: >-
                            joue de la musique douce sur le groupe
                            rez_de_chaussee
                          icon: mdi:multicast
                        - name: Piano
                          type: custom
                          id: >-
                            joue de la musique au piano sur le groupe
                            rez_de_chaussee
                          icon: mdi:multicast
                        - name: Queen
                          type: custom
                          id: joue du Queen sur le groupe rez_de_chaussee
                          icon: mdi:multicast
                        - name: Vianney
                          type: custom
                          id: joue du Vianney sur le groupe rez_de_chaussee
                          icon: mdi:multicast
                        - name: Louane
                          type: custom
                          id: joue du Louane sur le groupe rez_de_chaussee
                          icon: mdi:multicast
        layout_options:
          grid_columns: 1
          grid_rows: 1
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/echo
      - type: custom:mushroom-template-card
        primary: ""
        secondary: ""
        icon: |2-
                    {% if is_state(entity, 'open') %} 
                     mdi:window-shutter-open
                    {% elif is_state(entity, 'closed') %} 
                     mdi:window-shutter
                    {% else %}
                     mdi:window-shutter-alert
                    {% endif %}
        entity: cover.salon
        icon_color: |2-
                    {% if is_state(entity, 'open') %} 
                     grey
                    {% elif is_state(entity, 'closed') %} 
                     grey
                    {% else %}
                     orange
                    {% endif %}
        hold_action:
          action: toggle
        layout_options:
          grid_columns: 1
          grid_rows: 1
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Volets du salon
              content:
                type: vertical-stack
                cards:
                  - type: custom:mushroom-cover-card
                    entity: cover.volet_du_salon_apero
                    name: Volet Apero
                    show_position_control: true
                    show_tilt_position_control: false
                    show_buttons_control: true
                  - type: custom:mushroom-cover-card
                    entity: cover.volet_du_salon_tv
                    name: Volet TV
                    show_position_control: true
                    show_tilt_position_control: false
                    show_buttons_control: true
      - type: custom:mushroom-template-card
        primary: ""
        secondary: ""
        icon: mdi:lightbulb
        entity: light.0x84ba20fffe4b2581
        icon_color: |2-
                    {% if is_state(entity, 'on') %} 
                     orange
                    {% elif is_state(entity, 'off') %} 
                     grey
                    {% else %}
                     grey
                    {% endif %}
        hold_action:
          action: toggle
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Lumières salon
              content:
                type: vertical-stack
                cards:
                  - type: custom:mushroom-light-card
                    entity: light.0x84ba20fffe4b2581
                    name: Petite Lampe
                    use_light_color: true
                    show_brightness_control: true
                    show_color_temp_control: true
                    show_color_control: false
                    collapsible_controls: true
                    tap_action:
                      action: toggle
                  - type: custom:mushroom-light-card
                    entity: light.prise_lampadaire
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
                    tap_action:
                      action: toggle
                  - type: custom:mushroom-light-card
                    entity: light.prise_elephants
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
                    tap_action:
                      action: toggle
                  - type: custom:mushroom-light-card
                    entity: light.prise_cerisier
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
                    tap_action:
                      action: toggle
        layout_options:
          grid_columns: 1
          grid_rows: 1

C’est ce qui manque, je n’ai pas cherché encore. Je cherchais pour changer la couleur de l’icône suivant l’état sur les bagdes du titre.
J’ai trouvé avec un thème et je n’uilise plus custom-ui qui ne le supporte pas avec ces badges.

  state-binary_sensor-door-off-color: green
  state-binary_sensor-door-on-color: red
  state-binary_sensor-motion-off-color: green
  state-binary_sensor-motion-on-color: red
  state-binary_sensor-window-off-color: green
  state-binary_sensor-window-on-color: red
1 « J'aime »

J’ai fait la liste des courses sur les githubs, ou rajouté mon grain de sel sur certains :rofl:

@WarC0zes je t’ai piqué parfois des captures d’écran pour illustrer :innocent:

Ca bouge globalement dans le bon sens je trouve, perso j’ai passé tout mon dashboard en sections et je trouve ça plus fluide qu’avant…

Le prochain chantier c’est de dégager vertical-stack-in et card-mod, probablement en faisant des micro sections par pieces comme montré plus haut:
image
Même si à terme les templates restent dans mushroom, il y a déjà beaucoup à faire avec les cartes core (tuiles, header)… Et il ne « manque » que quelques options minimes pour les rendre hyper versatiles (comme pourvoir créer des tuiles avec juste l’icone par exemple).
On ne sera plus très loin d’être à 100% en cartes « core », quitte à déplacer tous les templates dans des helpers…

Je trouve que @piitaya insuffle vraiment de super nouveautés dans l’interface depuis son arrivée chez Nabu-Casa ! Merci et Bravo !

  • Tuiles
  • Sections
  • Headers

Avec de vrais principes d’interface, et d’UX cohérents, orientés vers l’utilisateur « lambda », mais utile à tous… La philo mushroom du départ, intégrée dans le core… :+1:

J’ai vu que ta fais pas mal de post sur divers gitbuh :stuck_out_tongue:

Oui, j’ai vu :wink: . tu as bien fais.

j’ai virer, pratiquement tout le card_mod pour ma tablette et passe par le thème pour les cartes mushroom.

new-theme:
  ha-card-border-width: 0
  #energy
  energy-grid-consumption-color-0: '#FF0000'
  energy-grid-consumption-color-1: '#00b300'
  paper-item-icon-color: '#808080'
  #mushroom chip
  mush-chip-icon-size: 35px
  mush-chip-background: rgba(158,158,158,0.2)
  mush-chip-spacing: 20px
  mush-chip-font-size: 16px
  mush-chip-padding: 0 0.4em
  #mushroom icon
  mush-icon-size: 55px
  mush-icon-symbol-size: 0.8em
  mush-badge-size: 18px
  mush-badge-border-radius: 50%
  #mushrrom card
  mush-card-primary-font-size: 17px
  mush-card-secondary-font-size: 14px
  mush-card-secondary-color: '#A0A0A0'
  #media player
  mini-media-player-button-color: rgba(139,148,158,0.25)
  mini-media-player-progress-height: 12px
  mini-media-player-artwork-opacity: 0.7
  # Colors
  mush-rgb-red: 255, 0, 0
  mush-rgb-blue: 33, 150, 255
  mush-rgb-green: 0, 128, 0
  mush-rgb-yellow: 255, 240, 0
  mush-rgb-orange: 255, 128, 0
  #state
  state-binary_sensor-door-off-color: green
  state-binary_sensor-door-on-color: red
  state-binary_sensor-motion-off-color: green
  state-binary_sensor-motion-on-color: red
  state-binary_sensor-window-off-color: green
  state-binary_sensor-window-on-color: red
1 « J'aime »

Allez j’ai un premier proto:

avec mes room cards (1 room card par section) donc du vertical-stack-in-card et du card-mod:

avec des cartes header et des mushroom template (on pourrais faire plus petit en mettant des chips…) donc presque que des cartes cores a part les boutons en mushroom template:

Toutes les fonctionnalités sont les mêmes (pop ups, raccourcis, la plupart hérités des mushroom templates…)… Il manque de mon point de vue seulement les bordures autour des sections pour plus de lisibilité…

j’ai joué un peu avec le thème pour essayer d’avoir plus d’espace entre les sections:

day_and_night-sections:
  primary-color: "#264269"
  modes:
    light:
      energy-grid-consumption-color-5: "#00008B"
      energy-grid-consumption-color-4: "#0000FF"
      energy-grid-consumption-color-3: "#8B8B8B"
      energy-grid-consumption-color-2: "#AAAAAA"
      energy-grid-consumption-color-1: "#8B0000"
      energy-grid-consumption-color-0: "#FF0000"
    dark:
      energy-grid-consumption-color-5: "#00008B"
      energy-grid-consumption-color-4: "#0000FF"
      energy-grid-consumption-color-3: "#D3D3D3"
      energy-grid-consumption-color-2: "#FAFAFA"
      energy-grid-consumption-color-1: "#8B0000"
      energy-grid-consumption-color-0: "#FF0000"
  ha-view-sections-column-min-width: 200px
  ha-view-sections-column-max-width: 350px
  ha-view-sections-column-gap: 30px

J’ai même tenté un coup de bluff en ajoutant ‹ ha-view-sections-border: true › ou ’ ha-view-sections-border: 2px’ mais non…

oui , ca manque effectivement.
tu peux mettre une bordure pour le heading
image

Ben moi je voudrais la bordure et le background autour du heading + boutons…

Donc il faudrait refaire un stack-in-card… c’est pas le but…

J’avais compris image

1 « J'aime »

J’attend ça:

Et mon dashboard pourra être quasi 100% core cards…

1 « J'aime »

La version chips…

Même avec les chips, on n’arrive pas à faire aussi compact que les room cards, en particulier sur smartphone où la place est optimisée… mais c’est plus fluide…


On « perd » une ou deux lignes de « cartes » et on n’a pas toutes les infos…

Bonjour,

Je suis vos essais avec intérêt, j’ai tout misé quasi avec mushroom + card_mod, c’est un peu lourd à gérer au quotidien mais le rendu me plait.
Du coup je fais des tests en suivant vos posts mais ca ne me convient pas pour le moment.
J’arrive pas à masquer le « name » des cartes tuiles
Les effets de contour de carte manque beaucoup avec ce que j’ai actuellement

1 « J'aime »

100% d’accord.

Pas possible pour l’instant de transformer les tuiles en boutons, il faut passer par mushroom pour masquer Name et State. Mais il y a une FR pour ça: Feature Request: button tile. · home-assistant/frontend · Discussion #14618 · GitHub

Tu peux toujours mettre un espace à la place du Name dans une tuile, mais on ne peut alors descendre qu’à 1x2 en taille et l’icone est décentrée…

Je partage la réalisation du moment sur le sujet Room Card et Mushroom
image

Sur la partie de gauche j’utilise mushroom template card et sur la droite mushroom chips card le tout dans vertical stack in card

Sur la partie mushroom template card j’ai :

  • sur le primary j’ai le nom de la pièce
  • un badge où j’affiche un mouvement s’il a lieu sinon le nombre de lumières de la pièce qui sont allumées
  • sur le secondary je mets la température / humidité qui change de couleur en fonction de seuil prédéfini comme on le voit sur le screen.

Sur la partie de droite mushroom chips card j’ai :

  • en premier la ou les fenêtres (si plusieurs popup)
  • en second la ou les portes (si plusieurs popup)
  • en troisième la ou les éclairages (si plusieurs popup)
  • en dernier la ou les prises (si plusieurs popup)

Je ne mets que 4 chips car sur le téléphone au 5ème cela passe à la ligne et le coté compact n’est plus d’usage !

Si je clique sur la carte mushroom template alors je navigue directement vers la sous vue de la pièce en question afin d’avoir tout le détail comme les volets qui ne sont que très rarement manipuler en manuel mais plus en automatisation par exemple.

j’ai mis aussi en en-tête de section le même genre de carte avec le résumé global des pièces qui compose la section, cela joue le rôle de titre :
image

Pour le moment je ne bascule pas sur les cartes plus standard de HA car j’ai pas mal de mise en forme afin d’avoir une alerte plus visuel et plus marquer mais dès que le standard est plus customisable si on peut je basculerais pour plus de fluidité, et meilleurs montée de version dans le temps.

J’ai aussi regardé les bubble card qui sont un peu dans le même esprit mais des lenteurs importantes dans la version actuelle m’empêche de faire un test de plus grand envergure

Je mets le code de ma carte CH Parents pour vous donner une idée du bordel qu’il y a !!!
A voir si une simplification est jouable ou non !

Je suis preneur de toute remarque, partage complémentaire, modification et j’en passe :slight_smile:

Code de la carte CH Parents
type: custom:vertical-stack-in-card
cards:
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        entity: light.grp_ecl_ch_parents
        icon: mdi:bed-king
        icon_color: purple
        primary: CH Parents
        secondary: >-
          {{ states("sensor.temp_ch_parents_temperature") | round(1) }}°C - {{
          states("sensor.temp_ch_parents_humidity") | round(0) }}%
        layout: horizontal
        tap_action:
          action: navigate
          navigation_path: /lovelace/Parents
        double_tap_action:
          action: navigate
          navigation_path: /lovelace/Parents
        hold_action:
          action: toggle
        badge_icon: |
          {% if is_state('binary_sensor.mvt_ch_parents_occupancy', 'on') %}
            mdi:run-fast
          {% else %}
            mdi:human-male
          {% endif %}
        badge_color: |
          {% if is_state('binary_sensor.mvt_ch_parents_occupancy', 'on') %}
            pink
          {% else %}
            grey
          {% endif %}
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 14px;
              --card-secondary-font-size: 14px;
              position: relative;
              border: none;
              box-shadow: none;
              --card-secondary-color:
                {% if states('sensor.temp_ch_parents_temperature') | float < 15 %}
                  rgba(70, 130, 180, 1); /* Bleu froid */
                {% elif states('sensor.temp_ch_parents_temperature') | float >= 15 and states('sensor.temp_ch_parents_temperature') | float < 22 %}
                  rgba(93, 157, 82, 0.7); /* Vert confort */
                {% elif states('sensor.temp_ch_parents_temperature') | float >= 22 and states('sensor.temp_ch_parents_temperature') | float < 25 %}
                  rgba(243, 169, 60, 0.7); /* Orange chaud */
                {% else %}
                  rgba(203, 79, 64, 0.7); /* Rouge trop chaud */
                {% endif %};
            }
            /* Style pour faire clignoter le badge si ON */
            mushroom-badge-icon {
              {% if is_state('binary_sensor.mvt_ch_parents_occupancy', 'on') %}
                animation: blink 1s infinite; /* Clignotement */
              {% endif %}
            }
            @keyframes blink {
              0% { opacity: 1; }
              50% { opacity: 0.3; }
              100% { opacity: 1; }
            }
      - type: custom:mushroom-chips-card
        chips:
          - type: template
            entity: binary_sensor.fen_ch_parents_contact
            icon: |
              {% if is_state(entity, 'on') %} 
               mdi:window-open-variant
              {% elif is_state(entity, 'off') %} 
               mdi:window-closed-variant
              {% else %}
               mdi:alert
              {% endif %}
            icon_color: |
              {% if is_state(entity, 'on') %} 
               pink
              {% elif is_state(entity, 'off') %} 
               grey
              {% else %}
               grey
              {% endif %}
            tap_action:
              action: more-info
            card_mod:
              style: |
                ha-card {
                  {% if is_state('binary_sensor.fen_ch_parents_contact', 'on') %}
                    background-color: rgba(255, 0, 0, 0.2) !important; /* Rouge avec opacité 0.2 */
                  {% elif is_state('binary_sensor.fen_ch_parents_contact', 'off') %}
                    background-color: rgba(var(--rgb-secondary-text-color), 0.1) !important; /* Couleur claire si OFF */
                  {% else %}
                    background-color: rgba(255, 165, 0, 0.2) !important; /* Orange avec opacité 0.2 si autre état */
                    animation: blink 1.0s infinite; /* Animation de clignotement personnalisée */
                  {% endif %}
                  border-radius: 5px; /* Arrondi des coins */
                }
                @keyframes blink {
                  0%, 100% { opacity: 1; }
                  10%, 80% { opacity: 0.5; }  /* Coups rapides */
                  40%, 60% { opacity: 1; }   /* Coups lents */
                }
          - type: template
            entity: binary_sensor.pte_ch_parents_contact
            icon: |
              {% if is_state(entity, 'on') %} 
               mdi:door-open
              {% elif is_state(entity, 'off') %} 
               mdi:door-closed
              {% else %}
               mdi:alert
              {% endif %}
            icon_color: |
              {% if is_state(entity, 'on') %} 
               pink
              {% elif is_state(entity, 'off') %} 
               grey
              {% else %}
               grey
              {% endif %}
            tap_action:
              action: more-info
            card_mod:
              style: |
                ha-card {
                  {% if is_state('binary_sensor.pte_ch_parents_contact', 'on') %}
                    background-color: rgba(255, 0, 0, 0.2) !important; /* Rouge avec opacité 0.2 */
                  {% elif is_state('binary_sensor.pte_ch_parents_contact', 'off') %}
                    background-color: rgba(var(--rgb-secondary-text-color), 0.1) !important; /* Couleur claire si OFF */
                  {% else %}
                    background-color: rgba(255, 165, 0, 0.2) !important; /* Orange avec opacité 0.2 si autre état */
                    animation: blink 1.0s infinite; /* Animation de clignotement personnalisée */
                  {% endif %}
                  border-radius: 5px; /* Arrondi des coins */
                }
                @keyframes blink {
                  0%, 100% { opacity: 1; }
                  10%, 80% { opacity: 0.5; }  /* Coups rapides */
                  40%, 60% { opacity: 1; }   /* Coups lents */
                }
          - type: template
            entity: light.grp_ecl_ch_parents
            tap_action:
              action: fire-dom-event
              browser_mod:
                service: browser_mod.popup
                data:
                  title: Lumières de la CH Parents
                  content:
                    type: grid
                    columns: 2
                    square: false
                    cards:
                      - type: custom:mushroom-template-card
                        entity: light.ecl_ch_parents
                        icon: mdi:ceiling-light
                        primary: Plafonnier
                        layout: horizontal
                        icon_color: >
                          {% if is_state('light.ecl_ch_parents', 'on') %} {% if
                          state_attr('light.ecl_ch_parents', 'rgb_color') %}
                            {% set r = state_attr('light.ecl_ch_parents', 'rgb_color')[0] | int %}
                            {% set g = state_attr('light.ecl_ch_parents', 'rgb_color')[1] | int %}
                            {% set b = state_attr('light.ecl_ch_parents', 'rgb_color')[2] | int %}
                            #{{ '%02x%02x%02x' % (r, g, b) }}
                          {% else %}
                            yellow
                          {% endif %} {% else %} grey {% endif %}
                        tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              background-color:
                                {% if is_state('light.ecl_ch_parents', 'on') %}
                                  {% if state_attr('light.ecl_ch_parents', 'rgb_color') is not none %}
                                    rgba({{ state_attr('light.ecl_ch_parents', 'rgb_color')[0] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[1] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[2] }}, 0.4) !important;
                                  {% else %}
                                    rgba(255, 215, 0, 0.4) !important;
                                  {% endif %}
                                {% elif is_state('light.ecl_ch_parents', 'off') %}
                                  rgba(var(--rgb-secondary-text-color), 0.1) !important;
                                {% else %}
                                  rgba(255, 165, 0, 0.4) !important;
                                {% endif %};
                              border-radius: 25px;
                            }
                      - type: custom:mushroom-template-card
                        entity: light.ecl_ch_parents_bureau
                        icon: mdi:desk-lamp
                        primary: Bureau
                        layout: horizontal
                        icon_color: >
                          {% if is_state('light.ecl_ch_parents_bureau', 'on') %}

                          {% if state_attr('light.ecl_ch_parents_bureau',
                          'rgb_color') %}
                            {% set r = state_attr('light.ecl_ch_parents_bureau', 'rgb_color')[0] | int %}
                            {% set g = state_attr('light.ecl_ch_parents_bureau', 'rgb_color')[1] | int %}
                            {% set b = state_attr('light.ecl_ch_parents_bureau', 'rgb_color')[2] | int %}
                            #{{ '%02x%02x%02x' % (r, g, b) }}
                          {% else %}
                            yellow
                          {% endif %} {% else %}
                            grey
                          {% endif %}
                        tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              background-color:
                                {% if is_state('light.ecl_ch_parents_bureau', 'on') %}
                                  {% if state_attr('light.ecl_ch_parents_bureau', 'rgb_color') is not none %}
                                    rgba({{ state_attr('light.ecl_ch_parents_bureau', 'rgb_color')[0] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[1] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[2] }}, 0.4) !important;
                                  {% else %}
                                    rgba(255, 215, 0, 0.4) !important;
                                  {% endif %}
                                {% elif is_state('light.ecl_ch_parents_bureau', 'off') %}
                                  rgba(var(--rgb-secondary-text-color), 0.1) !important;
                                {% else %}
                                  rgba(255, 165, 0, 0.4) !important;
                                {% endif %};
                              border-radius: 25px;
                            }
            icon: mdi:lightbulb-group
            hold_action:
              action: toggle
            icon_color: |-
              {% if is_state('light.grp_ecl_ch_parents', 'on') %}
                  {% if state_attr('light.grp_ecl_ch_parents', 'rgb_color') %}
                    {% set r = state_attr('light.grp_ecl_ch_parents', 'rgb_color')[0] | int %}
                    {% set g = state_attr('light.grp_ecl_ch_parents', 'rgb_color')[1] | int %}
                    {% set b = state_attr('light.grp_ecl_ch_parents', 'rgb_color')[2] | int %}
                    #{{ '%02x%02x%02x' % (r, g, b) }}
                  {% else %}
                    yellow
                  {% endif %}
              {% else %}
                grey
              {% endif %}
            card_mod:
              style: |
                ha-card {
                  background-color:
                    {% if is_state('light.grp_ecl_ch_parents', 'on') %}
                      {% if state_attr('light.grp_ecl_ch_parents', 'rgb_color') is not none %}
                        rgba({{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[0] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[1] }}, {{ state_attr('light.grp_ecl_ch_parents', 'rgb_color')[2] }}, 0.4) !important;
                      {% else %}
                        rgba(255, 215, 0, 0.4) !important;
                      {% endif %}
                    {% elif is_state('light.grp_ecl_ch_parents', 'off') %}
                      rgba(var(--rgb-secondary-text-color), 0.1) !important;
                    {% else %}
                      rgba(255, 165, 0, 0.4) !important;
                    {% endif %};
                  border-radius: 5px;
                }
          - type: template
            entity: switch.grp_pc_ch_parents
            tap_action:
              action: fire-dom-event
              browser_mod:
                service: browser_mod.popup
                data:
                  title: Prises de la CH Parents
                  content:
                    type: grid
                    columns: 2
                    square: false
                    cards:
                      - type: custom:mushroom-entity-card
                        entity: switch.pc_ch_parents_bureau
                        name: Bureau
                        icon: mdi:desk
                        icon_color: green
                        primary_info: name
                        tap_action:
                          action: none
                        hold_action:
                          action: more-info
                        double_tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              background-color:
                                {% if is_state('switch.pc_ch_parents_bureau', 'on') %}
                                  rgba(0, 128, 0, 0.3) !important;;
                                {% endif %};
                              border-radius: 25px;
                            }
                      - type: custom:mushroom-entity-card
                        entity: switch.pc_ch_parents_moustiques
                        icon_color: green
                        primary_info: name
                        name: Moustiques
                        icon: fas:mosquito
                        tap_action:
                          action: toggle
                        hold_action:
                          action: more-info
                        double_tap_action:
                          action: none
                        card_mod:
                          style: |
                            ha-card {
                              background-color:
                                {% if is_state('switch.pc_ch_parents_moustiques', 'on') %}
                                  rgba(0, 128, 0, 0.3) !important;;
                                {% endif %};
                              border-radius: 25px;
                            }
                      - type: custom:mushroom-entity-card
                        entity: switch.pc_ch_parents_camera
                        name: Caméra
                        icon: mdi:cctv
                        icon_color: pink
                        primary_info: name
                        tap_action:
                          action: none
                        hold_action:
                          action: more-info
                        double_tap_action:
                          action: toggle
                        card_mod:
                          style: |
                            ha-card {
                              background-color:
                                {% if is_state('switch.pc_ch_parents_camera', 'on') %}
                                  rgba(255, 0, 0, 0.2) !important;;
                                {% endif %};
                              border-radius: 25px;
                            }
            icon: mdi:power-plug
            hold_action:
              action: toggle
            icon_color: |
              {% if is_state(entity, 'on') %} 
               green
              {% elif is_state(entity, 'off') %} 
               grey
              {% else %}
               grey
              {% endif %}
            card_mod:
              style: |
                ha-card {
                  {% if is_state('switch.grp_pc_ch_parents', 'on') %}
                    background-color: rgba(0, 128, 0, 0.4) !important; /* Vert avec opacité 0.2 */
                  {% elif is_state('switch.grp_pc_ch_parents', 'off') %}
                    background-color: rgba(var(--rgb-secondary-text-color), 0.1) !important; /* Couleur claire si OFF */
                  {% else %}
                    background-color: rgba(255, 165, 0, 0.2) !important; /* Orange avec opacité 0.2 si autre état */
                  {% endif %}
                    border-radius: 5px; /* Arrondi des coins */
                }
        alignment: end
        card_mod:
          style: |
            ha-card {
              padding: 10px;
              margin-left: -40px;
            }

6 « J'aime »

Un grand bravo !

J’aime beaucoup le layout horizontal!

Tu n’as jamais de « résidus » de ce type ?
image
Moi ça me fais ça quasi systématiquement si j’imbrique

  • vertical stack in card
    • horizontal card
      mushroom template
      mushroom chips

Avec la pile horizontale pour garder l’interface graphique… Du coup il me faut ajouter horizontal: true dans la vertical stack in card, et enlever la pile horizontale, mais on perd l’éditeur graphique…

Autre question:
Si je comprend bien, ta vue smartphone c’est 1 carte par ligne. Tu aurais une vue complete ?
Je n’ai pas basculé sur ce layout a cause des soucis évoqué au dessus (j’ai un dashboard test comme ça), et parce que ça me convient moins sur tablette…

Encore bravo et merci de faire « vivre le fil »…