Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Mon Dashboard Home assistant
(13/05/2024, 15:00:07)Christophe0110 a écrit : Ah oui d'accord, tu es motivé toi Wink

C'était le début de la RT2012 (le chantier de la maison a commencé en 2013) qui oblige a afficher les diverses consommations et j'avais choisi ce type d'actionneur pour me donner de la souplesse ; puisqu'ils sont là, autant les utiliser !

Sans lien avec ce qui précède:
- un tuto pour simplifier en fusionnant les automatisations avec les triggers ID.
- une intégration pour nettoyer HA
Répondre
Hello Ives

Il me semblait que tu gérais tes automation avec le module logique ABB et/ou rednote. Tu as changé de statégie?
Répondre
Non tout ce qui est fonctionnalités est dans le module logique. C'est pérenne, non tributaire de mise à jour et fonctionne même en cas de panne du NUC ou du routeur ou de plantage de HA.

En automatisation HA j'ai surtout des notifications comme le tarif Tempo du lendemain, fin du lavage de vitre des robots, portail ouvert, manque sel adoucisseur, modes de chauffage du SPA et quelques "bricoles" comme la lecture d'un message dans Sonos en cas d'intrusion ou lors d'un appel du portier de rue et les commandes vocales pour les tâches du robot de sol.
Répondre
Tiens, en parlant de commandes vocales...
Je pensais partir sur du Alexa mais est-ce vraiment utile ?
Est-ce qu'on a pas l'air un peu bête dans son salon à parler tout seul ?
J'ai + l'impression que c'est gadget mais j'avoue que j'ai quand même envie d'essayer...
J'aimerais intégré l'IA pour faire certaine chose comme par exemple pouvoir dire : "Ferme tous les volets sauf celui des chambres des enfants".
J'ai testé avec Google et je peux demander à fermer tous les volets ou juste un seul mais pas ce genre de condition particulière...
Répondre
(05/06/2024, 08:38:24)Christophe0110 a écrit : Tiens, en parlant de commandes vocales...
Je pensais partir sur du Alexa mais est-ce vraiment utile ?
Est-ce qu'on a pas l'air un peu bête dans son salon à parler tout seul ?
J'ai + l'impression que c'est gadget mais j'avoue que j'ai quand même envie d'essayer...
J'aimerais intégré l'IA pour faire certaine chose comme par exemple pouvoir dire : "Ferme tous les volets sauf celui des chambres des enfants".
J'ai testé avec Google et je peux demander à fermer tous les volets ou juste un seul mais pas ce genre de condition particulière...

Moi, j'avais déjà l'air bête avec les commandes vocales de la voiture, alors un peu plus ou un peu moins mais pas plus que les personnes dans la rue qui parlent en "mains libres" avec le smartphone (l'étonnement du début à complètement disparu)! Tongue

Je trouve que c'est très pratique et je les utilise souvent mais dans mon installation il y a le choix des boutons, smartphones/tablettes, écran tactile et commandes vocales donc rien d'obligatoire. Mon épouse y vient doucement et "Ferme tous les volets", "Nettoie la cuisine" (pour le robot de sol), "Ajoute tel produit à la liste de course", "minuteur de x minutes" sont ses commandes préférées.

A noter que les scènes ou les scripts créés dans HA peuvent également être exécutés via Siri (avec Companion) ce qui est bien pour les commandes depuis la voiture comme "ouvre/ferme le portail/garage car, avec Siri, on a pas à toucher au téléphone ou à lancer une application.
Répondre
Citation :Concernant la navigation vers les pièces, il y a deux possibilités :
1) Sélectionner une zone  (je ne poste ici que les copies d'écran des zones, sachant chaque colonne d'une zone est également une pièce en sous-vue)
2) Sélectionner une pièce pour afficher uniquement les éléments de la pièce et éviter le scrolling en utilisation smartphone

Hello Ives,

