Présentation + [Mon Dashboard] BBE

Bonjour à tous.

Je me rend compte que je n’ avais pas encore fait ma présentation alors que je suis sur le forum depuis un certain temps…

Vu que mon dashboard commence à ressembler à quelque chose et à être assez stable, je ferai ainsi d’une pierre deux coups…

Installés à proximité de Toulouse, nous sommes dans une maison, avec Madame et nos 3 enfants (2010, 2012 et 2015). Maison classique avec quelques volets Somfy RTS, du chauffage électrique avec fil pilote, une clim chaud/froid à l’étage et un tarif Tempo.
La domotique m’intéresse depuis longtemps, mais je n’avais jamais franchi le pas.

Note: je vous ai mis beaucoup de balises afin que ce soit plus lisible, n’hésitez pas à cliquer sur les triangles pour afficher tout le contenu.

Les débuts depuis 2021

Nous avons progressé tout doucement et par étapes.
D’abord avec une Amazon Echo (gen4) pour Noël 2021 qui nous a permis grace à son HUB Zigbee de brancher quelques équipements zigbee achetés pour voir (prise pilotées et smart light), et des réaliser les premières automatisations (des routines dans le langage Alexa).
Une box TostCorp début 2022 a rejoint la maison et nous a permis de prendre le contrôle des volets Somfy RTS à la voix avec Alexa (mode easy, fourni par Tostcorp, plug & play via un skill) et de jouer avec des automatisations.
Ceci a conquis rapidement le reste de la famille ! Et m’a permis de comprendre que la voix serait la principale interface de notre domotique vu la facilité et l’accessibilité à tous…

En octobre 2022, un collègue utilisateur de home assistant me prête un RasberryPi 3 pour démarrer. Premières tentatives avec HAOS, premières difficultés, recherches sur le net et la découverte du forum. Et là c’est le drame, l’escalade, et les soirées passées sur le forum pour comprendre, améliorer, étendre cette solution domotique… Bref la boule de neige a alors très rapidement grossi, avec de plus en plus de modules, d’intégrations, d’automations, etc… Puis quelques plantages répétitif du Pi3 (qui devenait un peu juste) l’ont poussé vers la sortie, remplacé par un miniPC…
Bref sur Home assistant depuis 2022, le virus est pris, et le principal challenge c’est de trouver le bon équilibre avec la famille…

Quelques lignes directrices

Nous avons essayé (à quelques exceptions près) de réduire notre dépendance au cloud (mais nous ne sommes qu’à 50% local) et de respecter les principes suivants:

  • Tous les automatismes sont dé-connectables et surpassables (même si je ne suis pas là).
  • Tout ce qui est contrôlable par la domotique doit rester contrôlable aussi sans réseau (même si passage par le cloud, par exemple Mel Cloud, Echo)
  • Tout ce qui est contrôlable par la domotique doit aussi rester contrôlable si HA ou Z2M est cassé.
  • Tout ce qui est allumé automatiquement devra aussi être éteint automatiquement

Si on fait un bilan mi 2024, Nous avons l’installation domotique suivante:

Le matériel :

Matériel
  • HAOS hébergé sur un minipc lenovo reconditionné (MiniPC LENOVO, core i3 gen4 (4130T) 4GB de RAM et SSD 250Go, récit de l’installation ici : migration Rpi → miniPC )
  • Clef Zigbee USB Sonoff (model P)
  • Un certain nombre de devices Zigbee:
    • Zlinky de lixee pour récupérer la téléinfo du Linky (indispensable en Tempo)
    • prises connectées (Sonoff, Ikea, leroy merlin, frient)
    • smartlights (ampoules ikea, ruban led ikea et lidl)
    • modules Zigbee Sonoff ZBMINI-L sans neutre
    • quelques capteurs de mouvement (sonoff, lidl)
    • quelques capteurs de porte (sonoff)
    • quelques « télécommandes » (ikea: tradfri on/off et Rodret)
    • un module pour le seul volet roulant filaire
  • Un « Echo-système » d’amazon echo (1 Echo (gen4) et 5 Echo dot (gen3, gen4 et gen5) répartis un peu partout), qui servent d’enceinte pour la musique, pour des notifications, de capteur de présence, etc. Voir plus bas le bilan sur Alexa pour le détail…
  • Une Tost Box pour gérer les volets RTS (passé en mode « expert » avec le MQTT de HAOS depuis le passage à HA)
  • Un boitier wifi Mitsubishi pour avoir le contrôle de la PAC via MELCloud et l’intégration associée
  • Un BLE proxy sur base d’ESP32
  • Un capteur Miflora pour une plante
  • Une vielle tablette android qui fait dashboard dans le bureau grace à l’appli android wallpanel - remplacée cet été par deux vieux smartphones androids qui dormaient dans un placard, suite à la mort de la tablette (2014 tout de même…). A noter, grace à l’appli wallpanel, les smartphones servent de camera IP et remontent quelques info (detection de mouvement, luminosité, etc…).

Le logiciel:
Home assistant installé en HAOS « pur » ou « bare-metal » et plein d’intégration qui n’étaient pas toutes prévues mais certaines se sont rajoutées car disponibles dans HA et connectables simplement sans matériel supplémentaire.

Intégrations
  • MELCloud pour la clim
  • Meteo France
  • la prise en compte des brosse à dent OralB
  • la Gestion du Roomba
Modules complémentaires HA
  • Mosquitto
  • Zigbee2MQTT
  • googleDrive backup
  • Let’sEncrypt
  • ESPHome
HACS
Automatisations

Nous avons mis en place progressivement un nombre toujours plus grand d’automatisations voir quelques post ci-dessous pour les explications et le code
Les principales étant:

  • Gestion de la PAC en mode clim ou chauffage, fonction de l’heure et du tarif (tempo)
  • Gestion auto des volets (finalement désactivé, Madame n’aime pas…)
  • notification de fin de lave-linge et sèche-linge via des prises connectées avec mesure de conso.
  • gestion des lumières:
    • extinction automatique en cas d’absence prolongée dans une piece
    • allumage automatique (par présence ou par géolocalisation) la nuit
    • gestion des télécommandes ikea par blueprint (pour avoir double appui et appui long => jusqu’à 6 possibilités avec une télécommande à 10€)
    • mode éclairage adaptatif sur les lumières le permettant (smart bulb et rubans led)
    • quelques gadgets pour les enfants (mode discothèque du ruban led, utilisation du ruban pour des notifications etc…)
  • Un certain nombre de notifications vers les téléphones (pronote, lave-linge, sèche-linge, tarif EDF, état du système, surveillance conso d’eau, oubli lumières, surveillance crues etc…)

Les interfaces :
L’audio:
Chez nous la principale interface avec la domotique ce sont les Amazon Echo disposées un peu partout. Voir plus bas le bilan sur Alexa pour le détail… Elles sont utilisées à la fois:

  • pour le contrôle vocal:
    On peut contrôler à la voix les principaux éléments de la domotique (lumières, volets, interrupteurs) mais aussi faire des choses beaucoup plus élaborées car on peu lancer n’importe quel script.

  • pour les notifications:
    On peut faire dire ce que l’on veut à n’importe quelle amazon echo (seule ou en groupe) y compris les faire chuchoter la nuit pour ne pas réveiller toute la maison si la lessive est terminée…

Le dashboard:
Affiché sur les appli companion et sur la tablette en mode wallpanel dans le bureau.
Dashboard, dont je suis finalement le principal utilisateur car la plupart des informations vraiment utiles arrivent via des notifications, et les contrôles sont le plus souvent fait à la voix.
Notre dashboard est très sobre (certains le trouveront trop sobre).
Nous avions une même base de cartes mushroom, déclinée en 2 colonnes et 4 colonnes, l’un pour un affichage plutôt dédié smartphone et l’autre plutôt dédié tablette ou PC, accessibles dans le bandeau supérieur (pas de détection automatique).

La version basée sur les sections est en service actif depuis peu

La vue Smartphone:

La vue Tablette / PC:

Le dashboard, surtout pour des raisons de maintenabilité, évoluera probablement vers des cartes Tiles si celles ci permettent les mêmes personnalisations à terme que les mushroom…

Les postes ci dessous décrivent plus en détail certains aspects:

16 « J'aime »

La « room card » mushroom.

Le dashboard est basé depuis le tout début sur les cartes mushroom que j’apprécie pour leur facilité, leur look et leur possibilité de personnalisation.
Cette collection de cartes m’a permis de démarrer un dashboard simple mais que je trouvais joli, puis de le modifier progressivement vers des choses de plus en plus personnalisées, mais « en douceur ». J’en profite pour faire un grand merci à @piitaya pour cette famille de cartes magnifique et qui permettent de se faire un superbe dashboard très simplement.

Cependant, même si les cartes mushroom sont géniales, j’ai eu finalement besoin d’une carte de synthèse pour compacter un peu le dashboard, je vous la présente avec l’exemple de la carte de synthèse du salon:
image

La « room card » mushroom est faite de la façon suivante: il s’agit de la fusion (stack in) d’une carte mushroom template et d’une ligne de 4 mushroom chips.

Fonctions détaillées

Ci dessous la description détaillée de la carte salon. On s’appuie entièrement sur les possibilités offertes par la carte mushroom template et les quatre mushroom chips.

Avec la carte mushroom template (partie haute de la carte) :

  • L’icône de la carte template (canapé) : sa couleur dépend de l’état des lumières dans la pièce
  • Le titre (est fixe mais il pourrait être dynamique puisque c’est une carte template).
  • L’info secondaire (affiche via un template la température dans la pièce)
  • le badge de l’icône permet d’afficher l’état des détecteurs de mouvements (couleur et icone)
  • L’appui court sur l’icône du canapé (en fait sur toute la carte en dehors des chips…) est un raccourci menant à une sous vue dédiée au salon.
  • L’appui long sur l’icône du canapé (en fait sur toute la carte…) fait basculer (toggle) le group « light » de la pièce

La ligne de « chips » permet d’afficher des boutons supplémentaires (partie basse de la carte) :

  • L’appui court sur l’icône d’ampoule ouvre un pop-up avec toutes les lumières de la pièce
  • L’appui long sur l’icône d’ampoule fait basculer (toggle) la lumière principale de la pièce
  • L’appui court sur l’icône de volet ouvre un pop-up avec tous les volets de la pièce
  • L’appui long sur l’icône de volets fait basculer (toggle) le groupe des volets de la pièce
  • L’appui court sur l’icône media ouvre un pop-up avec un mini mediaplayer avec tous les raccourcis qui vont bien pour gérer l’amazon echo de la pièce et les raccourcis pour envoyer certains types de musique en multiroom
  • L’appui court sur l’icône de fleur ouvre un pop-up avec toutes les info du capteur miflora

Je n’ai pas joué avec les double clics (sauf une ou deux exception uniquement pour moi pour appeler des sous-vues très spécifiques), mais ils sont bien entendu disponibles sur la carte (via la carte mushroom template) et sur les mini icônes (via les mushroom chips)…

Pop Ups

La carte fait usage de pop up pour chaque appui court sur les chips (les doubles appui ou appui long permettent un usage rapide, ou des raccourcis spécifiques, voir fonctionnalités détaillées ci dessus):

Sur la lumière :

Sur les volets:

Sur le player:

Et même sur la plante :

L’élaboration de cette room-card est décrite en détail ici:
>>> présentation de la room-card et Tuto <<<
N’hésitez surtout pas à vous en inspirer…

Les pop up et infos des « room-cards »

Au delà des pop up génériques (Lumière, Volets et Media player) et des infos (température et présence) de la vue salon, que l’on retrouve sur beaucoup de cartes, il y en a quelques autres qui sont intéressants sur les autres cartes:

Détail des autres pop-ups et info

Carte escalier:
image

pop up PAC

le clic sur la flamme (icône et couleur fonction du mode de la PAC, ici OFF) affiche un pop up qui permet d’activer désactiver les modes auto de la PAC (été ou hiver) et de régler le thermostat si nécessaire.

pop up Roomba

Le clic sur l’icône de l’aspi (couleur et icône dépendant du mode) affiche une carte mushroom « vacuum » et des raccourcis pour lancer le nettoyage dans chaque pièce:
image

Carte cellier:
image

Les chips sont ici utilisés pour l’affichage des machines et sèche linge en cours et l’état de la porte entre le cellier et le garage, les appuis long sur les machines permettent de remettre à zero les alertes machine à vider.

Carte enfants:
image
image

affichage de l’heure de début des cours, aujourd’hui et demain, et d’un /!\ si modif d’agenda sur le jour considéré pour les collégiens avec Pronote, de l’heure de réveil programmé sur Alexa pour la non collégienne.

pop up oral B

Le clic sur le petit Numéro 1 (compteur de brossage de dent) affiche les infos de la brosse à dent
image

Carte bureau:
image

pop up imprimante

Le clic sur la petite goutte affiche les infos de l’imprimante avec des cartes mushroom entity

Carte Suite parentale:
image
Affiche les info de la salle de bain et de notre chambre

pop up brossage des dents

Le clic sur la petite brosse à dent (orange car le fiston ne s’est pas lavé les dents ce matin…) affiche les infos des brosses à dent OralB via des cartes mushroom template

Carte Jardin
image

pop up météo

Le clic sur l’icône météo affiche la météo:

pop up crues

Le clic sur l’icône vague (couleur fonction du niveau de menace) affiche les infos de la station du cour d’eau proche grace à ce tuto - suivi des cours d’eau et les infos de VigieCrue grace à ce post: Récupérer le niveau d’alerte VigiCrue
image

pop up pollens

Le clic sur l’icône fleur (couleur fonction du niveau de menace) affiche les pollens (avec une carte automatique) et les info générales et des allergènes intéressant la famille tirés de l’intégration pollens:
image

Carte Home Assistant
image

Affichage de la perfo du Mini PC.
Icône colorée et badge vert si update HA core, HA os ou HACS disponible

pop up Elec

Le clic sur l’icône eclair (qui varie en fonction du tarif TEMPO, ici jour Blanc) donne plus d’info sur l’état de l’Elec:
image

pop up Sécurité

Le clic sur l’icône pouce vert (ou détecteur de présence rouge suivant les cas) ouvre un pop up dédié aux détections de présence et ouvertures de porte::

pop up piles

Le clic sur l’icône pile affiche la liste des batteries des senseurs domotiques à pile (avec le type de pile dans le friendly name) trouvée iciCarte automatique pour le suivi des batteries:

Les sous vues:

Les simple-clics sur les cartes « rooms » amènent vers des sous vues spécifiques. Si celle des pièces (un simple listing de toutes les entités présentes a base de cartes mushroom) sont de moins en moins utilisées au fur et à mesure de la généralisation des pop-ups, les vues spécifiques sont elles plus souvent utilisées, les voici toutes:

Détail des sous-vues

Vue pièce:
Simple listing des entités présentes dans la piece avec des cartes mushroom « simples »:

Exemple avec encore le salon

Vue salon :

Vue Météo:

le clic sur la chip Météo emmène vers une vue spécifique

Chip météo dans le dashboard:
image
Vue météo:

Vue Carte:

le clic long sur une chip personne emmène vers une vue carte spécifique

Chips « personnes » dans le dashboard:
image
Vue carte:

Vue Lumières:
:warning: en chantier Encore en projet…

le clic sur la carte Lumières emmène vers une vue spécifique

carte lumière (mushroom template) :
image
nouvelle version:
image
Vue lumière contenant toutes les lumières (mushroom light et mushroom template suivant les cas):

Vue Volets:

le clic sur la carte Volets emmène vers une vue spécifique

carte volets (mushroom template) :
image
nouvelle version:
image

Vue volet contenant tous les volets (mushroom chips, mushroom cover et mushroom template):

Vue Sécurité:

le clic sur la carte secu emmène vers une vue spécifique

Carte sécurité (mushroom template):
image
ou icone « sécu » sur la carte HA:
image

Vue sécurité contenant les présences, tous les capteurs de porte et les détecteur de mouvement/présence (mushroom chips, mushroom person et mushroom entity):

Vue EDF:

le clic sur la carte EDF ou clic long sur la carte home assistant emmène vers une vue spécifique

carte edf (mushroom template):
image
carte home assistant (room card)
image
Vues EDF (mushroom entity, mushroom template et cartes energy):

Vue Home Assistant:

le clic sur la carte HA emmène vers une vue spécifique

carte HA (mushroom room card):
image

Vue système avec les info de mise à jour HA, la dispo de certains équipement, les cartes auto pour le niveau des piles des équipements domotiques et les niveau de reception BLE :

Nouvelle version avec la MaJ de la partie « mises à jour » suite au passage en HACS v2.0:

carte mises à jour:

