Custom carte cover de mushroom / template

Hello,

De mon coté, je suis parti sur une refonte de mon interface et j’ai choisi mushroom.
C’est joli, je peux uniformiser le tout. C’est pas tout rose non plus (j’avais simplifié le code avec le clustering et là c’est bien moins le cas)

Je bute sur un truc simple, mais je vois pas quelle option prendre :
Aujourd’hui j’ai une carte perso qui permet de piloter un groupe de volets
image
Je voudrais que ça ressemble le plus possible à la carte mushroom cover
image

Sauf que l’info secondaire correspond à rien … Afficher la moyenne des états d’ouvertures c’est bête

Je voudrai donc conserver les infos 5 3 1, comme je peux le faire avec la carte mushroom template
image

Mais je n’arrive à combiner la carte officielle et le template !

Qui a une idée ? (l’idée c’est quand même d’éviter au max les cardmod/stylet & co et le code de 4km de long pour recréer une carte complète)

J’avais la soluce sous les yeux
image

Salut @Pulpy-Luke

P’tite question : comment as-tu inversé « monter » / « descendre » entre les 2 modèles de carte ?

Salut.
Tu entends quoi par inverser ?
J’ai pas l’impression d’avoir fait autre chose que du comptage

Sur ton premier post :

  • image n°1 le bouton « monter » à gauche
  • image n°2 le bouton « monter » à droite

Et au final sut ton post du 14/07 on est dans la configuration de l’image n°1.

Alors que de base par défaut sur les card mushroom-cover on est sur une conf mode image n°2.

OK. Je regarde ce soir et je te dis / donne le code de la carte
J’ai (re) composé la carte à la main (plusieurs fois) donc j’ai pas spécialement attention à l’ordre

pas de problème, merci :wink:

Hello