Au risque que la question ait déjà été posée (auquel cas, je m'excuse) mais je ne comprends pas bien ton explication sur la navigation vers le détail de tes pièces...
Pour prendre un de tes exemple, si on regarde la page "PDV" (qui semble être une sous-vue vu qu'on y voit la flèche de retour), j'y vois donc plusieurs pièces (Hall, Cuisine, Salle à manger et Salon). Ensuite, juste avant, on voit un exemple de page "Zone" dans laquelle on retrouve ces mêmes pièces en image mignature.
Je comprends donc qu'on appuyant, par exemple, sur l'image du salon, tu fais une navigation vers la page "PDV" mais comment fais-tu pour que ça tombe directement sur "Salon" et qu'il ne soit pas nécessaire de scroller des détails du "Hall" jusqu'à celui du "Salon" ?
Ou alors, est-ce que je dois comprends ton explication ci-dessus comme étant :
- La page "PDV" est accessible via les "onglet" au dessus et l'utilisateur peut scroller jusqu'à la pièce voulue.
- Le bouton "Salon" (l'image) de la zone "Toutes les pièces RDC SUB & Hall" redirige vers UNE AUTRE page masquée (sous-vue) qui dé-double ainsi les mêmes options que dans la page "PDV" accessible, elle, par onglet ?

A+
Répondre
Bonjour Christophe,

Depuis cette page "Pièces De Vie" (PDV)

[Image: b82i.jpg]

Si j'appuie, par exemple, sur l'image "Salon", il s'affiche directement cette page (qui est une sous-vue) :

[Image: wxng.jpg]

Voici le code de l'image salon :
type: picture
image: http:/local/Salon3.png
tap_action:
 action: navigate
 navigation_path: /lovelace/salon
Répondre
Merci pour ta réponse Ives.

Ok mais alors, cette page contient également le détail du salon ?

[Image: qsdk.jpg]

Donc tu dois gérer 2x le détail du salon dans 2 pages séparées ?
Répondre
J'ai cette page lorsque je touche sur le texte "Toutes les pièces RDC SUD et HALL".
J'ai effectivement créé une sous-vue par pièce afin de disposer d'un accès direct depuis l'image de la pièce. Il a donc le choix pour l'utilisateur : par pièce ou pour la zone
Répondre
Ok, c'est clair dans ma tête maintenant Wink
Merci Smile
Répondre
@Ives,

Tu utilises quoi comme entité pour avoir ces états là ?

   

Je suis en train de mettre en place un calendrier et les interfaces lovelace associés pour gérer le changement des filtres des réseaux d'eau.

Cependant j'arrive bien à avoir un bouton qui me crée un event dans le calendrier, mais impossible d'aller chercher l'info dans le passé pour savoir depuis quand a eu lieu le changement. Je dois donc associé un sensor pour le modifier et avoir la date de changement, d'où ma question.
Tu gères comment toi ces valeurs ? Via un bouton knx ou directement dans HA ?
Répondre
(03/09/2024, 18:26:52)XeNo a écrit : @Ives,

Tu utilises quoi comme entité pour avoir ces états là ?

Je suis en train de mettre en place un calendrier et les interfaces lovelace associés pour gérer le changement des filtres des réseaux d'eau.

Cependant j'arrive bien à avoir un bouton qui me crée un event dans le calendrier, mais impossible d'aller chercher l'info dans le passé pour savoir depuis quand a eu lieu le changement. Je dois donc associé un sensor pour le modifier et avoir la date de changement, d'où ma question.
Tu gères comment toi ces valeurs ? Via un bouton knx ou directement dans HA ?

J'utilise une entrée (input_datetime) je rentre la valeur directement dans HA.
Pour l'historique , je touche le texte puis le pictogramme "bargraph" et j'obtiens ceci (1ère période 28/03/24 au 04/09/24) même si actuellement je ne sais pas combien j'aurai de valeurs conservées.
(Je vais d'ailleurs mettre en place une notification pour une utilisation de 4 mois)

[Image: besb.jpg]
Répondre
Merci pour ta réponse.

Bon ca y est j'y suis arrivé après un peu de temps !

Voici donc les cards :
   

J'ai donc une grosse tuile qui indique le nombre de jours depuis le dernier changement de filtre, ainsi que les m3 filtrés

Si je clique sur la tuile, j'ai un prompt de confirmation (pour éviter les fausses manip)
   

Les valeurs sont remises à 0. Cela crée une entrée dans le calendrier local de HA (réalisable aussi sur un calendrier google pour ceux qui voudrait sortir les stats)
   

Dans le détail de l'entrée d'agenda on a les valeurs au moment du changement du/des filtres (durée de vie, cubage)
   

Les tuiles sont également dynamiques, en fonction de critères de cubage et de durée, 2 types d'alertes apparaissent :
   

On ne voit pas l'animation sur les captures bien évidemment, mais en gros lorsqu'il faut changer les filtres impérativement (dernière capture), la tuile et la bulle rayonnent en rouge pour attirer l'attention. Je pourrais aussi faire une notification par la suite.
Répondre
C'est bien complet. Poster le code serait un plus !
Répondre
Oui Super cela l’interface HA très dynamique
Répondre
(06/09/2024, 08:16:28)Ives a écrit : C'est bien complet. Poster le code serait un plus !

Pas de soucis, demandé si gentiment  Tongue

Alors on va déjà expliquer ; ce qui a été compliqué (d'où ma question initiale sur le type de capteur utilisé) c'est de savoir quand a eu lieu la dernière action. En fait c'est pas si simple à récupérer en fonction du type d'entité. 
J'ai donc fait autrement en utilisant des entités "fantômes" qui me servent à stocker des choses et récupérer des états.

1re étape :
Creer un calendrier HA, soit local, soit Google, soit ce que vous voulez.

2ème étape :
Creer 2 entités pour chaque filtre/réseau de filtre souhaité, un input_number (pour stocker une valeur), un input_datetime (pour stocker la date)

3ème étape :
Réaliser un script qui sera actionné quand on cliquera sur la tuile, il est en 3 étapes :
1/ stocker la date du jour au moment du clic dans input_datetime
2/ stocker le cubage total au moment du clic dans input_number
3/ Creer un event agenda qui a comme nom, le type de changement de filtre (moi cuve ou ville), et en description les informations précédentes (durée de vie, cubage)
Attention, il faudra autant de scripts que de bouton lovelace souhaité (que de filtre à changer en somme)

4ème étape :
Jouer avec les formules pour trouver le calcul adapté.
En gros c'est simple :
le cubage total - le cubage stocké donne le cubage de vie du filtre
la date actuelle - la date stockée donne la durée de vie du filtre

5ème étape, designer le tout sur lovelace pour que ce soit pratique, utile et si possible "joli"
ATTENTION, il faut, pour utiliser mon code, card-mod + mushroom. J'utilise l'entité mushroom-template-card


1/Donc le calendrier local (C'est une intégration HA, donc paramètres/appareils et services/intégration)
   

2/Les 2 (4 pour moi) entités fantômes (Paramètres/Automatisations et scènes/scripts)
   

3/Le code du script qui sera lancé par le bouton (à multiplier fonction de vos besoins) :
   
Code :
alias: Set Change Filtre Cuve
sequence:
 - action: calendar.create_event
   target:
     entity_id: calendar.filtres_eau
   data:
     summary: Changement filtres Cuve
     description: " Changés à {{ (now() - states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days }} jour(s) / {{ (states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_litre') | int) }} Litres"
     start_date: |
       {{ now().date() }}
     end_date: |
       {{ now().date() + timedelta(days=1) }}
 - action: input_button.press
   target:
     entity_id: input_button.sensor_date_filtre_eau_cuve
   data: {}
 - action: input_number.set_value
   target:
     entity_id: input_number.volume_changement_filtre_cuve_litre
   data:
     value: "{{ states('sensor.volume_cuve_litre') }}"
description: Creer une entrée agenda pour le changement du filtre eau de Cuve
icon: mdi:calendar-check-outline



4 et 5/ Et enfin, le code de la carte associée, attention c'est chargé parce qu'il y a pas mal de mise en forme conditionnelle pour les statuts d'alertes.
J'ai conditionné, pour l'instant et de manière arbitraire le cubage à 10m3, il sera certainement plus haut par la suite. Par contre j'ai également mis une condition de temps, j'estime qu'à 6 mois, le filtre doit être changé pour des raisons d'hygiène évidente.

J'ai donc 2 types d'alertes :
L'alerte mineure, en jaune, qui dit "Changement filtre à prévoir", avec un badge de type "information"
L'alerte sévère, en rouge, qui dit " Filtre à changer !", avec un badge de type "attention, avec un effet de halo rouge sur le badge et la tuile qui clignote pour attirer l'attention

Code :
         - type: custom:mushroom-template-card
           icon: mdi:air-filter
           icon_color: blue
           name: Filtre changé ?
           layout: vertical
           primary: Changer filtres eau de cuve ?
           tap_action:
             action: call-service
             confirmation:
               text: Valider le changement des filtres d'eau de cuve ?
             service: script.set_change_filtre_cuve
           secondary: >
             {% if ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 10000 ) or ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 180)  %}
               Vie : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_litre') | int)) / 1000) }} m³
               Filtre à changer !
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 8000)) or (((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             < 180) and ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 150)) %}
               Vie : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_litre') | int)) / 1000) }} m³
               Changement filtre à prévoir      
             {% else %}
               Vie : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_litre') | int)) / 1000) }} m³
             {% endif %}
           badge_icon: >
             {% if ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 10000 ) or ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 180)  %}
                 mdi:alert
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 8000))

             or (((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             < 180) and ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 150)) %}
                 mdi:information-symbol
             {% endif %}
           badge_color: >
             {% if ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 10000 ) or ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 180)  %}
                 red
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_litre') | int)
             > 8000))

             or (((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             < 180) and ((now() -
             states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
             > 150)) %}
                 amber
             {% endif %}
           multiline_secondary: true
           card_mod:
             style:
               .: >
                 {% if ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_litre') |
                 int) > 10000 ) or ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
                 > 180)  %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif (((states('sensor.volume_reseau_litre') | int) -
                 (states('input_number.volume_changement_filtre_ville_litre') |
                 int) < 10000) and ((states('sensor.volume_reseau_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_ville_litre') |
                 int) > 8000)) or (((now() -
                 states('input_button.sensor_date_filtre_eau_ville')|as_datetime).days
                 < 180) and ((now() -
                 states('input_button.sensor_date_filtre_eau_ville')|as_datetime).days
                 > 150)) %}

                 {% else %}

                 ha-card {
                   padding-bottom: 15px !important;
                 }  

                 {% endif %}
               mushroom-badge-icon$: >
                 {% if ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_litre') |
                 int) > 10000 ) or ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
                 > 180)  %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif (((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_litre') |
                 int) < 10000) and ((states('sensor.volume_cuve_litre') | int)
                 - (states('input_number.volume_changement_filtre_cuve_litre')
                 | int) > 8000)) or (((now() -
                 states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
                 < 180) and ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
                 > 150)) %}

                 .badge {
                   --badge-icon-size: 40px;
                   --badge-size: 30px;
                 }

                 {% endif %}
               mushroom-shape-icon$: |
                 .shape {
                   --icon-symbol-size: 40px;
                   --icon-size: 60px;
                 }
               mushroom-state-info$: >
                 {% if ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_litre') |
                 int) > 10000 ) or ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve')|as_datetime).days
                 > 180)  %}

                 .container {
                   --card-secondary-color: red;
                 }

                 {% elif (((states('sensor.volume_reseau_litre') | int) -
                 (states('input_number.volume_changement_filtre_ville_litre') |
                 int) < 10000) and ((states('sensor.volume_reseau_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_ville_litre') |
                 int) > 8000)) or (((now() -
                 states('input_button.sensor_date_filtre_eau_ville')|as_datetime).days
                 < 180) and ((now() -
                 states('input_button.sensor_date_filtre_eau_ville')|as_datetime).days
                 > 150)) %}

                 .container {
                   --card-secondary-color: orange;
                 }

                 {% endif %}

Voilà ! Amusez-vous bien  Big Grin
Répondre
@Yves,

Tu utilises quoi comme système de capteur de niveau de sel actuellement ?
J'ai vu plusieurs systèmes (soit détection hf, soit détection de conduction), mais je me demande s'il existe d'autres systèmes.

Merci d'avance,
Répondre
@Xeno
Le plus basique qui existe pour détecter le niveau bas du sel : un flotteur de ce type simplement posé sur le sel. Il suffit de régler la longueur du fil pour qu'il bascule à la hauteur désirée afin de disposer d'une petite réserve.
Et merci pour le code !
Répondre
Une solution très facile à mettre en place pour le suivi d'une tâche d'entretien (filtre ou autre) avec des notifications est l'utilisation du calendrier local HA. On peut créer autant de calendriers que d'appareils à suivre. Un exemple de l'affichage en mode liste (période de 7 jours).

[Image: o8yl.jpg]

Actuellement la période d'affichage des évènements est de 7 jours et n'est pas modifiable ; il faut donc utiliser les flèches < > pour naviguer dans le temps mais on peut espérer une évolution future (déjà demandée dans le GitHub)

Cette vidéo résume les fonctionnalités du calendrier local.
Répondre
En m'étant trompé de référence lors de ma commande de filtres à eau, je me suis aperçu d'un manquement dans ma gestion.
J'ai donc optimisé un peu la chose pour pouvoir choisir le/les filtres à changer.
Les automations présentées précédemment sont toujours d'actualité (dynamisme, couleur, animation, etc.) mais cette fois ci, on scinde les filtres, et surtout on peu choisir ce qu'on veut changer (ou pas)

Voici donc ce que ça donne à présent :
Dashboard
   

En cliquant dessus pour changer le/les filtre(s) (on peut ajouter autant de niveau de filtration que voulu, il faudra juste refaire toutes les conditions de tuile -ce qui est assez long je vous l'avoue !) :
   

Les différents types de filtres (liste construite en fonction de ce qui est disponible sur le commerce ou dans les habitudes, on peut le changer facilement)
   

L'entrée agenda qui est générée (qui s'adapte si on change l'un des filtres ou les 2)
   

Il y a un bug d'affichage dans l'entrée d'agenda, elle ne prend pas le retour à la ligne, pourtant il y est bien :
   

Voici les éléments à créer dans les "entrées" de HA (ici pour 2 étages de filtration, à répéter au besoin donc)
Répondre
Star 
Voici les éléments à créer dans les "entrées" de HA (ici pour 2 étages de filtration, à répéter au besoin donc)
   

Le script qui est lancé :
Code :
alias: Set Change Filtres Cuve1-2
sequence:
 - if:
     - condition: and
       conditions:
         - condition: not
           conditions:
             - condition: state
               entity_id: input_select.liste_type_filtre_eau_cuve_1_nouveau
               state: Pas de changement de filtre
         - condition: not
           conditions:
             - condition: state
               entity_id: input_select.liste_type_filtre_eau_cuve_2_nouveau
               state: Pas de changement de filtre
   then:
     - action: calendar.create_event
       target:
         entity_id: calendar.filtres_eau
       data:
         summary: Changement filtres cuve
         description: >
           Premiere filtration - Le {{
           states('input_select.liste_type_filtre_eau_cuve_1_courant') }} a
           duré {{ (now() -
           states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
           }} jours/{{ (states('sensor.volume_cuve_litre') | int) -
           (states('input_number.volume_changement_filtre_cuve_1_litre') | int)
           }} Litres

           Deuxième filtration - Le {{
           states('input_select.liste_type_filtre_eau_cuve_2_courant') }} a
           duré {{ (now() -
           states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
           }} jours/{{ (states('sensor.volume_cuve_litre') | int) -
           (states('input_number.volume_changement_filtre_cuve_2_litre') | int)
           }} Litres
         start_date: |
           {{ now().date() }}
         end_date: |
           {{ now().date() + timedelta(days=1) }}
     - action: input_select.select_option
       metadata: {}
       data:
         option: "{{states('input_select.liste_type_filtre_eau_cuve_1_nouveau')}}"
       target:
         entity_id: input_select.liste_type_filtre_eau_cuve_1_courant
     - action: input_button.press
       target:
         entity_id: input_button.sensor_date_filtre_eau_cuve_1
       data: {}
     - action: input_number.set_value
       target:
         entity_id: input_number.volume_changement_filtre_cuve_1_litre
       data:
         value: "{{ states('sensor.volume_cuve_litre') }}"
     - action: input_select.select_option
       metadata: {}
       data:
         option: "{{states('input_select.liste_type_filtre_eau_cuve_2_nouveau')}}"
       target:
         entity_id: input_select.liste_type_filtre_eau_cuve_2_courant
     - action: input_button.press
       target:
         entity_id: input_button.sensor_date_filtre_eau_cuve_2
       data: {}
     - action: input_number.set_value
       target:
         entity_id: input_number.volume_changement_filtre_cuve_2_litre
       data:
         value: "{{ states('sensor.volume_cuve_litre') }}"
 - if:
     - condition: and
       conditions:
         - condition: not
           conditions:
             - condition: state
               entity_id: input_select.liste_type_filtre_eau_cuve_1_nouveau
               state: Pas de changement de filtre
         - condition: state
           entity_id: input_select.liste_type_filtre_eau_cuve_2_nouveau
           state: Pas de changement de filtre
   then:
     - action: calendar.create_event
       target:
         entity_id: calendar.filtres_eau
       data:
         summary: Changement filtres cuve
         description: >-
           Premiere filtration - Le {{
           states('input_select.liste_type_filtre_eau_cuve_1_courant') }} a
           duré {{ (now() -
           states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
           }} jours/{{ (states('sensor.volume_cuve_litre') | int) -
           (states('input_number.volume_changement_filtre_cuve_1_litre') | int)
           }} Litres
         start_date: |
           {{ now().date() }}
         end_date: |
           {{ now().date() + timedelta(days=1) }}
     - action: input_select.select_option
       metadata: {}
       data:
         option: "{{states('input_select.liste_type_filtre_eau_cuve_1_nouveau')}}"
       target:
         entity_id: input_select.liste_type_filtre_eau_cuve_1_courant
     - action: input_button.press
       target:
         entity_id: input_button.sensor_date_filtre_eau_cuve_1
       data: {}
     - action: input_number.set_value
       target:
         entity_id: input_number.volume_changement_filtre_cuve_1_litre
       data:
         value: "{{ states('sensor.volume_cuve_litre') }}"
 - if:
     - condition: and
       conditions:
         - condition: not
           conditions:
             - condition: state
               entity_id: input_select.liste_type_filtre_eau_cuve_2_nouveau
               state: Pas de changement de filtre
         - condition: state
           entity_id: input_select.liste_type_filtre_eau_cuve_1_nouveau
           state: Pas de changement de filtre
   then:
     - action: calendar.create_event
       target:
         entity_id: calendar.filtres_eau
       data:
         summary: Changement filtre cuve
         description: >-
           Deuxième filtration - Le {{
           states('input_select.liste_type_filtre_eau_cuve_2_courant') }} a
           duré {{ (now() -
           states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
           }} jours/{{ (states('sensor.volume_cuve_litre') | int) -
           (states('input_number.volume_changement_filtre_cuve_2_litre') | int)
           }} Litres
         start_date: |
           {{ now().date() }}
         end_date: |
           {{ now().date() + timedelta(days=1) }}
     - action: input_select.select_option
       metadata: {}
       data:
         option: "{{states('input_select.liste_type_filtre_eau_cuve_2_nouveau')}}"
       target:
         entity_id: input_select.liste_type_filtre_eau_cuve_2_courant
     - action: input_button.press
       target:
         entity_id: input_button.sensor_date_filtre_eau_cuve_2
       data: {}
     - action: input_number.set_value
       target:
         entity_id: input_number.volume_changement_filtre_cuve_2_litre
       data:
         value: "{{ states('sensor.volume_cuve_litre') }}"
description: Creer une entrée agenda pour le changement des filtre eau de Cuve 1 et 2
icon: mdi:calendar-check-outline

Le code de la tuile concernée (ici double étage de filtration toujours)
Code :
         - type: custom:mushroom-template-card
           icon: mdi:air-filter
           icon_color: blue
           name: Filtre changé ?
           layout: vertical
           primary: Etat filtres eau de cuve
           tap_action:
             action: fire-dom-event
             browser_mod:
               service: browser_mod.popup
               data:
                 title: Changement des filtres d'eau de cuve
                 content:
                   type: custom:vertical-stack-in-card
                   cards:
                     - type: horizontal-stack
                       cards:
                         - type: vertical-stack
                           cards:
                             - type: custom:mushroom-title-card
                               title: null
                               subtitle: >-
                                 Choisir les types de filtres qui seront
                                 utilisés pour le remplacement puis valider.
                               card_mod:
                                 style: |
                                   ha-card {
                                     margin-left: 30px;
                                     margin-right: 30px;
                                   }
                             - type: custom:mushroom-select-card
                               entity: >-
                                 input_select.liste_type_filtre_eau_cuve_1_nouveau
                               name: >-
                                 Type de filtre qui sera installé en première
                                 filtration ?
                               secondary_info: none
                               card_mod:
                                 style: |
                                   ha-card {
                                     margin-left: 30px;
                                     margin-right: 30px;
                                   }
                             - type: custom:mushroom-select-card
                               entity: >-
                                 input_select.liste_type_filtre_eau_cuve_2_nouveau
                               name: >-
                                 Type de filtre qui sera installé en seconde
                                 filtration ?
                               secondary_info: none
                               card_mod:
                                 style: |
                                   ha-card {
                                     margin-left: 30px;
                                     margin-right: 30px;
                                   }
                             - type: horizontal-stack
                               cards:
                                 - type: custom:gap-card
                                 - type: custom:mushroom-template-card
                                   icon: mdi:tooltip-check-outline
                                   primary: Valider
                                   fill_container: false
                                   icon_color: green
                                   tap_action:
                                     action: call-service
                                     confirmation:
                                       text: >-
                                         Valider le changement du/des filtre(s)
                                         d'eau de cuve maintenant ?
                                     service: script.set_change_filtres_cuve1_2
                                   card_mod:
                                     style:
                                       .: |
                                         ha-card {
                                           margin-top: 30px;
                                           margin-bottom: 30px;
                                         }
                                 - type: custom:gap-card
           secondary: "{% if ((now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days > 180) and ((now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days > 180) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre à changer !\n{% elif ((now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days > 180) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre 1 à changer !\n{% elif ((now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days > 180) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre 2 à changer !\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 10000 ) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 10000 ) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre à changer !\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 10000 ) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre 1 à changer !\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 10000 ) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Filtre 2 à changer !\n{% elif ((((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 8000))) or ((((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 8000))) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Changement Filtres à prévoir\n{% elif (((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 8000)) %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\n  Vie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³\n  Changement Filtre 1 à prévoir\n{% elif (((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 8000)) %}\t\t\t\t\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\nVie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³ Changement Filtre 2 à prévoir     {% else %}\n  Vie filtre 1 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int)) / 1000) }} m³\nVie filtre 2 : {{ (now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days }} jour(s) / {{ '%0.2f' | format(((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int)) / 1000) }} m³ {% endif %}\n"
           badge_icon: >
             {% if ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
             > 180) and ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
             > 180) %}
               mdi:alert
             {% elif ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
             > 180) %}
               mdi:alert
             {% elif ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
             > 180) %}
               mdi:alert
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 10000 ) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 10000 ) %}
               mdi:alert
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 10000 ) %}
               mdi:alert
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 10000 ) %}
               mdi:alert
             {% elif ((((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 8000))) or ((((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 8000))) %}
               mdi:information-symbol
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 8000)) %}
               mdi:information-symbol
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 8000)) %}
               mdi:information-symbol
             {% endif %}
           badge_color: >
             {% if ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
             > 180) and ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
             > 180) %}
               red
             {% elif ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
             > 180) %}
               red
             {% elif ((now() -
             states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
             > 180) %}
               red
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 10000 ) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 10000 ) %}
               red
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 10000 ) %}
               red
             {% elif ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 10000 ) %}
               red
             {% elif ((((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 8000))) or ((((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 8000))) %}
               amber
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_1_litre') |
             int) > 8000)) %}
               amber
             {% elif (((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) < 10000) and ((states('sensor.volume_cuve_litre') | int) -
             (states('input_number.volume_changement_filtre_cuve_2_litre') |
             int) > 8000)) %}
               amber
             {% endif %}
           multiline_secondary: true
           card_mod:
             style:
               .: >
                 {% if ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
                 > 180) and ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
                 > 180) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
                 > 180) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
                 > 180) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 10000 ) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 10000 ) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 10000 ) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 10000 ) %}

                 ha-card {
                   animation: ping 1s infinite;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     70% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }                  

                 {% else %}
                   
                 ha-card {
                   padding-bottom: 15px !important;
                 }  

                 {% endif %}
               mushroom-badge-icon$: >
                 {% if ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
                 > 180) and ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
                 > 180) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days
                 > 180) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((now() -
                 states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days
                 > 180) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 10000 ) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 10000 ) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 10000 ) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 10000 ) %}

                 .badge {
                   animation: ping 1s infinite;
                   --badge-icon-size: 22px;
                   --badge-size: 30px;
                 }

                 @keyframes ping {
                     0% {box-shadow: 0 0 0 0 rgba(var(--rgb-red), 0.7);}
                     50% {box-shadow: 0 0 0 10px transparent;}
                     100% {box-shadow: 0 0 0 0 transparent;}
                 }

                 {% elif ((((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) < 10000) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 8000))) or ((((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) < 10000) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 8000))) %}

                 .badge {
                   --badge-icon-size: 40px;
                   --badge-size: 30px;

                 {% elif (((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) < 10000) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_1_litre')
                 | int) > 8000)) %}

                 .badge {
                   --badge-icon-size: 40px;
                   --badge-size: 30px;

                 {% elif (((states('sensor.volume_cuve_litre') | int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) < 10000) and ((states('sensor.volume_cuve_litre') |
                 int) -
                 (states('input_number.volume_changement_filtre_cuve_2_litre')
                 | int) > 8000)) %}

                 .badge {
                   --badge-icon-size: 40px;
                   --badge-size: 30px;

                 {% endif %}
               mushroom-shape-icon$: |
                 .shape {
                   --icon-symbol-size: 40px;
                   --icon-size: 60px;
                 }
               mushroom-state-info$: "{% if ((now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days > 180) and ((now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days > 180) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((now() - states('input_button.sensor_date_filtre_eau_cuve_1')|as_datetime).days > 180) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((now() - states('input_button.sensor_date_filtre_eau_cuve_2')|as_datetime).days > 180) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 10000 ) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 10000 ) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 10000 ) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 10000 ) %}\n.container {\n  --card-secondary-color: red;\n}\n{% elif ((((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 8000))) or ((((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 8000))) %}\n.container {\n  --card-secondary-color: orange;\n}\n{% elif (((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_1_litre') | int) > 8000)) %}\n.container {\n  --card-secondary-color: orange;\n}\n{% elif (((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) < 10000) and ((states('sensor.volume_cuve_litre') | int) - (states('input_number.volume_changement_filtre_cuve_2_litre') | int) > 8000)) %}\t\t\t\t\n.container {\n  --card-secondary-color: orange;\n}\n{% endif %}\n"
Répondre
Une vidéo Youtube de novembre sur l'usage des nouvelles sections dans HA.

A voir
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)