Il y a une carte avec une vue de synthèse qui affiche le nb de mises à jour et, avec auto entities, l’ensemble des mises à jour à faire (tout en vrac du coup, je n’ai fait aucun tri entre HA, HACS, modules complémentaires etc…).

Le nombre de mise à jour est calculé dans un petit sensor template: sensor.available_updates :

ici sans MaJ:
image

avec 1 MaJ:
image

Ici avec 2 MaJ:
image

(J’ai au passage supprimé les deux cartes mushroom qui traitaient des updates HA OS et HA core, puisqu’ils seront désormais dans cette liste avec les autres updates…)

le code de la carte:

Bien sur il faut avoir vertical-stack-in-card, mushroom et auto-entities

type: custom:vertical-stack-in-card
cards:
  - type: custom:mushroom-template-card
    primary: Software et modules
    secondary: |2-
        {% if is_state(entity, '0') %} 
          Tout est à jour
        {% elif is_state(entity, '1') %} 
          1 mise à jour
        {% else %}
          {{ states(entity)}} mises à jour
        {% endif %}
    icon: mdi:home-assistant
    entity: sensor.available_updates
    icon_color: |2-
        {% if is_state(entity, '0') %} 
          light-blue
        {% else %}
          orange
        {% endif %}
  - type: custom:auto-entities
    card:
      type: custom:vertical-stack-in-card
    card_param: cards
    filter:
      include:
        - entity_id: update.*
          state: 'on'
          options:
            type: custom:mushroom-template-card
            primary: '{{ state_attr(entity,''friendly_name'')}}'
            secondary: >-
              instalé: {{ state_attr(entity,'installed_version')}} | dernier: {{
              state_attr(entity,'latest_version')}}
            icon: |-
              {% if is_state(entity, 'on') %} 
                mdi:upload-box
              {% else %}
                mdi:thumb-up
              {% endif %}
            icon_color: |-
              {% if is_state(entity, 'on') %} 
                orange
              {% else %}
                green
              {% endif %}
            layout: horizontal
            tap_action:
              action: more-info
            hold_action:
              action: more-info
            double_tap_action:
              action: more-info
      exclude: null
    sort:
      method: state
      reverse: true

  • Et lorsqu’on clique sur une des cartes des soft à mettre à jour, ça ouvre le « more info » de l’entité update:

Celui ci contient les details, le lien vers le changelog et les boutons ignorer / installer…


image

Et lorsqu’on clique sur le contenu des versions, on ouvre une nouvelle page de navigateur.

Vue Enfant (collège): :warning: en chantier
Encore en projet, à peaufiner suite à l’installation de l’intégration pronote…

le clic sur la carte pitchoun emmène vers une vue spécifique

la carte pitchoom (« mushroom room card » voir post au dessus) :
image
La vue « pièce » des chambres des enfants avec les equipements de leur chambre plus quelques infos issues de pronote (partie encore en élaboration):

Vue Pronote: :warning: en chantier
Encore en projet, à peaufiner suite à l’installation de l’intégration pronote…

le clic sur la carte pronote de la vue pitchoun emmène vers une vue spécifique

la carte pronote de la sous-vue pièce enfant (mushroom template):


La sous vue pronote d’un des collégiens avec un lien vers la sous vue de l’autre, et des cartes pour visualiser les principales info pronote (agenda, notes, moyennes, devoirs, évaluations, absences, retards, etc…):

Page de synthese pronote: :warning: en chantier
accessible depuis les notifications du smartphone (voir ci dessous les automatisations) et par double clic sur la carte « pitchoun », elle est en passe de devenir la vue « principale » quand je trouve le temps de me remettre à l’architecture des sous vues…

clic depuis la notif vers synthese

le double clic sur la carte pitchoom (« mushroom room card » voir post au dessus) :
image
ou le clic sur la notification encas de nouvelle note, amène sur la carte « synthèse » pronote contenant une carte mushroom template de synthèse et des cartes pronote avec les notes:

Un clic sur la carte mushroom de synthèse ramène sur la carte pronote complète de l’enfant montrée juste avant…

6 « J'aime »

Quelques automatisations

Note: La plupart du temps (sauf rares exceptions) je continue à générer plusieurs automatisations pour un même sujet plutôt que de les regrouper dans une seule avec un choose sur les triggers.

Il y a quelques conséquences:

Il serait tout à fait possible dans les exemples qui vont suivre de regrouper plusieurs automatisations en une en renommant les triggers et en utilisant un choose. Je ne l’ai pas fait afin d’avoir des automatisations plus simples, mais avec l’inconvenient de ne pas tout avoir dans la même automatisation pour chaque sujet.
Je fais alors attention au nommage afin que mes automations restent ensemble dans la longue liste. J’utilise la nomenclature suivante: Sujet - Piece - Automatisation ou Sujet - Automatisation. ce qui me permet de grouper toutes mes automatisations par Sujets (Lumières, Machines, PAC, Pronote, Surveillance, Tempo, Ventilation, Volets, etc…) puis par Pièce ou par thème.

L’arrivée des labels et des catégories avec la MaJ 2024.4 me conforte dans mon choix, il est devenu très simple de grouper les automatisations pour s’y retrouver…

Gestion de lumières avec détecteur:

Description:

Un exemple d’automatisme pour gérer les lumières de l’escalier avec un détecteur de mouvement, tout en laissant un contrôle manuel.
J’utilise 4 automatisations et un timer (mais la 4ème automatisation est facultative).
Ca peut paraitre compliqué, mais une fois mis en place on n’y touche plus… et la complexité initiale s’oublie…
Le but est de pouvoir fonctionner à la fois en automatique ET en manuel:

  • On doit pouvoir allumer la lumière et l’éteindre manuellement sans que l’automatisme ne vienne gêner (sauf la la 4eme automatisation, qui est une « sécurité », qui éteint s’il n’y a pas de détection depuis 15min).
  • l’automatisme doit allumer la lumière s’il y a une présence, et l’éteindre au bout de 5 minutes en cas d’absence), sans éteindre si quelqu’un est là…
  • les deux doivent être indépendants: l’automatisme ne doit pas éteindre une lumière allumée manuellement, mais on peut éteindre manuellement une lumière allumée par l’automatisme.
  • Pour pouvoir faire ça il me fallait savoir si l’allumage de la lampe a été fait en automatique ou en manuel. Avec des smart light, on peut utiliser une astuce: l’automatisme allume à une puissance fixe (par ex 90%) et on teste l’état de la lampe pour savoir si elle est a 100% ou 90% pour savoir « qui » l’a allumée. Mais ça ne marchait pas pour les micro modules on/off… J’utilise donc un test sur l’état du timer qui me sert de booléen pour savoir si l’allumage a été automatique ou non.
    Tout ceci bien sur suite à d’excellentes suggestions sur le forum comme d’habitude!
Allumage sur détection

En cas de détection dans la bonne plage horaire:

  • si les lampes sont éteintes => on lance le timer et on allume les lampes
  • sinon:
  • si le timer est actif (l’allumage était automatique) => on relance le timer (pour éclairer plus longtemps puisqu’il y a toujours du monde)
  • sinon => on ne fait rien (l’allumage était manuel, on ne lance pas le timer, on ne touche à rien)
alias: Lumières - Escalier - allumage automatique
description: >-
  lorsqu'un mouvement est détecté entre 20h30 et 7h15, l'escalier s'allume
  progressivement jusqu'à 20%, et on (re)lance un timer de 5min
trigger:
  - type: motion
    platform: device
    device_id: 7d6027b34d3c07135a9d64de7b41074e
    entity_id: binary_sensor.0x00124b00246e9df7_occupancy
    domain: binary_sensor
condition:
  - condition: time
    after: "20:30:00"
    before: "07:15:00"
action:
  - if:
      - condition: state
        entity_id: light.0x385b44fffe20eb24
        state: "off"
      - condition: state
        entity_id: light.0x84b4dbfffec93621
        state: "off"
    then:
      - service: timer.start
        data: {}
        target:
          entity_id: timer.alumage_escalier
      - service: light.turn_on
        data: {}
        target:
          entity_id:
            - light.0x84b4dbfffec93621
            - light.0x385b44fffe20eb24
    else: []
  - if:
      - condition: state
        entity_id: timer.alumage_escalier
        state: active
    then:
      - service: timer.start
        data: {}
        target:
          entity_id: timer.alumage_escalier
mode: single
Gestion du Timer - cas de l'extinction manuelle

Si on éteint manuellement les lampes, il faut penser à arrêter le timer (sinon le « mode auto » reste enclenché…

alias: Lumières - Escalier - gestion timer
description: annule le timer quand la lumière est off
trigger:
  - platform: state
    entity_id:
      - light.0x385b44fffe20eb24
    to: "off"
  - platform: state
    entity_id:
      - light.0x84b4dbfffec93621
    to: "off"
condition: []
action:
  - service: timer.cancel
    data: {}
    target:
      entity_id: timer.alumage_escalier
mode: single
Extinction automatique par le Timer

Quand le timer s’arrête, on éteint les lampes (sauf s’il y a toujours une présence, auquel cas on relance le timer).

alias: Lumières - Escalier - extinction auto timer
description: >-
  extinction auto de l'escalier à la fin du timer si inoccupé
trigger:
  - platform: event
    event_type: timer.finished
    event_data:
      entity_id: timer.alumage_escalier
condition: []
action:
  - if:
      - condition: state
        entity_id: binary_sensor.0x00124b00246e9df7_occupancy
        state: "on"
    then:
      - service: timer.start
        data: {}
        target:
          entity_id: timer.alumage_escalier
    else:
      - type: turn_off
        device_id: 018e42fdc39d185cce19b42e99393c11
        entity_id: light.0x84b4dbfffec93621
        domain: light
      - type: turn_off
        device_id: aa09ecec8161b872f6cde279c5aae1eb
        entity_id: light.0x385b44fffe20eb24
        domain: light
mode: single
Extinction automatique si pas de mouvement 15min

Dans tous les cas (mais normalement ça ne peut se produire qu’en mode manuel car le timer est <5min) lorsqu’il n’y a pas de présence durant 15min, on éteint les lampes.

alias: Lumières - Escalier - extinction auto inoccupé
description: >-
  extinction auto de l'escalier en absence de mouvement 15min si allumé
trigger:
  - platform: state
    entity_id:
      - binary_sensor.0x00124b00246e9df7_occupancy
    to: "off"
    for:
      hours: 0
      minutes: 15
      seconds: 0
condition:
  - condition: or
    conditions:
      - condition: state
        entity_id: light.0x385b44fffe20eb24
        state: "on"
      - condition: state
        entity_id: light.0x84b4dbfffec93621
        state: "on"
action:
  - type: turn_off
    device_id: 018e42fdc39d185cce19b42e99393c11
    entity_id: light.0x84b4dbfffec93621
    domain: light
  - type: turn_off
    device_id: aa09ecec8161b872f6cde279c5aae1eb
    entity_id: light.0x385b44fffe20eb24
    domain: light
mode: single

Gestion du tarif Tempo:

Description:

Nous avons un tarif EDF Tempo qui nécessite d’adapter notre consommation en jours rouge. Ceci implique en particulier de mettre en place des détections de tarif. Nous récupérons les infos de la téléinfo grace à un module Zlinky de Lixee. A partir de là quelques automatisations très basiques sont assez utiles:

Gestion d'un booléen tarif rouge

Ce booléen est plus pratique à utiliser dans les automatisations et le dashboard que des tests sur le tarif en cours. En outre, on peut en modifiant uniquement cette automatisation changer le niveau de tarif dans lequel on veut réduire la consommation pour toutes les automatisations, notifications et le dashboard.

alias: TEMPO - Gestion booléen Tarif Rouge
description: |-
  Gestion du booléen "tarif rouge":
  - Active le booléen tarif rouge lors du passage HPJR
  - Désactive le booléen tarif rouge lorsque HPJR se termine
trigger:
  - platform: state
    entity_id:
      - sensor.0x00158d0005007002_current_tarif
    from: HPJR
    attribute: active_register_tier_delivered
    for:
      hours: 0
      minutes: 0
      seconds: 10
    id: fin
  - platform: state
    entity_id:
      - sensor.0x00158d0005007002_current_tarif
    attribute: active_register_tier_delivered
    for:
      hours: 0
      minutes: 0
      seconds: 10
    id: debut
    to: HPJR
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - fin
          - condition: state
            entity_id: input_boolean.tarif_rouge
            state: "on"
        sequence:
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.tarif_rouge
      - conditions:
          - condition: trigger
            id:
              - debut
        sequence:
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.tarif_rouge
mode: single
Gestion de la couleur du lendemain

On vient modifier à 20h05 et 6h un input text qui permettra d’afficher en clair la couleur du lendemain quand elle est disponible. Celui ci est alors dispo pour de l’affichage et pour des automatisations. eventuelles. Note, de 0h à 6h, l’info « demain » contient en fait l’info du prochain tarif du jour qui sera actif à 6h…

alias: TEMPO - Gestion couleur lendemain
description: Mise à jour de la couleur du lendemain à 20h05 et 6h00
trigger:
  - platform: time
    at: "20:05:00"
    id: set
  - platform: time
    at: "06:00:00"
    id: reset
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - set
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: sensor.0x00158d0005007002_tomorrow_color
                    state: BLAN
                sequence:
                  - service: input_text.set_value
                    data:
                      value: BLANC
                    target:
                      entity_id: input_text.couleur_demain
              - conditions:
                  - condition: state
                    entity_id: sensor.0x00158d0005007002_tomorrow_color
                    state: ROUG
                sequence:
                  - service: input_text.set_value
                    data:
                      value: ROUGE
                    target:
                      entity_id: input_text.couleur_demain
              - conditions:
                  - condition: state
                    entity_id: sensor.0x00158d0005007002_tomorrow_color
                    state: "----"
                sequence:
                  - service: input_text.set_value
                    data:
                      value: BLEU
                    target:
                      entity_id: input_text.couleur_demain
            default:
              - service: input_text.set_value
                data:
                  value: ERREUR
                target:
                  entity_id: input_text.couleur_demain
      - conditions:
          - condition: trigger
            id:
              - reset
        sequence:
          - service: input_text.set_value
            data:
              value: INCONNU
            target:
              entity_id: input_text.couleur_demain
mode: single

Notification si demain est un jour rouge

Basé sur l’input text présenté juste au dessus, un exemple de notification en cas de tarif rouge le lendemain (donc il faudra penser à rentrer du bois pour le poêle…).

alias: TEMPO - notification demain jour rouge
description: Les Alexas (Salon SdB Cuisine) annoncent que demain sera rouge vers 20h05
trigger:
  - platform: state
    entity_id:
      - input_text.couleur_demain
    to: ROUGE
    for:
      hours: 0
      minutes: 0
      seconds: 5
condition:
  - condition: time
    after: "19:30:00"
    before: "20:30:00"
action:
  - service: notify.alexa_media
    data:
      message: Attention ! Demain sera un jour rouge.
      target:
        - media_player.echo_dot_jeanne
        - media_player.echo_jeanne
        - media_player.jeanne_echo_dot
      data:
        type: tts
      title: Annonce jour rouge
mode: single

Gestion de la PAC:

Description:

C’est un gros morceau, et je m’appuie sur les ressources suivantes:

  • Des booléens:
    • Tarif rouge (voir ci dessus)
    • Mode auto et mode temporaire (pour activer ou désactiver l’automatisme depuis le dashboard)
    • Saison chauffage et saison climatisation (avec une petite automatisation pour ne jamais être dans les deux à la fois)
  • Deux shedulers: planning chauffage et planning climatisation, qui gèrent les plages de fonctionnement durant la semaine
  • Des input number pour les différentes températures cible (ce qui permet de les régler depuis un dashboard, sans avoir à ouvrir l’automatisation)
Gestion du mode été ou hiver

L’activation d’un mode désactive l’autre pour qu’on ne soit jamais dans les deux modes à la fois. On peut par contre n’être ni en clim, ni en chauffage en intersaison.

alias: PAC - gestion mode chauffage vers clim
description: desactive le chauffage lorsqu'on passe en mode clim
trigger:
  - platform: state
    entity_id:
      - input_boolean.saison_climatistion
    from: "off"
    to: "on"
condition: []
action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.saison_chauffage
mode: single

alias: PAC - gestion mode clim vers chauffage
description: desactive le mode clim lors du passage en mode chauffage
trigger:
  - platform: state
    entity_id:
      - input_boolean.saison_chauffage
    from: "off"
    to: "on"
condition: []
action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.saison_climatistion
mode: single

Gestion du mode temporaire

L’idée de ce mode est de basculer en manuel (donc désactiver la gestion automatique) mais seulement jusqu’au prochain changement d’état du scheduler qui permet alors de repasser en automatique. On peut ainsi couper le chauffage ou l’allumer temporairement pour palier aux défauts du scheduler (présence inhabituelle, télétravail occasionnel, etc…) sans repasser vraiment en manuel. Cette idée est reprise de notre Calybox de Deltadore qui offre la même fonction, à l’usage c’est redoutable d’efficacité !

alias: PAC - reset override temporaire hiver
description: Reset l'override temporaire au changement d'état du planning chauffage
trigger:
  - platform: state
    entity_id:
      - schedule.planning_chauffage
    from: "on"
    to: "off"
  - platform: state
    entity_id:
      - schedule.planning_chauffage
    from: "off"
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.saison_chauffage
    state: "on"
action:
  - service: homeassistant.turn_off
    data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
mode: single


alias: PAC - reset override temporaire été
description: Reset l'override temporaire au changement d'état du planning climatisation
trigger:
  - platform: state
    entity_id:
      - schedule.planning_climatisation
    from: "on"
    to: "off"
  - platform: state
    entity_id:
      - schedule.planning_climatisation
    from: "off"
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.saison_climatistion
    state: "on"
action:
  - service: homeassistant.turn_off
    data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
mode: single

Gestion auto chauffage

La grosse automatisation, qui vient tester toutes les 10 min l’état des booléens, et en fonction gère le chauffage.

alias: PAC - gestion auto chauffage
description: >-
  En saison de chauffage.

  En mode auto et sans override temporaire.

  => Chauffe à la temperature de consigne si planifié, sinon a la temperature
  réduite ou off. Si tarif rouge => PAC off.
trigger:
  - platform: time_pattern
    minutes: /10
  - platform: state
    entity_id:
      - input_boolean.chauffage_mode_auto
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.chauffage_mode_auto
    state: "on"
  - condition: state
    entity_id: input_boolean.saison_chauffage
    state: "on"
  - condition: state
    entity_id: input_boolean.pac_override_temporaire
    state: "off"
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.tarif_rouge
            state: "off"
        sequence:
          - choose:
              - conditions:
                  - condition: state
                    entity_id: schedule.planning_chauffage
                    state: "on"
                sequence:
                  - device_id: 5b89093e82e42fe555148e26a107faba
                    domain: climate
                    entity_id: fe8907573739d862acee9459abe1c731
                    type: set_hvac_mode
                    hvac_mode: heat
                  - service: climate.set_temperature
                    data:
                      temperature: "{{states('input_number.temperature_confort_hiver')|int}}"
                    target:
                      entity_id: climate.pac
              - conditions:
                  - condition: state
                    entity_id: schedule.planning_chauffage
                    state: "off"
                sequence:
                  - device_id: 5b89093e82e42fe555148e26a107faba
                    domain: climate
                    entity_id: fe8907573739d862acee9459abe1c731
                    type: set_hvac_mode
                    hvac_mode: "off"
      - conditions:
          - condition: state
            entity_id: input_boolean.tarif_rouge
            state: "on"
        sequence:
          - device_id: 5b89093e82e42fe555148e26a107faba
            domain: climate
            entity_id: climate.pac
            type: set_hvac_mode
            hvac_mode: "off"
mode: single

Gestion auto climatisation

La sœur jumelle pour l’été.

alias: PAC - Gestion auto climatisation
description: |
  En saison de climatisation . 
  Si mode auto et si pas d'override temporaire.
  => Climatise à la température de consigne si planifié, sinon PAC OFF.
trigger:
  - platform: time_pattern
    minutes: /10
  - platform: state
    entity_id:
      - input_boolean.chauffage_mode_auto
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.chauffage_mode_auto
    state: "on"
  - condition: state
    entity_id: input_boolean.saison_climatistion
    state: "on"
  - condition: state
    entity_id: input_boolean.pac_override_temporaire
    state: "off"
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: schedule.planning_climatisation
            state: "on"
        sequence:
          - device_id: 5b89093e82e42fe555148e26a107faba
            domain: climate
            entity_id: climate.pac
            type: set_hvac_mode
            hvac_mode: cool
          - service: climate.set_temperature
            data:
              temperature: "{{states('input_number.temperature_cible_climatisation')|int }}"
            target:
              entity_id: climate.pac
      - conditions:
          - condition: state
            entity_id: schedule.planning_climatisation
            state: "off"
        sequence:
          - device_id: 5b89093e82e42fe555148e26a107faba
            domain: climate
            entity_id: climate.pac
            type: set_hvac_mode
            hvac_mode: "off"
mode: single

Les scripts

Pour pouvoir lancer le chauffage ou la climatisation, ou le couper, depuis le dashboard. Au passage on passe en mode « temporaire », donc cet état perdurera jusqu’au prochain changement du scheduler. Comme c’est un script, on peut l’activer à la voix avec Alexa qui identifie les scripts comme des scènes, donc avec une routine on peut dire « Alexa allume le chauffage » pour lancer le script (plus agréable que dire « Alexa allume allumer_chauffage » sans routine…).

Petite mise à jour, j’ai ajouté un timer car j’ai eu quelques allumages « sauvages » par les enfants qui oublient de couper… donc désormais l’allumage/extinction par script s’accompagne du lancement d’un timer qui remet le mode auto (désactivation du booléen override temporaire) au bout d’une durée modifiable directement dans le timer (20min la plupart du temps).

Les scripts:

alias: Allumer_chauffage
sequence:
  - data: {}
    target:
      entity_id: input_boolean.saison_chauffage
    action: homeassistant.turn_on
  - data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
    action: homeassistant.turn_on
  - data:
      hvac_mode: heat
      temperature: 22
    target:
      entity_id: climate.pac
    action: climate.set_temperature
  - data: {}
    target:
      entity_id: timer.minuteur_pac
    action: timer.start
mode: single
icon: mdi:fire


alias: Allumer_climatisation
sequence:
  - data: {}
    target:
      entity_id: input_boolean.saison_climatistion
    action: homeassistant.turn_on
  - data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
    action: homeassistant.turn_on
  - data:
      hvac_mode: cool
      temperature: 24
    target:
      entity_id: climate.pac
    action: climate.set_temperature
  - data: {}
    target:
      entity_id: timer.minuteur_pac
    action: timer.start
mode: single
icon: mdi:snowflake


alias: Eteindre pac
sequence:
  - data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
    action: homeassistant.turn_on
  - device_id: 5b89093e82e42fe555148e26a107faba
    domain: climate
    entity_id: fe8907573739d862acee9459abe1c731
    type: set_hvac_mode
    hvac_mode: "off"
  - data: {}
    target:
      entity_id: timer.minuteur_pac
    action: timer.start
mode: single
icon: mdi:stop-circle-outline

L’ automatisation de gestion du timer:

alias: Timer override temporaire
description: extinction auto  l'override temporaire à la fin du timer de la PAC
trigger:
  - platform: event
    event_type: timer.finished
    event_data:
      entity_id: timer.minuteur_pac
condition: []
action:
  - metadata: {}
    data: {}
    target:
      entity_id: input_boolean.pac_override_temporaire
    action: input_boolean.turn_off
mode: single

Suivi des machines et du sèche linge:

Description:

Avec 3 enfants, enchainer les machines demande de bien savoir quand elles se terminent… Avec deux prises connectées pour mesurer la conso du lave linge et du sèche linge, et la création de deux booléens « machine en cour » et « séchage en cours », on peut faire des choses sympa, y compris des notification adaptables en fonction de l’état des machines en cours et de l’heure pour ne pas réveiller toute la maison!

Démarrage lave linge

Active le booléen machine en cours au démarrage du lave linge

alias: MACHINES - Lave linge en cours - init
description: initialise le booléen Machine en cour
trigger:
  - type: power
    platform: device
    device_id: 959e72fb1a31ef1be0f1d1c3de0a3cd0
    entity_id: sensor.0x94deb8fffe6e2623_power
    domain: sensor
    above: 500
    for:
      hours: 0
      minutes: 0
      seconds: 30
condition:
  - condition: state
    entity_id: input_boolean.machine_en_cour
    state: "off"
action:
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.machine_en_cour
mode: single
Démarrage Séche linge

Active le booléen séchage en cours au démarrage du sèche linge

alias: MACHINES - Séchage en cours - init
description: Initialise le booléen Séchage en cours
trigger:
  - type: power
    platform: device
    device_id: c2eb8aeb1c8259c313010a991fe58b25
    entity_id: sensor.0x94deb8fffe6e1c3f_power
    domain: sensor
    above: 500
    for:
      hours: 0
      minutes: 0
      seconds: 10
condition:
  - condition: state
    entity_id: input_boolean.sechage_en_cours
    state: "off"
action:
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.sechage_en_cours
mode: single

Arrêt Sèche Linge

Notification (Alexa et Smartphone) de fin de sèche linge et reset du booléen séchage en cour lorsque la prise connectée détecte la fin du séchage:

alias: "MACHINES - Sèche linge Terminé "
description: >-
  Notification en fin de sèche linge envoyée sur smartphone Doudou et Jeanne et
  echo salon (Alexa chuchote entre 20h et 9h)
trigger:
  - type: power
    platform: device
    device_id: c2eb8aeb1c8259c313010a991fe58b25
    entity_id: sensor.0x94deb8fffe6e1c3f_power
    domain: sensor
    below: 4
    for:
      hours: 0
      minutes: 0
      seconds: 45
condition:
  - condition: state
    entity_id: input_boolean.sechage_en_cours
    state: "on"
action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.sechage_en_cours
  - choose:
      - conditions:
          - condition: time
            after: "20:00:00"
            before: "09:00:00"
        sequence:
          - service: notify.mobile_app_smartphone_doudou
            data:
              title: SECHE LINGE
              message: Le séchage est terminé
          - service: notify.alexa_media
            data:
              message: >-
                <amazon:effect name="whispered">Le sèche linge est
                terminé</amazon:effect>
              target:
                - media_player.echo_dot_jeanne
                - media_player.echo_jeanne
                - media_player.jeanne_echo_dot
              data:
                type: tts
              title: Annonce sechage fini chuchotté
          - service: notify.mobile_app_smartphone_jeanne
            data:
              message: Le sèchage est terminé
              title: SECHE LINGE
      - conditions:
          - condition: time
            after: "09:00:00"
            before: "20:00:00"
        sequence:
          - service: notify.mobile_app_smartphone_doudou
            data:
              title: SECHE LINGE
              message: Le séchage est terminé
          - service: notify.alexa_media
            data:
              message: <prosody volume="soft">Le sèche linge est terminé</prosody>
              target:
                - media_player.echo_dot_jeanne
                - media_player.echo_jeanne
                - media_player.jeanne_echo_dot
              data:
                type: tts
              title: Annonce fin sechage
          - service: notify.mobile_app_smartphone_jeanne
            data:
              message: Le sèchage est terminé
              title: SECHE LINGE
mode: single

Arrêt du Lave linge

Lorsque la prise connectée détecte la fin du lavage:

  • Reset du booléen lavage en cour
  • Notification (Alexa et Smartphone) de fin de lave linge, si le sèche linge est disponible, sinon attente de la fin du sèche linge:
alias: MACHINES - lave linge terminé
description: >-
  Notifie sur smartphones Doudou et Jeanne et Echo salon (chuchotte entre 20h et
  9h) la fin du lave linge. Notification différée pour attendre la fin du
  séchage en cours le cas échéant.
trigger:
  - type: power
    platform: device
    device_id: 959e72fb1a31ef1be0f1d1c3de0a3cd0
    entity_id: sensor.0x94deb8fffe6e2623_power
    domain: sensor
    below: 4
    for:
      hours: 0
      minutes: 1
      seconds: 0
condition:
  - condition: state
    entity_id: input_boolean.machine_en_cour
    state: "on"
action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.machine_en_cour
  - choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.sechage_en_cours
            state: "off"
        sequence:
          - service: notify.mobile_app_smartphone_doudou
            data:
              title: LAVE LINGE
              message: La lessive est terminée.
          - service: notify.mobile_app_smartphone_jeanne
            data:
              message: La lessive est terminée
              title: LAVE LINGE
          - choose:
              - conditions:
                  - condition: time
                    after: "20:00:00"
                    before: "09:00:00"
                sequence:
                  - service: notify.alexa_media
                    data:
                      message: >-
                        <amazon:effect name="whispered">La machine à laver est
                        terminée</amazon:effect>
                      target:
                        - media_player.echo_dot_jeanne
                        - media_player.echo_jeanne
                        - media_player.jeanne_echo_dot
                      data:
                        type: tts
                      title: Annonce lavage fini chuchotté
              - conditions:
                  - condition: time
                    after: "09:00:00"
                    before: "20:00:00"
                sequence:
                  - service: notify.alexa_media
                    data:
                      message: >-
                        <prosody volume="soft">La machine à laver est termninée,
                        vous pouvez la mettre au sèche linge</prosody>
                      target:
                        - media_player.echo_dot_jeanne
                        - media_player.echo_jeanne
                        - media_player.jeanne_echo_dot
                      data:
                        type: tts
                      title: Annonce lavage fini
      - conditions:
          - condition: state
            entity_id: input_boolean.sechage_en_cours
            state: "on"
        sequence:
          - wait_for_trigger:
              - platform: state
                entity_id:
                  - input_boolean.sechage_en_cours
                from: "on"
                to: "off"
          - service: notify.mobile_app_smartphone_doudou
            data:
              message: La lessive est terminée
              title: LAVE LINGE
          - service: notify.mobile_app_smartphone_jeanne
            data:
              message: La lessive est terminée
              title: LAVE LINGE
          - choose:
              - conditions:
                  - condition: time
                    after: "20:00:00"
                    before: "09:00:00"
                sequence:
                  - service: notify.alexa_media
                    data:
                      message: >-
                        <amazon:effect name="whispered">La machine à laver est
                        terminée</amazon:effect>
                      target:
                        - media_player.echo_dot_jeanne
                        - media_player.echo_jeanne
                        - media_player.jeanne_echo_dot
                      data:
                        type: tts
                      title: Annonce lavage fini chuchotté
              - conditions:
                  - condition: time
                    after: "09:00:00"
                    before: "20:00:00"
                sequence:
                  - service: notify.alexa_media
                    data:
                      message: >-
                        <prosody volume="soft">La machine à laver est termninée,
                        vous pouvez la mettre au sèche linge</prosody>
                      target:
                        - media_player.echo_dot_jeanne
                        - media_player.echo_jeanne
                        - media_player.jeanne_echo_dot
                      data:
                        type: tts
                      title: Annonce lavage fini
mode: single

Notification de nouvelle note sur Pronote:

Description:

En s’appuyant sur l’intégration pronote.

Détail de la notification

Notification sur le smartphone des deux parents et de l’enfant concerné (uniquement) de la nouvelle note dispo:


Notification sous la forme:

  • « Nouvelle Note pour xxxx »
  • « Matière : X/Y (Commentaire) »
    Et direction la sous vue de synthèse pronote (voir ci dessus) en cas de clic sur la notification.
alias: Pronote - notification nouvelle note
description: >-
  Notification smartphone parents en cas de nouvelle note sur le pronote d'un
  enfant. Notification de l'enfant concerné sur son telephone
trigger:
  - platform: event
    event_type: pronote_event
    event_data:
      type: new_grade
action:
  - service: notify.mobile_app_smartphone_doudou
    data:
      message: >-
        {{ trigger.event.data.data.subject }} : {{
        trigger.event.data.data.grade_out_of }} ({{
        trigger.event.data.data.comment }})
      title: Nouvelle note pour {{ trigger.event.data.child_name }}
      data:
        clickAction: /lovelace-smartphone/pronote
        url: /lovelace-smartphone/pronote
  - service: notify.mobile_app_smartphone_jeanne
    data:
      message: >-
        {{ trigger.event.data.data.subject }} : {{
        trigger.event.data.data.grade_out_of }} ({{
        trigger.event.data.data.comment }})
      title: Nouvelle note pour {{ trigger.event.data.child_name }}
      data:
        clickAction: /lovelace-smartphone/pronote
        url: /lovelace-smartphone/pronote
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ trigger.event.data.child_name == 'xxx Louise' }}"
        sequence:
          - service: notify.mobile_app_sm_a137f
            data:
              message: >
                {{ trigger.event.data.data.subject }} : {{
                trigger.event.data.data.grade_out_of }} ({{
                trigger.event.data.data.comment }})
              title: Nouvelle note pour {{ trigger.event.data.child_name }}
              data:
                clickAction: /lovelace-smartphone/pronote
                url: /lovelace-smartphone/pronote
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ trigger.event.data.child_name == 'xxx Thibault' }}"
        sequence:
          - service: notify.mobile_app_smartphone_a14_thibault
            data:
              message: >
                {{ trigger.event.data.data.subject }} : {{
                trigger.event.data.data.grade_out_of }} ({{
                trigger.event.data.data.comment }})
              title: Nouvelle note pour {{ trigger.event.data.child_name }}
              data:
                clickAction: /lovelace-smartphone/pronote
                url: /lovelace-smartphone/pronote


1 « J'aime »

Quelques mots sur Alexa (ou plutôt nos Amazon echo)

Pour commencer

Quelques considérations avant de commencer

Alexa, Google Home, Siri ou Assist?

"Pourquoi Alexa

La question s’est posé avant la domotique, et n’ayant rien en Apple, le choix était donc Alexa ou Google home…
A ce moment l’amazon echo (gen4) offrait un hub zigbee qui permettait de se projeter dans un embryon de solution domotique, un look sphérique sympa, et Madame étant abonnée amazon prime, un accès simple à Amazon musique…

Donc le choix a été Alexa avec une echo gen4, bientôt suivie par des petites sœurs echo dot (g4) et (g5) pour les enfants et d’autres pièces (ou trouve toujours une promo pour les french days ou le black friday)… On en est content, mais on n’a rien testé d’autre. Ce post n’est donc aucunement une pub pour Alexa, mais plutôt un retour d’expérience pour essayer d’en tirer le plus possible…

Il y a des avantages:

  • simplicité
  • materiel bien fini et performant
  • esthétique
  • reconnaissance vocale efficace

Il y a des inconvénients:

  • cloud
  • soft propriétaire amazon
  • impossible de lire des MP3 dessus (sauf en mode bluetooth)
  • réponses parfois peu pertinentes

L’intégration à la domotique Home assistant, avec Nabu-Casa ou par des solutions gratuites en bidouillant?

Notre choix perso, le bidouillage.

Nous n’avons pas NabuCasa. Donc l’adaptation de ce qui suit au cas « home assistant cloud » est à vérifier, mais a priori les principes restent les mêmes pour la plupart des notions.

Concernant nos raisons, j’ai débuté Home assistant pile au moment ou l’abonnement a augmenté de 5 à 7.5€/mois , et je n’ai pas voulu être dépendant d’un service qui pourrait prendre régulièrement +50%…

Ce serait à refaire aujourd’hui, je ne sais pas si je ne ferais pas le choix de NabuCasa.

Notre intégration est donc un poil plus complexe à installer, mais au final les capacités sont les mêmes…

Cloud ou pas cloud…

Cloud !!!

Contrairement aux solutions qui commencent à émerger depuis 2023 (année de la voix), Alexa n’est pas disponible en local, et tant que personne n’aura « jailbreaké » les amazon echo, il y a peu de chance que ceci le devienne. C’est donc une partie de la domotique qui est 100% dépendante de:

  • l’accès de Home assistant à internet (box, routeur, fibre, etc…)
  • la disponibilité des serveurs d’amazon (le cloud :cloud:)

C’est donc une chose à garder en tête:

  • Les commandes vocales via Alexa/echo sont interprétées sur les serveurs d’amazon via le web avant d’arriver à votre home assistant => elles seront perdues en cas de perte de l’accès web ou de l’indisponibilité des serveurs amazon. Il vous faut donc toujours un autre moyen de piloter votre domotique en cas de panne.

  • Les envois d’information (media player, notifications par ex) vers Alexa/echo sont interprétées sur les serveurs d’amazon via le web avant de sortir de votre enceinte => elles seront perdues en cas de perte de l’accès web ou de l’indisponibilité des serveurs amazon. Ne bâtissez pas un système d’alarme critique sur des notifications Alexa.

  • Les sensors remontés depuis les Alexa/echo sont interprétés sur les serveurs d’amazon via le web avant d’arriver à votre home assistant => ils seront perdus en cas de perte de l’accès web ou de l’indisponibilité des serveurs amazon. Ne bâtissez pas d’automatisations critiques sur ces senseurs.

Donc si on veut faire de l’interface audio ou du contrôle vocal sans cloud. Alexa n’est pas la solution, mais il commence à y avoir des solutions alternatives qui marchent avec Home assistant (mais ce n’est plus le sujet de ce post).

Un peu d’architecture…

Comment ranger tout ça?

Les choses seront un peu différente suivant qui est arrivé en premier dans la maison entre Home assistant et Alexa. Dans le monde d’Alexa on dispose des éléments suivants qui permettent aussi de faire une installation domotique :

  • des équipements maison connectés qui peuvent être détectés directement par Alexa (les echo font hub Zigbee)
  • Des Skills (un peu l’équivalent des intégrations de HA)
  • Des Scènes
  • Des Routines (l’équivalent des automatisations de HA)
  • Des Pièces pour grouper ses équipements
  • Des Groupes d’enceintes pour faire du multi-room
  • Une Application qui dispose d’un pseudo dashboard

On pourrait tout dédoubler, mais ce n’est ni efficace, ni souhaitable… tout le jeu va être de réussir à interconnecter Home Assistant et Alexa pour pourvoir élargir les possibilités des deux cotés, mais avec méthode. La meilleure solution est à mon avis:

  • de centraliser au maximum dans home assistant la gestion des entités et intégrations (sauf celles qui ne seraient disponibles que dans des Skills Alexa) donc si comme nous vous avez débuté avec Alexa, il est au final plus intéressant de retirer vos équipements d’Alexa pour les réassocier avec Home assistant l’idée étant de tout avoir au même endroit et si possible en local, sans cloud).
  • de réaliser toutes les automatisations dans Home assistant (plus de possibilités et accès à toutes les entités, et tout en local)
  • de faire le dashboard dans Home assistant (plus de possibilités de personalisation et accès à toutes les entités, et en local). Ce point pourrait être discuté si à la place d’une amazon echo, on utilise un echo show par exemple. Peut être que le dashboard natif d’Alexa serait justifié comme dashboard simplifié…
  • d’utiliser Alexa pour ses capacité audio (média et notification - dépendant du cloud)
  • d’utiliser Alexa pour de la commande vocale des entités HA (ce qui peut nécessiter quelques routines coté Alexa et sera dépendant du cloud)
  • d’utiliser Alexa pour ses quelques capteurs (à faire remonter dans HA donc conformément au point précédent, en sachant qu’ils ne sont pas 100% en local)

1/ Faire parler Alexa, et un peu plus…

Première étape qui ouvre de nombreuses possibilités

C’est probablement la première étape. Et ça démarre avec l’installation via HACS de Alexa Media Player.
Allez lire la doc pour voir tout ce dont Home Assistant devient capable: Wiki Alexa media player

En raccourci, cette intégration vous permet d’associer votre compte amazon à home assistant et donc de pouvoir interagir avec vos amazon echo (et autres devices alexa) comme des média players (et un peu plus).
Ceci va permettre:

  • de lancer de la musique, des playlist, des radios et autre sur vos amazon echo (et vos groupes d’enceintes).
  • d’avoir un retour sur le statut de vos echo et ce qui est en cour de lecture.
  • de visionner comme un media player vos echo (et vos groupes d’enceintes) dans le dashboard et d’interagir avec (lecture/pause, contrôle du volume, suivant/précédant, aléatoire, affichage des titres n cour de lecture, etc…)
  • de lancer des routines, des skills, etc (regardez la doc…)
  • de parler à une Alexa (et donc de lui donner un ordre le cas échéant) avec une syntaxe « custom ». Tous les ordres que vous pouvez donner en vocal (y compris pour interagir avec une skill) peuvent donc être envoyés par Home assistant (y compris depuis une automatisation). Dit autrement, tout ce que vous savez dire à Alexa, désormais Home assistant sait le lui dire.
exemple de custom pour lui demander de jouer de la bonne musique dans toute la maison

Remplacez juste « joue du Queen sur le groupe partout » par ce que vous lui diriez en direct, en enlevant juste le Alexa de départ: (ouvre les volets, quelle est la météo, lance un timer durant 5 min, ajoute des croquettes sur la liste d’achat, etc.).

service: media_player.play_media
target:
  entity_id: media_player.echo_dot
data:
  media_content_type: custom
  media_content_id: joue du Queen sur le groupe partout
  • de faire parler Alexa pour des retours d’informations ou des notifications
Quelques infos supplémentaires sur les notifications via Alexa

Je n’ai pas encore réussi à envoyer des notifications au format alexa via Home Assistant (allumage de l’echo en jaune, puis on l’interroge en disant « Alexa quelles sont mes notifications? »). Ceci necessiste pour l’instant de passer par une skill qui n’a pas l’air de fonctionner en français. Il y a un fil sur le forum, mais pas de progrès depuis…

Tout ce qu’on sait faire (mais c’est déjà pratique) c’est de faire parler Alexa lorsque Home assistant le lui commande. La syntaxe classique pour envoyer un message de notification TTS (text to speech) sur un ou plusieurs echo/echo dot est la suivante:

service: notify.alexa_media
data:
  message: La machine à laver est terminée
  target:
    - media_player.echo_1
    - media_player.echo_2
    - media_player.echo_dot_1
  data:
    type: tts
  title: Annonce lavage fini

De plus, on peux personnaliser la façon dont Alexa parle en incluant des balises dans le message lui même. Ceci permet de changer la façon dont Alexa parle sans avoir besoin de faire varier le volume.

Comment modifier la façon dont Alexa parle:

Désolé pour le lien en anglais, il contient toutes les balises ssml qu’on peut intégrer dans un message tts pour ajouter des effets à Alexa en particulier la prosody et le chuchotage pour le volume. Les possibilités sont très nombreuses, ne pas hésiter à lire la doc: [traduction perso rapide en Français]

<break> ajouter une pause
<emphasis> mettre en evidence un mot
<lang> specifier la langue d'un mot
<mark> ajouter un tag dans le texte
<p> placer une pause entre paragraphes
<phoneme> utiliser la prononciation phonetique
<prosody>  contrôle le volume, le débit et la hauteur de la voix
<s>  ajouter une pause entre phrases
<say-as>  controle sppécifique de la manière de prononcer un mot
<sub>  pour les  Acronymes et Abbreviations
<amazon:auto-breaths>  ajout de respiration
<amazon:domain name="news">  style journaliste
<amazon:effect phonation="soft">  voix douce
<amazon:effect vocal-tract-length>  contrôle du timbre de la voix
<amazon: effect name="whispered"> Chuchotage

On peut en particulier intégrer des balises ssml dans le texte du message pour changer le volume de la voix (sans toucher au volume de base de l’enceinte) par exemple:

Quelque fois il peut être utile de <prosody volume="loud"> monter le volume 
pour une partie spécifique de l'annonce.</prosody>  

Nous utilisons assez souvent le chuchotage pour des annonces le soir:

service: notify.alexa_media
data:
  message: >-
    <amazon:effect name="whispered">La machine à laver est
    terminée</amazon:effect>
  target:
    - media_player.echo_1
    - media_player.echo_2
  data:
    type: tts
  title: Annonce lavage fini chuchotté

Ca ne change pas le volume pour le reste du temps (si on a de la musique en cours de lecture) ni ne laisse le volume « à fond » ou « au mini » pour la prochaine annonce d’Alexa…

On peut aussi utiliser le type « announce » à la place de « tts » ceci ajoute un petit son avant l’annonce:

service: notify.alexa_media
data:
  title: "ma sonnette"
  message: <prosody volume="loud">Il y a du monde à la porte!</prosody> 
  data: 
    method: speak
    type: announce
  target: 
      - media_player.echo_1
  • de récupérer des infos issues de vos echo (le capteur de température notamment)
En savoir plus sur les infos remontées

Il faut voir la doc pour avoir la totalité, mais les plus utiles sont:

  • vous pourrez avoir des sensor « next_alarm », « next_timer » et « next_reminder » sur vos echo/echo dot
  • vous pouvez jouer des sons…
  • si vous sélectionnez l’option « inclure les appareils connectés via echo », vous pourrez :
    • retrouver et contrôler dans HA les éléments connectés directement au pont zigbee des echo
    • récupérer le capteur de température des echo et echo dot récentes
      image

2/ Remonter les éléments de Home assistant dans Alexa.

Deuxième étape qui libère le plein potentiel des echo...

Pour l’instant nous avons des haut parleur de course, que home assistant peut contrôler. Mais allons un cran plus loin.
Pour pouvoir faire de la commande vocale, il faut qu’Alexa puisse agir sur des éléments de Home Assistant pour les piloter… Pour faire ceci, plusieurs solutions:

Une fois ceci fait, on dit à Alexa: « Alexa découvre mes appareils » et les entités disponibles dans home assistant deviennent disponible dans l’appli Alexa, comme si celles ci étaient connectées à Alexa directement. Elles apparaissent dans l’application Alexa comme « connecté via Home Assistant ».

Cependant il peut être utile de faire un peu de ménage. Alexa étant plutôt là pour servir d’interface, il n’y a probablement pas intérêt à remonter TOUTES les entités HA dans Alexa (suivant les installations ça monte très vite, chez nous plus de 900 entités…).

Heureusement on peut filtrer ce qui remonte de HA vers Alexa:

Il faut donc ajouter dans le configuration.yaml (ou dans un fichier dédié):

exemple du mien:
# Configuration specifique d'Alexa via Amazon Web Service
alexa:
  smart_home:
    locale: fr-FR
    endpoint: https://api.eu.amazonalexa.com/v3/events
    client_id: amzn1.applicationxxxxxxxxxxxx
    client_secret: amzn1.xxxxxxxxxxxxxxxxxx
  
    # Filtres pour limiter ce qui remonte dans Alexa depuis HA
    filter:
    
      # inclusion uniquement des entities désirées dans Alexa
      # ne pas mettre d'exclude ou alors penser à TOUT exclure
      
      include_entities:
        #volets: via Tost Box
        - cover.piece_de_vie
        - cover.salon
        - cover.tous_les_volets
        - cover.volet_cuisine
        - cover.volet_de_la_chambre_de_justine
        - cover.volet_de_la_chambre_de_louise
        - cover.volet_de_la_chambre_de_thibault
        - cover.volet_de_la_mezzanine
        - cover.volet_du_bureau
        - cover.volet_du_salon_apero
        - cover.volet_du_salon_tv
        
        #lumières
        - light.0x385b44fffe20eb24     # sous escalier
        - light.0x84b4dbfffec93621     # mezzanine
        - light.0x84ba20fffe4b2581     # petite lampe
        - light.ampoule_bureau         # bureau
        - light.inter_lumiere_garage   # garage
        - light.inter_lumiere_piscine  # piscine
        - light.inter_lumiere_terrasse # terrasse
        - light.led_chambre            # parents
        - light.led_cuisine            # cuisine
        - light.led_justine            # justine
        - light.led_louise             # louise
        - light.led_thibault           # thibault
        - light.prise_cerisier         # cerisier
        - light.prise_elephants        # elephants
        - light.prise_lampadaire       # lampadaire
        
        # Switch presence Alexa
        - switch.echo_cuisine_presence
        - switch.echo_justine_presence
        - switch.echo_louise_presence
        - switch.echo_salon_presence
        - switch.echo_thibault_presence
        
        #Scripts
        #-------
        # PAC
        - script.allumer_chauffage
        - script.allumer_climatisation
        - script.eteindre_pac
        
        # LEDs enfants
        - script.arc_en_ciel_justine
        - script.disco_justine
        - script.car_en_ciel_louise
        - script.disco_louise
        - script.arc_en_ciel_thibault
        - script.disco_thibault
        - script.mode_gaming_thibault

La manière de configurer les include et exclude est la même que dans le recorder: Recorder - Home Assistant
Je conseillerai plutôt de tout exclure et d’ajouter au fur et a mesure les entités utiles (celles dont on va avoir besoin avec Alexa: les entités à piloter, les scripts, peut être quelques sensors…). Chez nous on est a une quarantaines d’entités à remonter (contre >900 entités au départ…)

A partir de là on sait piloter depuis Alexa les entités qui remontent de home assistant.

  • soit directement si ce sont des entités que Alexa « comprend » comme des light, des covers, des switchs, etc…
  • soit via des scripts car Alexa interprète les scripts comme des scènes et peut donc activer une scène qui lancera le script HA correspondant. Désormais il est nécessaire de passer par des routines pour activer les scripts… Il faut donc créer une routine qui active la scène (le script HA) « allumer_chauffage » quand on dit « Alexa allume le chauffage », ou « Alexa lance le chauffage », ou « Alexa démarre le chauffage ».

3/ Quelques astuces supplémentaires:

Troisième étape pour aller au bout du chemin
Récupérer le capteur de présence à ultrason des echo et echo dot

Alexa media player ne peut pas directement récupérer l’info de ce « capteur » de présence. On ne peut donc pas le récupérer directement dans Home assistant. On ne peut que l’utiliser dans une routine Alexa (après avoir autorisé la détection de présence dans l’appli Alexa bien sur…).

Mais en fait on peut contourner ce problème en utilisant les routines d’Alexa pour agir sur des éléments que home assistant pourra détecter (cette logique pourrait être utile pour d’autres éléments qu’on ne saurait pas remonter, depuis des skills par exemple).

Il y a une astuce pour faire ça:
Il faut créer plusieurs entités dans home assistant pour ça:

  • un switch (interrupteur) correspondant à chaque capteur
  • deux routines dans Alexa, une qui allume cet interrupteur quand elle détecte un mouvement, une qui éteint l’interrupteur quand elle ne détecte plus.
  • et enfin (c’est optionnel, mais pratique) un capteur de présence dans home assistant et un Template qui recopie l’état de l’interrupteur dans le capteur de présence, ce qui permet d’avoir le bon format de données…

Ca marche très bien. J’avais utilisé ça: (lien en anglais) Simple way to get Amazon Echo 4th generation ultrasound motion/presence sensors into Home Assistant - Scripts - Home Assistant Community

Créer des pièces dans l'appli Alexa

Ceci est particulièrement utile si, comme nous, vous avez plusieurs echo dans plusieurs pieces différentes. Il est alors particulièrement intéressant de créer des pièces dans l’appli Alexa, et d’indiquer l’ensemble des éléments pilotables qui s’y trouvent (lumières, switchs, volets) et les Amazon echo qui sont à l’intérieur.
Ainsi lorsqu’on dit « Alexa allume la lumière », elle n’allumera que les lumières de la piece dans laquelle se trouve l’echo qui capte la commande. C’est très naturel.

Une interface pour le media player des echo/echo dot

Je suis très fan de la carte mini media player qui est non seulement belle et customisable (apparence, raccourcis, etc…). Mais elle dispose en plus d’un champ tts (Texte à lire) permettant de taper un message d’annonce et l’envoyer sur l’echo associée.
C’est une des raisons pour ma femme d’utiliser le dashboard car elle préfère ça à la commande vocale…
image


Les chantiers à venir.

  • le suivi energetique des entités non mesurées (Powercalc - en cours)
  • le binding pour avoir du zigbee sans HA/Z2M le cas échéant (bind zigbee devices directly in Z2M)
  • la refonte des notification pour les rendre plus intelligentes
  • refaire les notif alexa pour avoir des dialogues (Alexa actionable notif)
  • la domotisation du portail
  • trouver une solution qui marche pour domotiser plus de lumières (en particulier des va et vient avec des modules sans neutre…)
  • refaire le controle des volets en RTS (esp-somfy RTS)
  • basculer le controle de la clim en local (en se passant du cloud mitsubishi)
7 « J'aime »

Bienvenue sur HACF l’ancien
:wink:

Mieux vaut tard que jamais

1 « J'aime »

Bonjour BBE,

magnifique dashboard. Intelligent et bien conçu.
Serait il possible (sans abuser) d’avoir le code complet?
Encore bravo! je suis fan

La version smartphone:

Code
type: vertical-stack
cards:
  - type: custom:mushroom-chips-card
    chips:
      - type: weather
        entity: weather.tournefeuille
        show_conditions: true
        show_temperature: true
        double_tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/meteo
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/meteo
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/meteo
      - type: entity
        entity: person.bernard
        use_entity_picture: true
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/carte
      - type: entity
        entity: person.jeanne
        use_entity_picture: true
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/carte
      - type: entity
        entity: person.thibault
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/carte
        use_entity_picture: true
      - type: entity
        entity: person.louise
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/carte
        use_entity_picture: true
      - type: entity
        entity: person.justine
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/carte
        use_entity_picture: true
    alignment: center
  - square: false
    columns: 2
    type: grid
    cards:
      - type: custom:mushroom-template-card
        primary: Lumières
        secondary: |
          {% set all = expand(entity)| list -%}
          {% set ND1 = all | selectattr('state','eq','on')|list|count%}
          {% set D1 = all | selectattr('state','eq','off')|list|count%}
          Allumées : {{ND1}}
          Eteintes : {{D1}}
        icon: |
          {% if is_state(entity, 'on') %} 
            mdi:lightbulb-group
          {% else %}
            mdi:lightbulb-group-off
          {% endif %}
        icon_color: |
          {% if is_state(entity,'on') %}
            orange
          {% else %}
            grey
          {% endif %}
        badge_icon: |-
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','on')|list|count%}
          {% if open1 <= 9 %}
            mdi:numeric-{{open1}}
          {% elif open1 >= 10 %}
            mdi:numeric-9-plus
          {% else %}
            none
          {% endif %}
        badge_color: |
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','on')|list|count%}
          {% if open1 == 0 %}
            grey
          {% else %}
            orange
          {% endif %}
        entity: light.toutes_les_lumieres
        layout: horizontal
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/lumieres
        hold_action:
          action: call-service
          service: homeassistant.turn_off
          data: {}
          target:
            entity_id:
              - group.lumieres_toutes
              - switch.prise_tradfri_1
        double_tap_action:
          action: more-info
        multiline_secondary: true
        fill_container: false
      - type: custom:mushroom-template-card
        primary: Volets
        secondary: |
          {% set all = expand(entity)| list -%}
          {% set ND1 = all | selectattr('state','eq','open')|list|count%}
          {% set D1 = all | selectattr('state','eq','closed')|list|count%}
          Ouverts : {{ND1}} 
          Fermés : {{D1}}
        icon: |
          {% if is_state(entity, 'open') %} 
            mdi:window-shutter-open
          {% else %}
            mdi:window-shutter
          {% endif %}
        icon_color: |
          {% if is_state(entity,'open') %}
            light-blue
          {% else %}
            green
          {% endif %}
        badge_icon: |-
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','open')|list|count%}
          {% if open1 <= 9 %}
            mdi:numeric-{{open1}}
          {% elif open1 >= 10 %}
            mdi:numeric-9-plus
          {% else %}
            none
          {% endif %}
        badge_color: |
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','open')|list|count%}
          {% if open1 == 0 %}
            green
          {% else %}
            orange
          {% endif %}
        entity: cover.tous_les_volets
        layout: horizontal
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/volets
        double_tap_action:
          action: more-info
        multiline_secondary: true
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/volets
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_salon
            icon: mdi:sofa
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Salon
            secondary: '{{ states(''sensor.echo_jeanne_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salon
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salon
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: plant.alocatia
                icon: mdi:flower
                icon_color: |-
                  {% 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:mod-card
                        card:
                          type: custom:flower-card
                          entity: plant.alocatia
                          show_bars:
                            - moisture
                            - temperature
                            - illuminance
                            - conductivity
                          battery_sensor: sensor.alocasia_zebrina_battery
              - type: template
                entity: media_player.echo_jeanne
                icon: mdi:play-pause
                icon_color: |-
                  {% 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.salon
                hold_action:
                  action: toggle
                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
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.0x84ba20fffe4b2581
                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
                          - 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
                          - 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
                          - 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
                          - type: custom:mushroom-light-card
                            entity: light.prise_tradfri
                            use_light_color: false
                            show_brightness_control: false
                            show_color_temp_control: false
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:countertop
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Cuisine
            secondary: '{{ states(''sensor.echo_dot_cuisine_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/cuisine
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/cuisine
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_cuisine_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_cuisine_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
            entity: light.led_cuisine
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: media_player.echo_dot_jeanne
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo dot cuisine
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_jeanne
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_jeanne
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - name: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: Playlist Top Doudou
                                - 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: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: >-
                                    Playlist Top Doudou 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_cuisine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volet Cuisine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_cuisine
                            name: Volet cuisine
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_cuisine
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières cuisine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_cuisine
                            name: LED cuisine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
                double_tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.ampoule_bureau
            icon: mdi:desk
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Bureau
            secondary: ...
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/imprimante
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/imprimante
            hold_action:
              action: toggle
            badge_icon: >
              {% if
              is_state('binary_sensor.detecteur_presence_bureau_occupancy',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if
              is_state('binary_sensor.detecteur_presence_bureau_occupancy',
              'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                icon: mdi:water
                icon_color: |-
                  {% if is_state(entity, 'printing') %} 
                   green
                  {% elif is_state(entity, 'stopped') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Imprimante
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520
                            name: Etat
                            layout: vertical
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520_black
                            name: Cartouche Noir
                            layout: vertical
                            icon_color: black
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520_color
                            name: Cartouche couleur
                            layout: vertical
                entity: sensor.imprimante_bureau_canonmx520
              - type: template
                entity: cover.volet_du_bureau
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volet Bureau
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_du_bureau
                            name: Volet bureau
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                hold_action:
                  action: toggle
              - type: template
                entity: light.ampoule_bureau
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières bureau
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.ampoule_bureau
                            name: Plafonnier Bureau
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_escalier
            icon: mdi:stairs
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Escalier
            secondary: '{{ states(''sensor.pac_room_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/escalier
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/escalier
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state('binary_sensor.0x00124b00246e9df7_occupancy', 'on')
              %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if is_state('binary_sensor.0x00124b00246e9df7_occupancy', 'on')
              %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: climate.pac
                icon: >-
                  {% if is_state(entity, 'heat') %} 

                  mdi:fire

                  {% elif is_state(entity, 'cool') %} 

                  mdi:snowflake

                  {% elif is_state('input_boolean.saison_chauffage', 'on') %} 

                  mdi:fire

                  {% elif is_state('input_boolean.saison_climatistion', 'on')
                  %} 

                  mdi:snowflake

                  {% else %}

                  mdi:fan

                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: PAC etage
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-chips-card
                            chips:
                              - type: template
                                entity: input_boolean.chauffage_mode_auto
                                icon: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 
                                   mdi:cog-refresh
                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 
                                    mdi:cog-off
                                  {% else %}
                                    mdi:comment-question
                                  {% endif %}
                                icon_color: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 

                                  green

                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 

                                  red

                                  {% else %}

                                  orange

                                  {% endif %}
                                content: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 

                                  Mode général: Auto

                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 

                                  Mode général: Manuel

                                  {% else %}

                                  Inconnu

                                  {% endif %}
                                tap_action:
                                  action: toggle
                                hold_action:
                                  action: more-info
                              - type: template
                                entity: input_boolean.pac_override_temporaire
                                icon: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   mdi:cog-pause
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                    mdi:cog-refresh
                                  {% else %}
                                    mdi:comment-question
                                  {% endif %}
                                icon_color: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   orange
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                    green
                                  {% else %}
                                    orange
                                  {% endif %}
                                content: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   Mode temporaire: Manuel
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                   Mode temporaire: Auto
                                  {% else %}
                                    Inconnu
                                  {% endif %}
                              - type: conditional
                                conditions:
                                  - entity: input_boolean.saison_chauffage
                                    state: 'on'
                                chip:
                                  type: template
                                  double_tap_action:
                                    action: more-info
                                  entity: schedule.planning_chauffage
                                  icon: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     mdi:fire
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      mdi:fire-off
                                    {% else %}
                                      mdi:comment-question
                                    {% endif %}
                                  icon_color: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     yellow
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      grey
                                    {% else %}
                                      orange
                                    {% endif %}
                                  content: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     Cible mode auto: confort
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      Cible mode auto: off
                                    {% else %}
                                      Inconnu
                                    {% endif %}
                                  tap_action:
                                    action: more-info
                                  hold_action:
                                    action: more-info
                              - type: conditional
                                conditions:
                                  - entity: input_boolean.saison_climatistion
                                    state: 'on'
                                chip:
                                  type: template
                                  entity: schedule.planning_climatisation
                                  icon: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     mdi:snowflake
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      mdi:snowflake-off
                                    {% else %}
                                      mdi:comment-question
                                    {% endif %}
                                  icon_color: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     light-blue
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      grey
                                    {% else %}
                                      orange
                                    {% endif %}
                                  content: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     Cible mode auto: confort
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      Cible mode auto: off
                                    {% else %}
                                      Inconnu
                                    {% endif %}
                              - type: entity
                                entity: input_boolean.tarif_rouge
                                icon_color: red
                                content_info: name
                              - type: action
                                icon_color: red
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.allumer_chauffage
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:fire
                              - type: action
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.allumer_climatisation
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:snowflake
                                icon_color: light-blue
                              - type: action
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.eteindre_pac
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:stop-circle-outline
                                icon_color: red
                            alignment: start
                          - type: thermostat
                            entity: climate.pac
                icon_color: |-
                  {% if is_state(entity, 'heat') %} 
                  orange
                  {% elif is_state(entity, 'cool') %} 
                  blue
                  {% elif is_state(entity, 'off') %} 
                  grey
                  {% else %}
                    grey
                  {% endif %}
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/gestion-pac-gainable
                double_tap_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/gestion-pac-gainable
              - type: template
                entity: vacuum.roomba
                icon: |-
                  {% if is_state(entity, 'cleaning') %} 
                   mdi:robot-vacuum
                  {% elif is_state(entity, 'docked') %} 
                   mdi:robot-vacuum
                  {% else %}
                   mdi:robot-vacuum-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'cleaning') %} 
                   blue
                  {% elif is_state(entity, 'docked') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Roomba
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-vacuum-card
                            entity: vacuum.roomba
                            commands:
                              - start_pause
                              - stop
                              - locate
                              - return_home
              - type: template
                entity: cover.volet_de_la_mezzanine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets Escalier
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_mezzanine
                            name: Volet Mezzanine
                            show_position_control: true
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: group.lumieres_escalier
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Escalier
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.0x385b44fffe20eb24
                            name: Sous escalier
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: false
                          - type: custom:mushroom-light-card
                            entity: light.0x84b4dbfffec93621
                            name: Mezzanine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:washing-machine
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% elif is_state('input_boolean.sechage_en_cours', 'on') %} 
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Cellier
            secondary: >
              {% if is_state(entity, 'on') %} lavage {% endif %} .

              {% if is_state('input_boolean.sechage_en_cours', 'on') %} séchage
              {% endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: none
            badge_icon: |+

            badge_color: |+

            entity: input_boolean.machine_en_cour
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: binary_sensor.0x00124b0028941c36_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:door-open
                  {% elif is_state(entity, 'off') %} 
                   mdi:door-closed
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: input_boolean.machine_en_cour
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:washing-machine
                  {% elif is_state(entity, 'off') %} 
                   mdi:washing-machine-off
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   green
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                double_tap_action:
                  action: none
                tap_action:
                  action: none
              - type: template
                entity: input_boolean.sechage_en_cours
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:tumble-dryer
                  {% elif is_state(entity, 'off') %} 
                   mdi:tumble-dryer-off
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   green
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_jardin
            icon: mdi:tree
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Jardin
            secondary: '{{states(''sensor.tournefeuille_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: toggle
            badge_icon: |+

            badge_color: |+


          - type: custom:mushroom-chips-card
            chips:
              - type: weather
                entity: weather.tournefeuille
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Météo
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:meteofrance-weather-card
                            entity: weather.tournefeuille
                            number_of_forecasts: '3'
                            details: true
                            current: true
                            one_hour_forecast: true
                            alert_forecast: true
                            rainForecastEntity: sensor.tournefeuille_next_rain
                            rainChanceEntity: sensor.tournefeuille_rain_chance
                            uvEntity: sensor.tournefeuille_uv
                            cloudCoverEntity: sensor.tournefeuille_cloud_cover
                            freezeChanceEntity: sensor.tournefeuille_freeze_chance
                            snowChanceEntity: sensor.tournefeuille_snow_chance
                            alertEntity: sensor.31_weather_alert
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/meteo
              - type: template
                entity: sensor.pollens_31_risklevel
                icon: mdi:flower-pollen
                hold_action:
                  action: toggle
                icon_color: >-
                  {% if is_state(entity, '2') %} 
                   orange
                  {% elif is_state(entity, '3') %} 
                   red
                  {% elif
                  is_state('sensor.pollens_31_ambroisies',['00','2','3']) %} 

                  red

                  {% elif is_state('sensor.pollens_31_armoise',['1','2','3'])
                  %} 

                  red

                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Pollens
                      content:
                        type: vertical-stack
                        cards:
                          - type: horizontal-stack
                            cards:
                              - type: custom:mushroom-template-card
                                primary: Haute Garonne
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:flower-pollen
                                  {% else %}
                                    mdi:flower-pollen-outline
                                  {% endif %}
                                entity: sensor.pollens_31_risklevel
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                              - type: custom:mushroom-template-card
                                primary: Ambroisie
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:grass
                                  {% else %}
                                    mdi:grass
                                  {% endif %}
                                entity: sensor.pollens_31_ambroisies
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                              - type: custom:mushroom-template-card
                                primary: Armoise
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:grass
                                  {% else %}
                                    mdi:grass
                                  {% endif %}
                                entity: sensor.pollens_31_armoise
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                          - type: custom:auto-entities
                            filter:
                              include: null
                              template: |
                                {%  set ALTNAME = 'd'-%} 
                                {% for state in states.sensor -%}
                                  {%- if state.entity_id | regex_match('sensor.pollens_31_',ignorecase=False) -%}
                                  {%- set NAME = state_attr(state.entity_id,"pollen_name") -%}
                                    {{
                                      { 'entity': state.entity_id,
                                        'name': NAME,
                                      } }},
                                  {%- endif -%}
                                {%- endfor %}
                              exclude:
                                - state: <1
                                - entity_id: sensor.pollens_31_risklevel
                            sort:
                              numeric: true
                              reverse: true
                              method: state
                            card:
                              type: custom:bar-card
                              title: Pollens en alerte dans le 31
                              min: 0
                              max: 3
                              positions:
                                name: outside
                              width: 70%
                              style: |-
                                bar-card-value {
                                  margin-right: 5px;
                                  font-size: 15px;
                                  font-weight: bold;
                                  text-shadow: 1px 1px #000000;
                                }
                              severity:
                                - color: grey
                                  from: 0
                                  to: 0
                                - color: yellow
                                  from: 1
                                  to: 1
                                - color: orange
                                  from: 2
                                  to: 2
                                - color: red
                                  from: 3
                                  to: 3
              - type: template
                entity: light.inter_lumiere_terrasse
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières jardin
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_terrasse
                            name: Terrasse
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_piscine
                            name: Piscine
                            use_light_color: false
                            show_brightness_control: false
                            show_color_temp_control: false
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_thibault
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Thibault
            secondary: >-
              Ce jour:{% if
              states('sensor.pronote_thibault_timetable_today') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_thibault_timetable_today','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_thibault_timetable_today','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}

              Demain:{% if
              states('sensor.pronote_thibault_timetable_tomorrow') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_thibault_timetable_tomorrow','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_thibault_timetable_tomorrow','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres thibault
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/pronote
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_thibault_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_thibault_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
            multiline_secondary: true
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_thibault
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse a dent de Thibault
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_thibault_time',)}}
                              s{% else %}Etat : {{states(entity)}} %{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_thibault_battery',)}}
                              %

                              {{states('counter.brossage_thibault')}} brossage{%
                              if states('counter.brossage_thibault') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_thibault_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_thibault', '0')
                              %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_thibault', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_thibault', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_thibault', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_thibault', '0')
                              %}
                                red
                              {% elif is_state('counter.brossage_thibault', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_thibault', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_thibault', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_thibault
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Thibault
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_thibault
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_thibault
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_thibault
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_thibault
                            name: Volet Thibault
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_thibault
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_thibault
                            name: LED Thibault
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_louise
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Louise
            secondary: >-
              Ce jour:{% if
              states('sensor.pronote_louise_timetable_today') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_louise_timetable_today','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_louise_timetable_today','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}

              Demain:{% if
              states('sensor.pronote_louise_timetable_tomorrow') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_louise_timetable_tomorrow','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_louise_timetable_tomorrow','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Louise
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/pronote
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_louise_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_louise_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
            multiline_secondary: true
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_louise
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse de Louise
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_louise_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_louise_battery',)}}
                              %

                              {{states('counter.brossage_louise')}} brossage{%
                              if states('counter.brossage_louise') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_louise_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_louise', '0') %}
                                red
                              {% elif is_state('counter.brossage_louise', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_louise', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_louise', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_louise', '0') %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_louise', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_louise', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_louise', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_louise
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Louise
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_louise
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_louise
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_louise
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_louise
                            name: Volet Louise
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_louise
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_louise
                            name: LED Louise
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_justine
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Justine
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Justine
            double_tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Justine
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state('binary_sensor.echo_justine_mouvement_mouvement',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_justine_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_justine
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse a dent de Justine
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_justine_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_justine_battery',)}}
                              %

                              {{states('counter.brossage_justine')}} brossage{%
                              if states('counter.brossage_justine') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_justine_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_justine', '0') %}
                                red
                              {% elif is_state('counter.brossage_justine', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_justine', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_justine', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_justine', '0') %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_justine', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_justine', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_justine', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_justine
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Justine
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_justine
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_justine
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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: Aldebert
                                  type: custom
                                  id: joue du Aldebert
                                - name: Louane
                                  type: custom
                                  id: joue du Louane
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_justine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_justine
                            name: Volet Justine
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_justine
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_justine
                            name: LED Justine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.inter_lumiere_garage
            icon: mdi:tools
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Garage
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: toggle
            badge_icon: >
              {% if
              is_state('binary_sensor.detecteur_presence_garage_occupancy',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if
              is_state('binary_sensor.detecteur_presence_garage_occupancy',
              'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: binary_sensor.0x00124b0028943f14_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:garage-open-variant
                  {% elif is_state(entity, 'off') %} 
                   mdi:garage-variant
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: binary_sensor.0x00124b0028941c36_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:door-open
                  {% elif is_state(entity, 'off') %} 
                   mdi:door-closed
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: light.inter_lumiere_garage
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières garage
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_garage
                            name: lumière garage
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: media_player.jeanne_echo_dot
            icon: mdi:bathtub
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Bain
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salles-de-bains
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salles-de-bains
            hold_action:
              action: toggle
            badge_icon: |+

            badge_color: |+


          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: input_boolean.alerte_brossage
                icon: mdi:toothbrush-electric
                icon_color: |-
                  {% if states(entity) == 'on' %}
                    orange
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosses à dent
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Bernard
                            secondary: >-
                              Brosse à dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_bernard_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_bernard_battery',)}}
                              %

                              - {{states('counter.brossage_bernard')}}
                              brossage{% if states('counter.brossage_bernard')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_bernard_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Thibault
                            secondary: >-
                              Brosse a dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_thibault_time',)}}
                              s{% else %}Etat : {{states(entity)}} %{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_thibault_battery',)}}
                              %

                              - {{states('counter.brossage_thibault')}}
                              brossage{% if states('counter.brossage_thibault')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_thibault_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Louise
                            secondary: >-
                              Brosse à dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_louise_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_louise_battery',)}}
                              %

                              - {{states('counter.brossage_louise')}} brossage{%
                              if states('counter.brossage_louise') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_louise_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Justine
                            secondary: >-
                              Brosse a dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_justine_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_justine_battery',)}}
                              %

                              - {{states('counter.brossage_justine')}}
                              brossage{% if states('counter.brossage_justine')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_justine_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.jeanne_echo_dot
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo salle de bain
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.jeanne_echo_dot
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.jeanne_echo_dot
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - name: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: Playlist Top Doudou
                                - 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: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: >-
                                    Playlist Top Doudou 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:home-assistant
            icon_color: >
              {% if is_state(entity, 'on') %}
                light-blue
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                light-blue
              {% elif states('sensor.hacs') >= '1' %}
                orange
              {% else %}  
                grey
              {% endif %}
            primary: Home assistant
            secondary: >-
              RAM{{ states('sensor.memory_use_percent')|int }}% CPU{{
              states('sensor.processor_use') }}%
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/systeme
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/systeme
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state(entity, 'on') %}
                mdi:arrow-up
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                mdi:arrow-up
              {% elif states('sensor.hacs') >= '1' %}
                mdi:arrow-up
              {% else %}  
                none
              {% endif %}
            badge_color: >+
              {% if is_state(entity, 'on') %}
                green
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                green
              {% elif states('sensor.hacs') >= '1' %}
                green
              {% else %}  
                none
              {% endif %}

            entity: update.home_assistant_core_update
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Etat des piles
                      content:
                        type: custom:auto-entities
                        card:
                          type: custom:bar-card
                          title_position: inside
                          height: 38
                          positions:
                            icon: none
                            indicator: inside
                            name: inside
                            value: inside
                          show_icon: true
                          align: split
                          columns: '1'
                          max: 100
                          unit_of_measurement: '%'
                          severity:
                            - color: '#d11e1e'
                              to: '5'
                              from: '0'
                            - color: '#cf2d11'
                              from: '6'
                              to: '10'
                            - color: '#cc3900'
                              from: '11'
                              to: '15'
                            - color: '#c84400'
                              from: '16'
                              to: '20'
                            - color: '#c44d00'
                              from: '21'
                              to: '25'
                            - color: '#bf5600'
                              from: '26'
                              to: '30'
                            - color: '#b95f00'
                              from: '31'
                              to: '35'
                            - color: '#b36600'
                              from: '36'
                              to: '40'
                            - color: '#ac6e00'
                              from: '41'
                              to: '45'
                            - color: '#a57500'
                              from: '46'
                              to: '50'
                            - color: '#9d7b00'
                              from: '51'
                              to: '55'
                            - color: '#948100'
                              from: '56'
                              to: '60'
                            - color: '#8b8700'
                              from: '61'
                              to: '65'
                            - color: '#818d00'
                              from: '66'
                              to: '70'
                            - color: '#769200'
                              from: '71'
                              to: '75'
                            - color: '#6a9700'
                              from: '76'
                              to: '80'
                            - color: '#5d9c00'
                              from: '81'
                              to: '85'
                            - color: '#4da100'
                              from: '86'
                              to: '90'
                            - color: '#39a500'
                              from: '91'
                              to: '95'
                            - color: '#15a911'
                              from: '96'
                              to: '100'
                        filter:
                          exclude:
                            - entity_id: ^sensor.brosse*$
                            - entity_id: ^sensor.huawei*$
                            - entity_id: ^sensor.ipad*$
                            - entity_id: ^sensor.moto*$
                            - entity_id: ^sensor.pc*$
                            - entity_id: ^sensor.smart*$
                            - entity_id: ^sensor.tablette*$
                            - entity_id: ^sensor.roomba*$
                          include:
                            - entity_id: ^sensor.*_battery_level$
                            - entity_id: ^sensor.*_battery$
                            - entity_id: ^sensor.*_batt$
                            - entity_id: ^sensor.*_battery_charge$
                        sort:
                          method: state
                          numeric: true
                        show_empty: false
                icon: mdi:battery
                hold_action:
                  action: none
                icon_color: grey
                double_tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:mushroom-template-card
        primary: Securité
        secondary: |
          {% set all = expand(entity)| list -%}
          {% set ND1 = all | selectattr('state','eq','off')|list|count%}
          {% set D1 = all | selectattr('state','eq','on')|list|count%}
          {% set all2 = expand('binary_sensor.ouverture')| list -%}
          {% set ND2 = all2 | selectattr('state','eq','off')|list|count%}
          {% set D2 = all2 | selectattr('state','eq','on')|list|count%}
          Présence: {{D1}} / {{D1+ND1}}
          Ouvertures : {{D2}} / {{D2+ND2}}
        icon: |
          {% if is_state(entity, 'on') %} 
            mdi:motion-sensor
          {% elif is_state('binary_sensor.ouverture', 'on') %} 
            mdi:door-open
          {% else %}
            mdi:thumb-up
          {% endif %}
        icon_color: |
          {% if is_state(entity,'on') %}
            red
          {% elif is_state('binary_sensor.ouverture', 'on') %} 
            red
          {% else %}
            green
          {% endif %}
        badge_icon: |-
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','on')|list|count%}
          {% set all2 = expand('binary_sensor.ouverture')| list -%} 
          {% set open2 = all2 | selectattr('state','eq','on')|list|count%}
          {% if open1+open2 <= 9 %}
            mdi:numeric-{{open1+open2}}
          {% elif open1+open2 >= 10 %}
            mdi:numeric-9-plus
          {% else %}
            none
          {% endif %}
        badge_color: |
          {% set all = expand(entity)| list -%} 
          {% set open1 = all | selectattr('state','eq','on')|list|count%}
          {% set all2 = expand('binary_sensor.ouverture')| list -%} 
          {% set open2 = all2 | selectattr('state','eq','on')|list|count%}
          {% if open1+open2 == 0 %}
            green
          {% else %}
            red
          {% endif %}
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/securite
        layout: horizontal
        multiline_secondary: true
        entity: binary_sensor.presence
        fill_container: false
      - type: custom:mushroom-template-card
        primary: >-
          Tarif

          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            HP Bleu
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            HC Bleu
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            HP Blanc
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            HC Blanc
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            HP Rouge
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            HC Rouge
          {% else %}
            Inconnu
          {% endif %}
        secondary: |-
          P: {{ states('sensor.0x00158d0005007002_papp')}} VA
          Demain : {{ states('input_text.couleur_demain')}}
        multiline_secondary: true
        icon: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
           mdi:flash
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            mdi:flash 
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            mdi:flash-outline 
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            mdi:flash-outline
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            mdi:flash-alert
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            mdi:flash-alert
          {% else %}
            mdi:lightning-bolt
          {% endif %}
        icon_color: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            light-blue
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            light-blue
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            grey
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            grey
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            red
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            red
          {% else %}
            orange
          {% endif %}
        badge_icon: mdi:currency-eur
        badge_color: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            orange
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            red
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            green
          {% else %}
            orange
          {% endif %}
        entity: sensor.0x00158d0005007002_active_register_tier_delivered
        layout: horizontal
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/electricite
    view_layout:
      position: main

Dans les deux cas, tout le dashboard est regroupé en une grosse carte pour maitriser l’affichage (je ne me fait pas au placement « aléatoire » des tuiles…)

Version tablette:

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

          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            HP Bleu
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            HC Bleu
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            HP Blanc
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            HC Blanc
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            HP Rouge
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            HC Rouge
          {% else %}
            Inconnu
          {% endif %}
        secondary: |-
          P: {{ states('sensor.0x00158d0005007002_papp')}} VA
          Demain : {{ states('input_text.couleur_demain')}}
        multiline_secondary: true
        icon: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
           mdi:flash
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            mdi:flash 
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            mdi:flash-outline 
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            mdi:flash-outline
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            mdi:flash-alert
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            mdi:flash-alert
          {% else %}
            mdi:lightning-bolt
          {% endif %}
        icon_color: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            light-blue
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            light-blue
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            grey
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            grey
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            red
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            red
          {% else %}
            orange
          {% endif %}
        badge_icon: mdi:currency-eur
        badge_color: >-
          {% if
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJB') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJB') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJW') %} 
            orange
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJW') %} 
            green
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HPJR') %} 
            red
          {% elif
          is_state('sensor.0x00158d0005007002_active_register_tier_delivered',
          'HCJR') %} 
            green
          {% else %}
            orange
          {% endif %}
        entity: sensor.0x00158d0005007002_active_register_tier_delivered
        layout: horizontal
        tap_action:
          action: navigate
          navigation_path: /lovelace-smartphone/electricite
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_salon
            icon: mdi:sofa
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Salon
            secondary: '{{ states(''sensor.echo_jeanne_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salon
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salon
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: plant.alocatia
                icon: mdi:flower
                icon_color: |-
                  {% 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:mod-card
                        card:
                          type: custom:flower-card
                          entity: plant.alocatia
                          show_bars:
                            - moisture
                            - temperature
                            - illuminance
                            - conductivity
                          battery_sensor: sensor.alocasia_zebrina_battery
              - type: template
                entity: media_player.echo_jeanne
                icon: mdi:play-pause
                icon_color: |-
                  {% 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.salon
                hold_action:
                  action: toggle
                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
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.0x84ba20fffe4b2581
                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
                          - type: custom:mushroom-light-card
                            entity: light.prise_tradfri
                            use_light_color: false
                            show_brightness_control: false
                            show_color_temp_control: false
                            show_color_control: false
                            collapsible_controls: true
                            tap_action:
                              action: toggle
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:countertop
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Cuisine
            secondary: '{{ states(''sensor.echo_dot_cuisine_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/cuisine
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/cuisine
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_cuisine_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_cuisine_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
            entity: light.led_cuisine
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: media_player.echo_dot_jeanne
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo dot cuisine
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_jeanne
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_jeanne
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - name: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: Playlist Top Doudou
                                - 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: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: >-
                                    Playlist Top Doudou 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_cuisine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volet Cuisine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_cuisine
                            name: Volet cuisine
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_cuisine
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières cuisine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_cuisine
                            name: LED cuisine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
                double_tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.ampoule_bureau
            icon: mdi:desk
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Bureau
            secondary: ...
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/imprimante
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/imprimante
            hold_action:
              action: toggle
            badge_icon: >
              {% if
              is_state('binary_sensor.detecteur_presence_bureau_occupancy',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if
              is_state('binary_sensor.detecteur_presence_bureau_occupancy',
              'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                icon: mdi:water
                icon_color: |-
                  {% if is_state(entity, 'printing') %} 
                   green
                  {% elif is_state(entity, 'stopped') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Imprimante
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520
                            name: Etat
                            layout: vertical
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520_black
                            name: Cartouche Noir
                            layout: vertical
                            icon_color: black
                          - type: custom:mushroom-entity-card
                            entity: sensor.imprimante_bureau_canonmx520_color
                            name: Cartouche couleur
                            layout: vertical
                entity: sensor.imprimante_bureau_canonmx520
              - type: template
                entity: cover.volet_du_bureau
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volet Bureau
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_du_bureau
                            name: Volet bureau
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                hold_action:
                  action: toggle
              - type: template
                entity: light.ampoule_bureau
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières bureau
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.ampoule_bureau
                            name: Plafonnier Bureau
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_escalier
            icon: mdi:stairs
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Escalier
            secondary: '{{ states(''sensor.pac_room_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/escalier
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/escalier
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state('binary_sensor.0x00124b00246e9df7_occupancy', 'on')
              %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if is_state('binary_sensor.0x00124b00246e9df7_occupancy', 'on')
              %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: climate.pac
                icon: >-
                  {% if is_state(entity, 'heat') %} 

                  mdi:fire

                  {% elif is_state(entity, 'cool') %} 

                  mdi:snowflake

                  {% elif is_state('input_boolean.saison_chauffage', 'on') %} 

                  mdi:fire

                  {% elif is_state('input_boolean.saison_climatistion', 'on')
                  %} 

                  mdi:snowflake

                  {% else %}

                  mdi:fan

                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: PAC etage
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-chips-card
                            chips:
                              - type: template
                                entity: input_boolean.chauffage_mode_auto
                                icon: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 
                                   mdi:cog-refresh
                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 
                                    mdi:cog-off
                                  {% else %}
                                    mdi:comment-question
                                  {% endif %}
                                icon_color: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 

                                  green

                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 

                                  red

                                  {% else %}

                                  orange

                                  {% endif %}
                                content: >-
                                  {% if
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'on') %} 

                                  Mode général: Auto

                                  {% elif
                                  is_state('input_boolean.chauffage_mode_auto',
                                  'off') %} 

                                  Mode général: Manuel

                                  {% else %}

                                  Inconnu

                                  {% endif %}
                                tap_action:
                                  action: toggle
                                hold_action:
                                  action: more-info
                              - type: template
                                entity: input_boolean.pac_override_temporaire
                                icon: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   mdi:cog-pause
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                    mdi:cog-refresh
                                  {% else %}
                                    mdi:comment-question
                                  {% endif %}
                                icon_color: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   orange
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                    green
                                  {% else %}
                                    orange
                                  {% endif %}
                                content: >-
                                  {% if
                                  is_state('input_boolean.pac_override_temporaire',
                                  'on') %} 
                                   Mode temporaire: Manuel
                                  {% elif
                                  is_state('input_boolean.pac_override_temporaire',
                                  'off') %} 
                                   Mode temporaire: Auto
                                  {% else %}
                                    Inconnu
                                  {% endif %}
                              - type: conditional
                                conditions:
                                  - entity: input_boolean.saison_chauffage
                                    state: 'on'
                                chip:
                                  type: template
                                  double_tap_action:
                                    action: more-info
                                  entity: schedule.planning_chauffage
                                  icon: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     mdi:fire
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      mdi:fire-off
                                    {% else %}
                                      mdi:comment-question
                                    {% endif %}
                                  icon_color: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     yellow
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      grey
                                    {% else %}
                                      orange
                                    {% endif %}
                                  content: >-
                                    {% if
                                    is_state('schedule.planning_chauffage',
                                    'on') %} 
                                     Cible mode auto: confort
                                    {% elif
                                    is_state('schedule.planning_chauffage',
                                    'off') %} 
                                      Cible mode auto: off
                                    {% else %}
                                      Inconnu
                                    {% endif %}
                                  tap_action:
                                    action: more-info
                                  hold_action:
                                    action: more-info
                              - type: conditional
                                conditions:
                                  - entity: input_boolean.saison_climatistion
                                    state: 'on'
                                chip:
                                  type: template
                                  entity: schedule.planning_climatisation
                                  icon: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     mdi:snowflake
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      mdi:snowflake-off
                                    {% else %}
                                      mdi:comment-question
                                    {% endif %}
                                  icon_color: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     light-blue
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      grey
                                    {% else %}
                                      orange
                                    {% endif %}
                                  content: >-
                                    {% if
                                    is_state('schedule.planning_climatisation',
                                    'on') %} 
                                     Cible mode auto: confort
                                    {% elif
                                    is_state('schedule.planning_climatisation',
                                    'off') %} 
                                      Cible mode auto: off
                                    {% else %}
                                      Inconnu
                                    {% endif %}
                              - type: entity
                                entity: input_boolean.tarif_rouge
                                icon_color: red
                                content_info: name
                              - type: action
                                icon_color: red
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.allumer_chauffage
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:fire
                              - type: action
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.allumer_climatisation
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:snowflake
                                icon_color: light-blue
                              - type: action
                                tap_action:
                                  action: none
                                hold_action:
                                  action: call-service
                                  service: script.eteindre_pac
                                  target: {}
                                double_tap_action:
                                  action: none
                                icon: mdi:stop-circle-outline
                                icon_color: red
                            alignment: start
                          - type: thermostat
                            entity: climate.pac
                icon_color: |-
                  {% if is_state(entity, 'heat') %} 
                  orange
                  {% elif is_state(entity, 'cool') %} 
                  blue
                  {% elif is_state(entity, 'off') %} 
                  grey
                  {% else %}
                    grey
                  {% endif %}
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/gestion-pac-gainable
                double_tap_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/gestion-pac-gainable
              - type: template
                entity: vacuum.roomba
                icon: |-
                  {% if is_state(entity, 'cleaning') %} 
                   mdi:robot-vacuum
                  {% elif is_state(entity, 'docked') %} 
                   mdi:robot-vacuum
                  {% else %}
                   mdi:robot-vacuum-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'cleaning') %} 
                   blue
                  {% elif is_state(entity, 'docked') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Roomba
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-vacuum-card
                            entity: vacuum.roomba
                            commands:
                              - start_pause
                              - stop
                              - locate
                              - return_home
              - type: template
                entity: cover.volet_de_la_mezzanine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets Escalier
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_mezzanine
                            name: Volet Mezzanine
                            show_position_control: true
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: group.lumieres_escalier
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Escalier
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.0x385b44fffe20eb24
                            name: Sous escalier
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: false
                          - type: custom:mushroom-light-card
                            entity: light.0x84b4dbfffec93621
                            name: Mezzanine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:washing-machine
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% elif is_state('input_boolean.sechage_en_cours', 'on') %} 
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Cellier
            secondary: >-
              {% if is_state(entity, 'on') %} lavage {% endif %}

              {% if is_state('input_boolean.sechage_en_cours', 'on') %} sechage
              {% endif %}

              {% if is_state(entity, 'on') %} en cours {% elif
              is_state('input_boolean.sechage_en_cours', 'on') %} en cours {%
              endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: none
            badge_icon: |+

            badge_color: |+

            entity: input_boolean.machine_en_cour
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: binary_sensor.0x00124b0028941c36_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:door-open
                  {% elif is_state(entity, 'off') %} 
                   mdi:door-closed
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: input_boolean.machine_en_cour
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:washing-machine
                  {% elif is_state(entity, 'off') %} 
                   mdi:washing-machine-off
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   green
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                double_tap_action:
                  action: none
                tap_action:
                  action: none
              - type: template
                entity: input_boolean.sechage_en_cours
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:tumble-dryer
                  {% elif is_state(entity, 'off') %} 
                   mdi:tumble-dryer-off
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   green
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_thibault
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Thibault
            secondary: >-
              Ce jour:{% if
              states('sensor.pronote_b_thibault_timetable_today') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_b_thibault_timetable_today','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_b_thibault_timetable_today','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %} /
              Demain:{% if
              states('sensor.pronote_b_thibault_timetable_tomorrow') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_bthibault_timetable_tomorrow','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_b_thibault_timetable_tomorrow','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres thibault
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/pronote
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_thibault_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_thibault_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
            multiline_secondary: false
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_thibault
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse a dent de Thibault
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_thibault_time',)}}
                              s{% else %}Etat : {{states(entity)}} %{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_thibault_battery',)}}
                              %

                              {{states('counter.brossage_thibault')}} brossage{%
                              if states('counter.brossage_thibault') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_thibault_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_thibault', '0')
                              %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_thibault', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_thibault', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_thibault', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_thibault', '0')
                              %}
                                red
                              {% elif is_state('counter.brossage_thibault', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_thibault', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_thibault', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_thibault
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Thibault
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_thibault
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_thibault
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_thibault
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_thibault
                            name: Volet Thibault
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_thibault
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Thibault
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_thibault
                            name: LED Thibault
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_louise
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Louise
            secondary: >-
              Ce jour:{% if
              states('sensor.pronote_b_louise_timetable_today') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_b_louise_timetable_today','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_b_louise_timetable_today','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours{% endif %} / Demain:{%
              if states('sensor.pronote_b_louise_timetable_tomorrow') !=
              'unavailable' %} {{
              state_attr('sensor.pronote_b_louise_timetable_tomorrow','day_start_at').strftime('%H:%M')}}{%
              if
              state_attr('sensor.pronote_b_louise_timetable_tomorrow','canceled_lessons_counter')
              >= 1 %} /!\{% endif %} {% else %} pas cours {% endif %}
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Louise
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/pronote
            hold_action:
              action: toggle
            badge_icon: |
              {% if is_state('binary_sensor.echo_louise_mouvement', 'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_louise_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_louise
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse de Louise
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_louise_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_louise_battery',)}}
                              %

                              {{states('counter.brossage_louise')}} brossage{%
                              if states('counter.brossage_louise') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_louise_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_louise', '0') %}
                                red
                              {% elif is_state('counter.brossage_louise', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_louise', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_louise', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_louise', '0') %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_louise', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_louise', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_louise', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_louise
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Louise
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_louise
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_louise
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_louise
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_louise
                            name: Volet Louise
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_louise
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Louise
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_louise
                            name: LED Louise
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.led_justine
            icon: mdi:bed
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Justine
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Justine
            double_tap_action:
              action: navigate
              navigation_path: /smartphone-enfants/chambres Justine
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state('binary_sensor.echo_justine_mouvement_mouvement',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: |
              {% if is_state('binary_sensor.echo_justine_mouvement', 'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: counter.brossage_justine
                icon: |-
                  {% if is_state(entity, '0') %}
                    mdi:numeric-0
                  {% elif is_state(entity, '1') %}
                    mdi:numeric-1
                  {% elif is_state(entity, '2') %}
                    mdi:numeric-2
                  {% elif is_state(entity, '3') %}
                    mdi:numeric-3
                  {% else %}
                    mdi:chat-question
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, '0') %}
                    red
                  {% elif is_state(entity, '1') %}
                    orange
                  {% elif is_state(entity, '2') %}
                    green
                  {% elif is_state(entity, '3') %}
                    green
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosse a dent de Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Brosse a dent de Justine
                            secondary: >-
                              {% if is_state(entity, 'running') %}Brosse depuis
                              {{states('sensor.brosse_a_dent_justine_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              Batterie :
                              {{states('sensor.brosse_a_dent_justine_battery',)}}
                              %

                              {{states('counter.brossage_justine')}} brossage{%
                              if states('counter.brossage_justine') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_justine_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if is_state('counter.brossage_justine', '0') %}
                                red
                              {% elif is_state('counter.brossage_justine', '1')
                              %}
                                orange
                              {% elif is_state('counter.brossage_justine', '2')
                              %}
                                green
                              {% elif is_state('counter.brossage_justine', '3')
                              %}
                                green
                              {% else %}
                                grey
                              {% endif %}
                            badge_icon: >-
                              {% if is_state('counter.brossage_justine', '0') %}
                                mdi:numeric-0
                              {% elif is_state('counter.brossage_justine', '1')
                              %}
                                mdi:numeric-1
                              {% elif is_state('counter.brossage_justine', '2')
                              %}
                                mdi:numeric-2
                              {% elif is_state('counter.brossage_justine', '3')
                              %}
                                mdi:numeric-3
                              {% else %}
                                mdi:chat-question
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.echo_dot_justine
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo Justine
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.echo_dot_justine
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.echo_dot_justine
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - 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: Aldebert
                                  type: custom
                                  id: joue du Aldebert
                                - name: Louane
                                  type: custom
                                  id: joue du Louane
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
              - type: template
                entity: cover.volet_de_la_chambre_de_justine
                hold_action:
                  action: toggle
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Volets de Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-cover-card
                            entity: cover.volet_de_la_chambre_de_justine
                            name: Volet Justine
                            show_position_control: false
                            show_tilt_position_control: false
                            show_buttons_control: true
                icon: |-
                  {% if is_state(entity, 'open') %} 
                   mdi:window-shutter-open
                  {% elif is_state(entity, 'closed') %} 
                   mdi:window-shutter
                  {% else %}
                   mdi:window-shutter-alert
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'open') %} 
                   grey
                  {% elif is_state(entity, 'closed') %} 
                   grey
                  {% else %}
                   orange
                  {% endif %}
              - type: template
                entity: light.led_justine
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières Justine
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.led_justine
                            name: LED Justine
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: true
                            collapsible_controls: false
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: media_player.jeanne_echo_dot
            icon: mdi:bathtub
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Bain
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salles-de-bains
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/salles-de-bains
            hold_action:
              action: toggle
            badge_icon: |+

            badge_color: |+


          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: input_boolean.alerte_brossage
                icon: mdi:toothbrush-electric
                icon_color: |-
                  {% if states(entity) == 'on' %}
                    orange
                  {% else %}
                    grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Brosses à dent
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-template-card
                            primary: Bernard
                            secondary: >-
                              Brosse à dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_bernard_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_bernard_battery',)}}
                              %

                              - {{states('counter.brossage_bernard')}}
                              brossage{% if states('counter.brossage_bernard')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_bernard_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_bernard_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Thibault
                            secondary: >-
                              Brosse a dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_thibault_time',)}}
                              s{% else %}Etat : {{states(entity)}} %{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_thibault_battery',)}}
                              %

                              - {{states('counter.brossage_thibault')}}
                              brossage{% if states('counter.brossage_thibault')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_thibault_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_thibault_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Louise
                            secondary: >-
                              Brosse à dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_louise_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_louise_battery',)}}
                              %

                              - {{states('counter.brossage_louise')}} brossage{%
                              if states('counter.brossage_louise') >= '2'%}s{%
                              endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_louise_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_louise_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
                          - type: custom:mushroom-template-card
                            primary: Justine
                            secondary: >-
                              Brosse a dent:

                              - {% if is_state(entity, 'running') %}Brosse
                              depuis
                              {{states('sensor.brosse_a_dent_justine_time',)}}
                              s{% else %}Etat : {{states(entity)}}{% endif %}

                              - Batterie :
                              {{states('sensor.brosse_a_dent_justine_battery',)}}
                              %

                              - {{states('counter.brossage_justine')}}
                              brossage{% if states('counter.brossage_justine')
                              >= '2'%}s{% endif %}
                            icon: |-
                              {% if is_state(entity, 'running') %} 
                              mdi:toothbrush-electric
                              {% else %}
                                mdi:toothbrush-electric
                              {% endif %}
                            entity: sensor.brosse_a_dent_justine_toothbrush_state
                            icon_color: |-
                              {% if is_state(entity, 'running') %} 
                                green
                              {% else %}
                                blue
                              {% endif %}
                            badge_color: >-
                              {% if
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-75
                              %}
                                green
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-95
                              %}
                                light-green
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-125
                              %}
                                orange
                              {% else %}
                                red
                              {% endif %}
                            badge_icon: >-
                              {% if
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-75
                              %}
                                mdi:signal-cellular-3
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-95
                              %}
                                mdi:signal-cellular-2
                              {% elif
                              states('sensor.brosse_a_dent_justine_signal_strength',)|int>=-125
                              %}
                                mdi:signal-cellular-1
                              {% else %}
                                mdi:signal-cellular-outline
                              {% endif %}
                            tap_action:
                              action: more-info
                            multiline_secondary: true
              - type: template
                entity: media_player.jeanne_echo_dot
                icon: mdi:play-pause
                icon_color: |-
                  {% if is_state(entity, 'playing') %} 
                    #03A9F4
                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Echo salle de bain
                      content:
                        type: custom:stack-in-card
                        cards:
                          - type: custom:mini-media-player
                            entity: media_player.jeanne_echo_dot
                            source: full
                            volume_stateless: false
                            group: true
                            artwork: full-cover
                            tts:
                              platform: alexa
                              entity_id: media_player.jeanne_echo_dot
                              type: announce
                            shortcuts:
                              hide_when_off: true
                              columns: 3
                              buttons:
                                - name: Playlist Jeanne
                                  type: AMAZON_MUSIC
                                  id: Playlist Jeanne
                                - name: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: Playlist Top Doudou
                                - 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: Playlist Top Doudou
                                  type: AMAZON_MUSIC
                                  id: >-
                                    Playlist Top Doudou 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
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/echo
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: light.inter_lumiere_garage
            icon: mdi:tools
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Garage
            secondary: ..
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: toggle
            badge_icon: >
              {% if
              is_state('binary_sensor.detecteur_presence_garage_occupancy',
              'on') %}
                mdi:motion-sensor
              {% else %}  
                mdi:motion-sensor-off
              {% endif %}
            badge_color: >
              {% if
              is_state('binary_sensor.detecteur_presence_garage_occupancy',
              'on') %}
                orange
              {% else %}  
                grey
              {% endif %}
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                entity: binary_sensor.0x00124b0028943f14_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:garage-open-variant
                  {% elif is_state(entity, 'off') %} 
                   mdi:garage-variant
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: binary_sensor.0x00124b0028941c36_contact
                icon: |-
                  {% if is_state(entity, 'on') %} 
                   mdi:door-open
                  {% elif is_state(entity, 'off') %} 
                   mdi:door-closed
                  {% endif %}
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   red
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% endif %}
                tap_action:
                  action: none
              - type: template
                entity: light.inter_lumiere_garage
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières garage
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_garage
                            name: lumière garage
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% elif is_state(entity, 'off') %} 
                   grey
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            entity: group.lumieres_jardin
            icon: mdi:tree
            icon_color: |
              {% if is_state(entity, 'on') %}
                #03A9F4
              {% else %}  
                grey
              {% endif %}
            primary: Jardin
            secondary: '{{states(''sensor.tournefeuille_temperature'') }}°C'
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/jardin
            hold_action:
              action: toggle
            badge_icon: |+

            badge_color: |+


          - type: custom:mushroom-chips-card
            chips:
              - type: weather
                entity: weather.tournefeuille
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Météo
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:meteofrance-weather-card
                            entity: weather.tournefeuille
                            number_of_forecasts: '3'
                            details: true
                            current: true
                            one_hour_forecast: true
                            alert_forecast: true
                            rainForecastEntity: sensor.tournefeuille_next_rain
                            rainChanceEntity: sensor.tournefeuille_rain_chance
                            uvEntity: sensor.tournefeuille_uv
                            cloudCoverEntity: sensor.tournefeuille_cloud_cover
                            freezeChanceEntity: sensor.tournefeuille_freeze_chance
                            snowChanceEntity: sensor.tournefeuille_snow_chance
                            alertEntity: sensor.31_weather_alert
                hold_action:
                  action: navigate
                  navigation_path: /lovelace-smartphone/meteo
              - type: template
                entity: sensor.pollens_31_risklevel
                icon: mdi:flower-pollen
                hold_action:
                  action: toggle
                icon_color: >-
                  {% if is_state(entity, '2') %} 
                   orange
                  {% elif is_state(entity, '3') %} 
                   red
                  {% elif
                  is_state('sensor.pollens_31_ambroisies',['00','2','3']) %} 

                  red

                  {% elif is_state('sensor.pollens_31_armoise',['1','2','3'])
                  %} 

                  red

                  {% else %}
                   grey
                  {% endif %}
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Pollens
                      content:
                        type: vertical-stack
                        cards:
                          - type: horizontal-stack
                            cards:
                              - type: custom:mushroom-template-card
                                primary: Haute Garonne
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:flower-pollen
                                  {% else %}
                                    mdi:flower-pollen-outline
                                  {% endif %}
                                entity: sensor.pollens_31_risklevel
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                              - type: custom:mushroom-template-card
                                primary: Ambroisie
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:grass
                                  {% else %}
                                    mdi:grass
                                  {% endif %}
                                entity: sensor.pollens_31_ambroisies
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                              - type: custom:mushroom-template-card
                                primary: Armoise
                                secondary: 'Risque: {{ states(entity)}}'
                                icon: |-
                                  {% if is_state(entity, '3') %} 
                                    mdi:grass
                                  {% else %}
                                    mdi:grass
                                  {% endif %}
                                entity: sensor.pollens_31_armoise
                                icon_color: |
                                  {% if is_state(entity, '0') %} 
                                    green
                                  {% elif is_state(entity, '1') %} 
                                    yellow
                                  {% elif is_state(entity, '2') %} 
                                    orange
                                  {% elif is_state(entity, '3') %} 
                                    red
                                  {% else %}
                                    grey
                                  {% endif %}
                          - type: custom:auto-entities
                            filter:
                              include: null
                              template: |
                                {%  set ALTNAME = 'd'-%} 
                                {% for state in states.sensor -%}
                                  {%- if state.entity_id | regex_match('sensor.pollens_31_',ignorecase=False) -%}
                                  {%- set NAME = state_attr(state.entity_id,"pollen_name") -%}
                                    {{
                                      { 'entity': state.entity_id,
                                        'name': NAME,
                                      } }},
                                  {%- endif -%}
                                {%- endfor %}
                              exclude:
                                - state: <1
                                - entity_id: sensor.pollens_31_risklevel
                            sort:
                              numeric: true
                              reverse: true
                              method: state
                            card:
                              type: custom:bar-card
                              title: Pollens en alerte dans le 31
                              min: 0
                              max: 3
                              positions:
                                name: outside
                              width: 70%
                              style: |-
                                bar-card-value {
                                  margin-right: 5px;
                                  font-size: 15px;
                                  font-weight: bold;
                                  text-shadow: 1px 1px #000000;
                                }
                              severity:
                                - color: grey
                                  from: 0
                                  to: 0
                                - color: yellow
                                  from: 1
                                  to: 1
                                - color: orange
                                  from: 2
                                  to: 2
                                - color: red
                                  from: 3
                                  to: 3
              - type: template
                entity: light.inter_lumiere_terrasse
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Lumières jardin
                      content:
                        type: vertical-stack
                        cards:
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_terrasse
                            name: Terrasse
                            use_light_color: true
                            show_brightness_control: true
                            show_color_temp_control: true
                            show_color_control: false
                            collapsible_controls: true
                          - type: custom:mushroom-light-card
                            entity: light.inter_lumiere_piscine
                            name: Piscine
                            use_light_color: false
                            show_brightness_control: false
                            show_color_temp_control: false
                            show_color_control: false
                            collapsible_controls: true
                icon: mdi:lightbulb
                hold_action:
                  action: toggle
                icon_color: |-
                  {% if is_state(entity, 'on') %} 
                   orange
                  {% else %}
                   grey
                  {% endif %}
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
      - type: custom:vertical-stack-in-card
        cards:
          - type: custom:mushroom-template-card
            icon: mdi:home-assistant
            icon_color: >
              {% if is_state(entity, 'on') %}
                light-blue
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                light-blue
              {% elif states('sensor.hacs') >= '1' %}
                orange
              {% else %}  
                grey
              {% endif %}
            primary: Home assistant
            secondary: >-
              RAM{{ states('sensor.memory_use_percent')|int }}% CPU{{
              states('sensor.processor_use') }}%
            layout: horizontal
            tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/systeme
            double_tap_action:
              action: navigate
              navigation_path: /lovelace-smartphone/systeme
            hold_action:
              action: toggle
            badge_icon: >
              {% if is_state(entity, 'on') %}
                mdi:arrow-up
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                mdi:arrow-up
              {% elif states('sensor.hacs') >= '1' %}
                mdi:arrow-up
              {% else %}  
                none
              {% endif %}
            badge_color: >+
              {% if is_state(entity, 'on') %}
                green
              {% elif is_state('update.home_assistant_operating_system_update',
              'on') %}
                green
              {% elif states('sensor.hacs') >= '1' %}
                green
              {% else %}  
                none
              {% endif %}

            entity: update.home_assistant_core_update
          - type: custom:mushroom-chips-card
            chips:
              - type: template
                tap_action:
                  action: fire-dom-event
                  browser_mod:
                    service: browser_mod.popup
                    data:
                      title: Etat des piles
                      content:
                        type: custom:auto-entities
                        card:
                          type: custom:bar-card
                          title_position: inside
                          height: 38
                          positions:
                            icon: none
                            indicator: inside
                            name: inside
                            value: inside
                          show_icon: true
                          align: split
                          columns: '1'
                          max: 100
                          unit_of_measurement: '%'
                          severity:
                            - color: '#d11e1e'
                              to: '5'
                              from: '0'
                            - color: '#cf2d11'
                              from: '6'
                              to: '10'
                            - color: '#cc3900'
                              from: '11'
                              to: '15'
                            - color: '#c84400'
                              from: '16'
                              to: '20'
                            - color: '#c44d00'
                              from: '21'
                              to: '25'
                            - color: '#bf5600'
                              from: '26'
                              to: '30'
                            - color: '#b95f00'
                              from: '31'
                              to: '35'
                            - color: '#b36600'
                              from: '36'
                              to: '40'
                            - color: '#ac6e00'
                              from: '41'
                              to: '45'
                            - color: '#a57500'
                              from: '46'
                              to: '50'
                            - color: '#9d7b00'
                              from: '51'
                              to: '55'
                            - color: '#948100'
                              from: '56'
                              to: '60'
                            - color: '#8b8700'
                              from: '61'
                              to: '65'
                            - color: '#818d00'
                              from: '66'
                              to: '70'
                            - color: '#769200'
                              from: '71'
                              to: '75'
                            - color: '#6a9700'
                              from: '76'
                              to: '80'
                            - color: '#5d9c00'
                              from: '81'
                              to: '85'
                            - color: '#4da100'
                              from: '86'
                              to: '90'
                            - color: '#39a500'
                              from: '91'
                              to: '95'
                            - color: '#15a911'
                              from: '96'
                              to: '100'
                        filter:
                          exclude:
                            - entity_id: ^sensor.brosse*$
                            - entity_id: ^sensor.huawei*$
                            - entity_id: ^sensor.ipad*$
                            - entity_id: ^sensor.moto*$
                            - entity_id: ^sensor.pc*$
                            - entity_id: ^sensor.smart*$
                            - entity_id: ^sensor.tablette*$
                            - entity_id: ^sensor.roomba*$
                          include:
                            - entity_id: ^sensor.*_battery_level$
                            - entity_id: ^sensor.*_battery$
                            - entity_id: ^sensor.*_batt$
                            - entity_id: ^sensor.*_battery_charge$
                        sort:
                          method: state
                          numeric: true
                        show_empty: false
                icon: mdi:battery
                hold_action:
                  action: none
                icon_color: grey
                double_tap_action:
                  action: none
            alignment: end
            card_mod:
              style:
                style: |
                  ha-card {
                    padding-top: 0px;
                    margin-top: -8px;
                    padding-bottom: 8px;
                    padding-left: 8px;
                    padding-right: 8px;
                  }
    view_layout:
      position: main

Salut BBE :wink:
Belle présentation.
Joli dashboard, bien structuré.
Merci pour le partage :smiley:
@+ Guy

Ma-gni-fique ! Bienvenue, tu va nous apprendre plein de trucs c’st cool :wink:

Il n’y a pas grand chose de bien compliqué, et j’ai acquis la plupart des compétences nécessaires en parcourant ce forum depuis 2 ans…

C’est un simple retour d’expérience, pour apporter moi aussi ma pierre à l’édifice.

J’essaierai de mettre à jour les post en haut avec des liens et des nouveautés le cas échéant.
Et peut être ajouter un truc sur quelques automatisations qui pourraient être utiles…

3 « J'aime »

Merci beaucoup pour le partage!

Merci pour ce post de qualité ! Pleins de bonnes idées !

Merci pour ce post très complet. Ca faisait un bon moment que je cherchais une carte complète pour mes températures avec humidité et batterie. Volets et lumière en plus le top.
Du coup, j’ai fait ceci, à voir si j’utilise mais ca va beaucoup m’aider pour mes autres mushroom.
S’adapte très bien sur PC et smartphone, je fonctionne avec le même dashboard pour les 2 en 1 seule colonne.

Bienvenue sur HACF :wink:

belle présentation

Bon je vous ai rajouté quelques automatisations pour la route…

SI ça peut servir… ce ne sera qu’un tout petit retour après tout ce que le forum m’aura permis de faire en si peu de temps !

1 « J'aime »

Top!
Serait-il possible de partager ta carte stp?
Merci d’avance

Tu peux déjà partir de ça donné plus haut et adapter :

Variante Carré
Cette variante ci ressemble plus à la carte « minimalist ». C’était mon option préférée durant un bon moment:

image

Ici on utilise beaucoup Card Mod pour mettre en forme la carte, et je n’étais pas sur de la pérennité ni de la facilité à maintenir cette carte à long terme. Cependant, visuellement, ça marche très bien !
Finalement je suis revenu à quelque chose de plus proche de mushroom, à la fois visuellement, et aussi pour simplifier un peu le code (moins de card_mod), mais cette option mérite aussi qu’on s’y intéresse…

le code
type: custom:vertical-stack-in-card
cards:
  - type: custom:mushroom-template-card
    entity: group.lumieres_salon
    icon: mdi:sofa
    icon_color: |
      {% if is_state(entity, 'on') %}
        #03A9F4
      {% else %}  
        grey
      {% endif %}
    primary: Salon
    secondary: '{{ states(''sensor.echo_jeanne_temperature'') }}°C'
    layout: horizontal
    tap_action:
      action: navigate
      navigation_path: /lovelace-smartphone/salon
    double_tap_action:
      action: navigate
      navigation_path: /lovelace-smartphone/salon
    hold_action:
      action: toggle
    badge_icon: |
      {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
        mdi:motion-sensor
      {% else %}  
        mdi:motion-sensor-off
      {% endif %}
    badge_color: |
      {% if is_state('binary_sensor.echo_salon_mouvement', 'on') %}
        orange
      {% else %}  
        grey
      {% endif %}
    card_mod:
      style:
        mushroom-state-info$: |
          .primary {
            font-size: 16px !important;
            position: relative;
            top: -50px;
            left: -155px;
            overflow: visible !important;
            white-space: normal !important;
          }
          .secondary {
            position: relative;
            overflow: visible !important;
            top: -52px;
            left: -155px;
          }
        mushroom-shape-icon$: |
          .shape {
            position: relative;
            left: -43px;
            top: 55px;
          }
        .: |
          :host {
            --mush-icon-size: 146px;
          }
        style: |
          mushroom-badge-icon {
            left: 60px;
            top: 25px;
          }
  - type: custom:mushroom-chips-card
    chips:
      - type: template
        entity: light.0x84ba20fffe4b2581
        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
                  - type: custom:mushroom-light-card
                    entity: light.lampadaire
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
                  - type: custom:mushroom-light-card
                    entity: light.elephants
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
                  - type: custom:mushroom-light-card
                    entity: light.cerisier
                    use_light_color: false
                    show_brightness_control: false
                    show_color_temp_control: false
                    show_color_control: false
                    collapsible_controls: true
        icon: mdi:lightbulb
        hold_action:
          action: toggle
        icon_color: |-
          {% if is_state(entity, 'on') %} 
           orange
          {% elif is_state(entity, 'off') %} 
           grey
          {% else %}
           grey
          {% endif %}
      - type: template
        entity: cover.salon
        hold_action:
          action: toggle
        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
        icon: |-
          {% if is_state(entity, 'open') %} 
           mdi:window-shutter-open
          {% elif is_state(entity, 'closed') %} 
           mdi:window-shutter
          {% else %}
           mdi:window-shutter-alert
          {% endif %}
        icon_color: |-
          {% if is_state(entity, 'open') %} 
           grey
          {% elif is_state(entity, 'closed') %} 
           grey
          {% else %}
           orange
          {% endif %}
      - type: template
        entity: media_player.echo_jeanne
        icon: mdi:play-pause
        icon_color: |-
          {% 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
        hold_action:
          action: navigate
          navigation_path: /lovelace-smartphone/echo
      - type: template
        entity: plant.alocatia
        icon: mdi:flower
        icon_color: |-
          {% 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:mod-card
                card:
                  type: custom:flower-card
                  entity: plant.alocatia
                  show_bars:
                    - moisture
                    - temperature
                    - illuminance
                    - conductivity
                  battery_sensor: sensor.alocasia_zebrina_battery
    card_mod:
      style:
        .: |
          ha-card {
            width: 66px;
            margin-left: 80%;
            top: -170px;
            background: none;
            --chip-border-width: 0;
          }
card_mod:
  style: |
    ha-card {
      height: 178px ;

      margin-left: auto;
      margin-right: auto;
    }

[edit] pour @cedric1 , Jeffodilo a partagé son code sur sa présentation : Présentation Jeff - #8 par Jeffodilo

1 « J'aime »

Bonjour, je cherche désespérément utiliser flower-card mais je trouve pas cette intégration!!
peut tu me dire ou tu trouve le nécessaire pour tes plantes!!

Bonjour,
Google est ton ami avec 2s de recherche

A installer via hacs

2 « J'aime »