Bonjour,
J’ai une mushroom card avec une lumière.
J’utilise le templating pour afficher une icone, sa couleur, un texte.
J’affiche cette carte dans plusieurs dashboard, donc je duplique mon code.
En plus j’ai plusieurs lumières donc ça multiplie la duplication.
Quelle est la meilleure façon pour centraliser cela et ensuite juste afficher les 3 infos directement, icone, couleur, texte ?
Merci.
- type: custom:mushroom-template-card
primary: Extérieur
secondary: >-
{% if is_state('switch.action_lumiere_exterieure', 'on') %} allumé {% else
%} éteint {% endif %}
icon: >-
{% if is_state('switch.action_lumiere_exterieure', 'on') %}
mdi:lightbulb-on {% else %} mdi:lightbulb-off {% endif %}
entity: Extérieur
tap_action:
action: call-service
service: switch.toggle
data: {}
target:
entity_id: switch.action_lumiere_exterieure
icon_color: >-
{% if is_state('switch.action_lumiere_exterieure', 'on') %} #F4CE3F {%
else %} grey {% endif %}
Herbs
Mars 30, 2024, 7:04
2
Salut @cbroissa-github
Je ne suis pas certain d’avoir compris à 100% ta demande.
Mais au cas où, je pense que tu peux jeter un œil à :
Ça s’installe via HACS
Exemple :
La template
decluttering_templates:
mush_sensors:
default:
- color_on: deep-orange
- color_off: cyan
card:
type: custom:mushroom-template-card
entity: '[[entity]]'
primary: '[[name]]'
secondary: |
{% if is_state(config.entity,'on') %}
[[state_on]]
{% else %}
[[state_off]]
{% endif %}
icon: |
{% if is_state(config.entity,'on') %}
[[icon_on]]
{% else %}
[[icon_off]]
{% endif %}
icon_color: |
{% if is_state(config.entity,'on') %}
[[color_on]]
{% else %}
[[color_off]]
{% endif %}
fill_container: true
tap_action:
action: more-info
card_mod:
style: |
:host {
--mush-icon-size: 48px;
}
mushroom-shape-icon {
--shape-color: transparent !important;
}
ha-card {
background: transparent;
box-shadow: none;
}
Le code côté dashboard
type: custom:mod-card
card_mod:
style: |
ha-card {
background-color: rgba(10,10,10,0.4);
box-shadow: var( --ha-card-box-shadow, 0px 2px 1px -1px rgba(255, 255, 255, 0.2), 0px 1px 1px 0px rgba(255, 255, 255, 0.14), 0px 1px 3px 0px rgba(255, 255, 255, 0.12) );
}
card:
type: grid
square: false
columns: 3
cards:
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_bureau
- name: Bureau
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:window-open-variant
- icon_off: mdi:window-closed-variant
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_cuisine
- name: Cuisine
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:window-open-variant
- icon_off: mdi:window-closed-variant
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_entree
- name: Entrée
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:door-open
- icon_off: mdi:door-closed
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_garage
- name: Garage
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:window-open-variant
- icon_off: mdi:window-closed-variant
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.vs_garage_vibration
- name: Garage
- state_on: Détectées
- state_off: Ras
- icon_on: mdi:garage-alert-variant
- icon_off: mdi:garage-variant
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_portail
- name: Portail
- state_on: Ouvert
- state_off: Fermé
- icon_on: mdi:gate-open
- icon_off: mdi:gate
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_salle
- name: Salle
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:door-open
- icon_off: mdi:door-closed
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_salon
- name: Salon
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:door-open
- icon_off: mdi:door-closed
- type: custom:decluttering-card
template: mush_sensors
variables:
- entity: binary_sensor.drs_sdb_rdc
- name: Sdb Rdc
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:window-open-variant
- icon_off: mdi:window-closed-variant
Le visuel :
1 « J'aime »
Salut,
ca change quoi de déclaré la couleur dans défault au lieu du template ?
C’est si tu veut une autre couleur sur une carte decluterring tu change la couleur du variable dans la carte ?
Herbs
Mars 30, 2024, 7:23
4
Je ne l’utilise pas tout à fait comme ça.
Je suis parti du principe que je voulais fixer les couleurs une bonne fois pour toutes.
Mais que je voulais pouvoir custom le reste.
Après, on peut l’utiliser comme tu le pensais aussi
Je veux éviter dans chaque carte de remettre les couleurs, les icônes.
Avec votre solution c’est un peu mieux mais il faut quand même dupliquer à chaque fois qu’on utilise la même carte.
Dans l’exemple d’@herds il reste encore pas mal de répétition qu’on peut traiter avec les variables par défaut justement …
Genre ça par défaut (donc pas besoin de les préciser)
- state_on: Ouverte
- state_off: Fermée
- icon_on: mdi:window-open-variant
- icon_off: mdi:window-closed-variant
Et on surcharge au cas par cas quand c’est par les bonnes valeurs (là on les indique)
- state_on: Détectées
- state_off: Ras
- icon_on: mdi:garage-alert-variant
- icon_off: mdi:garage-variant
Après il faut quand même pas se leurrer. Si on veut aller plus loin ça impose d’avoir pris en compte des normes de nommage par exemple. Et il y aura toujours une limite, quand la valeur est différente, c’est pas factorisable
Herbs
Mars 30, 2024, 8:28
7
C’est parce que j’ai pas mal de capteur (vibration, mouvement, fumée, chaleur, fuite, ouverture), et je n’ai pas encore décidé quel type mérite d’avoir ses valeurs par défaut
1 « J'aime »
Top merci beaucoup, j’ai pu commencer à utiliser cette carte et ça va vite, mon code fond à vue d’œil !
Si ça peut aider à mieux s’y retrouver, il suffit d’aller sur Editeur de configuration sur l’accueil, et de coller la carte juste avant la ligne views :
decluttering_templates:
lumiere_template:
default:
- logo_on: mdi:lightbulb-on
- logo_off: mdi:lightbulb-off
- couleur_on: '#F4CE3F'
- couleur_off: grey
- titre: Lumière
- titre_on: allumée
- titre_off: éteinte
element:
type: custom:mushroom-template-card
primary: '[[titre]]'
secondary: |-
{% if is_state('[[entite]]', 'on') %} [[titre_on]] {% elif
is_state('[[entite]]', 'unavailable') %}
Indisponible {% else %} [[titre_off]] {% endif %}
icon: >-
{% if is_state('[[entite]]', 'on') %} [[logo_on]] {% else %}
[[logo_off]] {% endif %}
entity: '[[entite]]'
tap_action:
action: call-service
service: switch.toggle
data: {}
target:
entity_id: '[[entite]]'
icon_color: >-
{% if is_state('[[entite]]', 'on') %} [[couleur_on]] {% else %}
[[couleur_off]] {% endif %}
hold_action:
action: call-service
service: switch.turn_off
data: {}
target:
entity_id: '[[entite]]'
views:
Puis à la place de l’ancienne carte, de mettre l’appel :
- type: custom:decluttering-card
template: lumiere_template
variables:
- titre: Lumière extérieure
- entite: switch.action_lumiere_exterieure
1 « J'aime »
Herbs
Avril 3, 2024, 7:03
9
Salut @cbroissa-github
N’oublie pas de passer ton topic en « résolu »