Désolé, changement de plan pour le WE donc je ne réponds que ce soir …
Donc dans la version finale de la carte, c’est une custom:stack-in-card horizontal avec des custom:mushroom-entity-card donc à mettre dans l’ordre qu’on souhaite
Version decluttering

  mushroom_cover_group:
    element:
      type: custom:stack-in-card
      mode: horizontal
      cards:
        - type: custom:mushroom-template-card
          primary: ''
          icon_color: none
          multiline_secondary: true
          secondary: >-
            {% set all = expand('cover.volets_[[groupe]]'|lower) -%} {% set
            positions = all |
            map(attribute='attributes.current_position')|list-%} {% set moving =
            all | selectattr('state', 'in', ['opening','closing'])|list|count
            -%} {% set open = positions | reject("!=",100) |list |count -%} {%
            set closed = positions | reject("!=",0) |list |count -%} {% set
            other = positions|list|count - open - closed - moving -%}Fermés={{
            closed }} Partiels={{ other }} Ouverts={{ open }} {% if moving >0
            -%}Actifs={{ moving }}{% endif %}
          icon: '[[icon]]'
        - type: horizontal-stack
          cards:
            - type: custom:mushroom-entity-card
              entity: cover.volets_[[groupe]]
              icon: mdi:arrow-up
              primary_info: none
              vertical: true
              secondary_info: none
              icon_color: disabled
              card_mod:
                style: |
                  ha-card {
                        --chip-background: rgba(var(--rgb-grey), 0.05);
                   } 
              tap_action:
                action: call-service
                haptic: success
                service: cover.set_cover_position
                service_data:
                  entity_id: cover.volets_[[groupe]]
                  position: 100
            - type: custom:mushroom-entity-card
              entity: cover.volets_[[groupe]]
              icon: mdi:pause
              primary_info: none
              vertical: true
              secondary_info: none
              icon_color: disabled
              card_mod:
                style: |
                  .shape {
                        background-color: rgba(var(--rgb-grey), 0.01);
                   } 
              tap_action:
                action: call-service
                haptic: success
                service: cover.stop_cover
                service_data:
                  entity_id: cover.volets_[[groupe]]
            - type: custom:mushroom-entity-card
              entity: cover.volets_[[groupe]]
              icon: mdi:arrow-down
              primary_info: none
              vertical: true
              secondary_info: none
              icon_color: disabled
              card_mod:
                style: |
                  ha-card {
                        --chip-background: rgba(var(--rgb-grey), 0.025);
                   } 
              tap_action:
                action: call-service
                haptic: success
                service: cover.set_cover_position
                service_data:
                  entity_id: cover.volets_[[groupe]]
                  position: 0```
1 « J'aime »

Merci @Pulpy-Luke,

Ca ressemble tellement à une cover-card mushroom d’origine, que je l’avais pas vu venir :wink:

Je vais pouvoir continuer mes tests !!!

C’est un peu l’idée, j’ai mis en place mushroom depuis quelques temps maintenant, donc j’essaye de garder l’uniformité

Bonjour

Je suis entrain de découvrir les cartes Mushroom dont le style minimaliste me convient assez bien
Je suis tombé sur ce poste dans mes recherches et l’idée du résumé des différents volets est un des éléments que je souhaite aussi :slight_smile:
Par contre à la lecture du code je découvre la synthaxe cover.volets_[[groupe]]
Je ne l’ai jamais vu encore mais normal je suis un jeune sur HA :wink:
J’ai un groupe de volet enfin plusieurs même (étage, rdc et maison)
Que signifie le double [[xxxx]] ?

Salut,

Avec le mécanisme de template decluttering, les elements en double [[ ]] sont des variables, remplacées à la volée.
Voilà comment ça s’utilise :

type: custom:decluttering-card
template: mushroom_cover_group
variables:
  - groupe: tous
  - icon: mdi:home
  - label: Tous

Merci @Pulpy-Luke
Je n’ai pas éclusé la littérature sur ce sujet qui semble intéressant effectivement mais je n’ai pas encore compris le fonctionnement.

Néanmoins en créant un groupe pour mes volets et en reprenant un bout de ton code j’ai pu faire ceci

1 « J'aime »

bonjour @jerome6994
Tu peux partager le code de ta carte état des volets SVP?
merci

Bonjour oui bien sûr dès que je suis sur PC je fais ça sur ce même poste pour ne pas polluer le fil de discussion.

Bien voilà le code de la carte que j’utilise au final :

type: custom:mushroom-template-card
primary: Volets de la maison
multiline_secondary: true
secondary: >-
  {% set all = expand('cover.vr_maison'|lower) -%} {% set positions = all |
  map(attribute='attributes.current_position')|list-%} {% set moving = all |
  selectattr('state', 'in', ['opening','closing'])|list|count -%} {% set open =
  positions | reject("!=",100) |list |count -%} {% set closed = positions |
  reject("!=",0) |list |count -%} {% set other = positions|list|count - open -
  closed - moving -%}Fermés = {{ closed }} / Partiels = {{ other }} / Ouverts =
  {{ open }} {% if moving >0 -%} / Actifs  ={{ moving }}{% endif %}
icon: mdi:window-shutter
icon_color: green
badge_icon: ''
layout: horizontal
fill_container: true

En amont j’ai créer un groupe de volets roulant via créer une entrée choix groupe.
Mais je pense que c’est possible aussi en passant par la création d’un groupe dans groups.yaml

Je ne sais pas dire qui est le mieux je suis trop jeune sur le sujet
Tout ceci est en attendant de comprendre le fonctionnement décrit par @Pulpy-Luke sur le mécanisme de template decluttering et de la variable à la volée.

Il y a 3 façons de faire des groupes de volets :

  • groups.yaml
  • via l’ui
  • via un cover / platform: group en yaml

La différence notable c’est que dans les 2 derniers cas, le groupe se comporte comme 1 volet (notion de position, up/down, state identiques). C’est d’ailleurs pour ça que le code fonctionne. Avec groups.yaml, c’est plutôt une simple liste d’entités

1 « J'aime »

Merci @Pulpy-Luke et merci @jerome6994 . Bien vu pulpy pour les différentes façons de créer un group. J’étais parti sur la première et rien ne remontait…Du coup avec la méthode 2 (que je ne connaissais pas), tout est nickel.
:clap: :clap:

Bonjour

Pensant que je n’avais pas ajouter tous mes volets dans mon entité groupe je trouvais mon résultat conforme.
Hors il s’avère sue j’ai tous mes volets 7 x Zigbee Profalux mais aussi mes 2 x Velux.
Il ne manque que mon volet solaire RTS Somfy qui n’est pas encore intégré (Hors sujet mais je cherche aussi une solution MQTT pour ce dernier).

Bref à l’affichage avec le code que j’ai posté un peu plus haut il ne me compte pas du tout les Velux quelques soit la position ouvert fermé ou intermédiaire.

Une idée du pourquoi ils ne sont pas pris en compte malgré qu’ils soient dans le groupe ?
Est ce que cela vient du fait que j’ai pas mis en place le mécanisme de template decluttering ?

Salut.
Le code qui ‹ compte › c’est du jinja… Ça marche peu importe le type de carte.
Par contre, ça dépend grandement du statut du volet… Si ton velux ne retourne pas les infos avec les états qui servent à compter (comme les somfy) alors ça s’explique. Il faut donc vérifier /comparer

Oui je comprends bien, j’ai oublié de mettre ceci au petit déj :slight_smile:

J’ai bien l’attribut current_position, j’ai bien l’état open donc je devrais pouvoir compter les velux open ou closed ?

Je n’ai pas le moving par contre mais sur tous les volets donc j’ai supprimé.

Pour les partiellement ouvert il faut que je regarde si la position est différente à la fois de 0 et de 100. Je n’ai pas encore trouvé comment faire le ET :frowning: grrr les début toujours difficile pour se mettre en selle.

Le jinja n’est pas encore assimilé il faut que je me penche encore plus sur les bases et les tutos.
Ce qui est cool c’est qu’il y a plein de choses à apprendre : patience est le mettre mot, découverte est une envie :slight_smile: