[Article] Sonoff NSPanel PRO

Tu n’as pas mis à jour le firmware du nspanel ? Le mode développeur est toujours actif ?

1 « J'aime »

Ah j’ai peut être mis à jour le firmware, il ne fallait pas?

Il faut réactiver le mode développeur du coup

Le mode developpeur est toujours activé

et l’adb aussi est tjs activé ?

Bonjour,

Je file mon NSPanel à un ami, comment retourner au choix du launcher pour qu’il configure son propre reseau wifi et son lien home assistant ?
Le hardreset me relance toujours HAOS, merci

Bonjour,
est ce quelqu’un à réussie à faire fonctionner le mqtt broker intégré, car j’aimerai bien utiliser le nspanel pro en tant que coordinateur zigbee et du coup éviter de mettre une clé zibgee sur mon serveur home assistant ?

Hello,
ce n’est pas encore possible, mais très prochainement si j’ai bien compris:

Du coup j’ai fais autrement, j’ai juste gardé le zigbee de mon sonoff panel pro et pour la partie mqtt j’ai installé mosquitto en container

voici ma page final du moins pour la gestion des volets.

Vue PC

Vue NSPanel

Code
type: sections
max_columns: 3
path: volets
subview: true
sections:
  - type: grid
    cards:
      - grid_options:
          columns: 3
          rows: 1
        show_name: false
        show_icon: true
        icon: mdi:backspace
        type: custom:button-card
        styles:
          icon:
            - width: 35%
          card:
            - padding: 10% 0%
            - margin: 6% 0% 0%
            - width: 100%
        tap_action:
          action: navigate
          navigation_path: /dashboard-nspanel1/accueil
      - variables:
          name: Salon
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  else if (states['input_text.selection_pieces'].state == "2 Volets") 
                    return "var(--paper-item-icon-color)";          
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: auto
      - variables:
          name: Cuisine
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
      - variables:
          name: Chambres
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
    column_span: 3
    visibility:
      - condition: screen
        media_query: "(min-width: 0px) and (max-width: 1023px)"
  - type: grid
    cards:
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 1
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 1
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 2
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 2
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 2
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 2
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - show_name: false
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: 2
          rows: auto
        styles:
          card:
            - background: none
            - border: none
            - height: 1px
      - grid_options:
          columns: 4
          rows: auto
        variables:
          entitee: cover.tous_les_volets
          name: Général
          color: rgb(255,50,50)
        template: info
        type: custom:button-card
        show_name: true
        show_icon: false
        show_label: true
        label: |
          [[[
            return 'Position - ' + (entity.attributes.current_position) + "%"
          ]]]
        entity: "[[[return variables.entitee]]]"
        name: "[[[return variables.name]]]"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.tous_les_volets
          name: Général
          color: rgb(255,50,50)
        type: custom:button-card
        show_name: false
        show_icon: true
        entity: "[[[return variables.entitee]]]"
        icon: mdi:arrow-up-bold
        tap_action:
          action: perform-action
          perform_action: cover.open_cover
          target:
            entity_id: "[[[return variables.entitee]]]"
        styles:
          icon:
            - width: 100%
            - color: |
                [[[
                if (entity.attributes.current_position == 100) 
                  return "grey";
                else  
                  return variables.color;
                ]]]
          card:
            - height: 60px
            - width: 60px
            - border-radius: 30px
            - border-color: |
                [[[
                if (entity.attributes.current_position == 100) 
                  return "grey";
                else  
                  return variables.color;
                ]]]
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.tous_les_volets
          name: Général
          color: rgb(255,50,50)
        type: custom:button-card
        show_name: false
        show_icon: true
        entity: "[[[return variables.entitee]]]"
        icon: mdi:stop
        tap_action:
          action: perform-action
          perform_action: cover.stop_cover
          target:
            entity_id: "[[[return variables.entitee]]]"
        styles:
          icon:
            - width: 100%
            - color: |
                [[[
                  return variables.color;
                ]]]
          card:
            - height: 60px
            - width: 60px
            - border-radius: 30px
            - border-color: |
                [[[

                  return variables.color;
                ]]]
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.tous_les_volets
          name: Général
          color: rgb(255,50,50)
        type: custom:button-card
        show_name: false
        show_icon: true
        entity: "[[[return variables.entitee]]]"
        icon: mdi:arrow-down-bold
        tap_action:
          action: perform-action
          perform_action: cover.close_cover
          target:
            entity_id: "[[[return variables.entitee]]]"
        styles:
          icon:
            - width: 100%
            - color: |
                [[[
                if (entity.attributes.current_position == 0) 
                  return "grey";
                else  
                  return variables.color;
                ]]]
          card:
            - height: 60px
            - width: 60px
            - border-radius: 30px
            - border-color: |
                [[[
                if (entity.attributes.current_position == 0) 
                  return "grey";
                else  
                  return variables.color;
                ]]]
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.tous_les_volets
          name: Général
          color: rgb(255,50,50)
        type: custom:button-card
        entity: "[[[return variables.entitee]]]"
        show_name: true
        show_icon: false
        tap_action:
          action: perform-action
          perform_action: cover.set_cover_position
          target:
            entity_id: "[[[return variables.entitee]]]"
          data:
            position: 25
        name: 25%
        styles:
          card:
            - height: 60px
            - width: 60px
            - font-weight: 900
            - font-size: 25px
            - border-radius: 30px
            - border: 1px solid
            - border-color: "[[[return variables.color]]]"
            - background: |
                [[[
                if (entity.attributes.current_position == 25) 
                  return variables.color;

                ]]]
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - background: none
            - border: none
    column_span: 3
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Salon
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - variables:
          name: 2 Volets
        grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.salon
        name: "[[[return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[return variables.name]]]"
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        template: up
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        template: volet
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        template: down
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        template: position
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.salon_volet3
        name: Canapé
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.salon_volet3
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet3
        template: volet
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet3
        template: down
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet3
        template: position
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.salon_volet1
        name: Table
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.salon_volet1
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet1
        template: volet
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet1
        template: down
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet1
        template: position
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.salon_volet2
        name: Veranda
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.salon_volet2
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet2
        template: volet
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet2
        template: down
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.salon_volet2
        template: position
        type: custom:button-card
        visibility:
          - condition: or
            conditions:
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: Salon
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: and
                conditions:
                  - condition: state
                    entity: input_text.selection_pieces
                    state: 2 Volets
                  - condition: screen
                    media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: screen
                media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - background: none
            - border: none
    visibility:
      - condition: or
        conditions:
          - condition: screen
            media_query: "(min-width: 1024px)"
          - condition: and
            conditions:
              - condition: state
                entity: input_text.selection_pieces
                state: Salon
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
          - condition: and
            conditions:
              - condition: state
                entity: input_text.selection_pieces
                state: 2 Volets
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Cuisine
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.cuisine_volet1
        name: Cuisine
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.cuisine_volet1
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.cuisine_volet1
        template: volet
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.cuisine_volet1
        template: down
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.cuisine_volet1
        template: position
        type: custom:button-card
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - background: none
            - border: none
    visibility:
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: state
                entity: input_text.selection_pieces
                state: Cuisine
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Chambres
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.chambre_filles
        name: Filles
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.chambre_filles
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_filles
        template: volet
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_filles
        template: down
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_filles
        template: position
        type: custom:button-card
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.chambre_parents
        name: Parents
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.chambre_parents
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_parents
        template: volet
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_parents
        template: down
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.chambre_parents
        template: position
        type: custom:button-card
      - grid_options:
          columns: 4
          rows: auto
        template: info
        type: custom:button-card
        entity: cover.bureau
        name: Bureau
      - grid_options:
          columns: 2
          rows: auto
        template: up
        variables:
          entitee: cover.bureau
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.bureau
        template: volet
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.bureau
        template: down
        type: custom:button-card
      - grid_options:
          columns: 2
          rows: auto
        variables:
          entitee: cover.bureau
        template: position
        type: custom:button-card
    visibility:
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: state
                entity: input_text.selection_pieces
                state: Chambres
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
          - condition: screen
            media_query: "(min-width: 1024px)"
dense_section_placement: false
cards: []
title: Volets
icon: mdi:window-shutter
background:
  image: >-
    https://th.bing.com/th/id/R.938077d3f98d8113b9ae9c37a14fc290?rik=WrdcLkgrED01Ag&riu=http%3a%2f%2fwww.10wallpaper.com%2fwallpaper%2f1920x1080%2f1304%2fline_violet_color_graphics-Art_abstract_design_wallpaper_1920x1080.jpg&ehk=KNeMQzyFXi4TrCK%2bxSCbOrI1t%2bzFk9gdfqmJwafA2T8%3d&risl=&pid=ImgRaw&r=0
templates button_card
button_card_templates:
  info:
    show_name: true
    show_icon: false
    show_label: true
    label: |
      [[[
        return 'Position - ' + (entity.attributes.current_position) + "%"
      ]]]
    styles:
      name:
        - justify-self: left
        - font-weight: 700
        - margin-left: 2px
        - font-size: 30px
      label:
        - align-self: start
        - justify-self: left
        - font-size: 15px
        - font-weight: 500
        - margin-left: 10%
        - margin-top: 5%
      card:
        - padding-bottom: 0px
        - width: 150px
        - font-size: 18px
        - border: none
        - color: white
        - background-color: transparent
  volet:
    entity: '[[[return variables.entitee]]]'
    show_name: false
    show_icon: true
    icon: mdi:stop
    name: 25%
    tap_action:
      action: perform-action
      perform_action: cover.stop_cover
      target:
        entity_id: '[[[return variables.entitee]]]'
    variables:
      entitee: cover.salon
      color: var(--paper-item-icon-color)
    styles:
      icon:
        - width: 100%
        - color: '[[[return variables.color]]]'
      card:
        - height: 60px
        - width: 60px
        - border-radius: 30px
        - border-color: '[[[return variables.color]]]'
  up:
    template: volet
    icon: mdi:arrow-up-bold
    tap_action:
      action: perform-action
      perform_action: cover.open_cover
      target:
        entity_id: '[[[return variables.entitee]]]'
    styles:
      icon:
        - color: |
            [[[
            if (entity.attributes.current_position == 100) 
              return "grey";
            else 
              return variables.color;
            ]]]
      card:
        - border-color: |
            [[[
            if (entity.attributes.current_position == 100) 
              return "grey";
            else 
              return variables.color;
            ]]]
  down:
    template: volet
    icon: mdi:arrow-down-bold
    tap_action:
      action: perform-action
      perform_action: cover.close_cover
      target:
        entity_id: '[[[return variables.entitee]]]'
    styles:
      icon:
        - color: |
            [[[
            if (entity.attributes.current_position == 0) 
              return "grey";
            else 
              return variables.color;
            ]]]
      card:
        - border-color: |
            [[[
            if (entity.attributes.current_position == 0) 
              return "grey";
            else 
              return variables.color;
            ]]]
  position:
    template: volet
    show_name: true
    show_icon: false
    tap_action:
      action: perform-action
      perform_action: cover.set_cover_position
      target:
        entity_id: '[[[return variables.entitee]]]'
      data:
        position: 25
    styles:
      card:
        - font-weight: 900
        - font-size: 25px
        - background: |
            [[[
            if (entity.attributes.current_position == 25) 
              return variables.color;
            ]]]
1 « J'aime »

Hello

Je confirme que la rapidité des NSpanel Pro et 120 est directement lié au nombre et à la complexité des dashboard que nous avons dans HA !
Un grand merci @Loic69 car sans son analyse je n’aurais jamais trouvé !

Par contre je n’arrive pas à faire fonctionner ce fameux capteur d’approche. Quelqu’un l’a déjà fait fonctionner avec nspanelpro tools ? Je ne comprends pas la logique derrière dans nspanel tools.

Merci pour votre aide.

voici la suite avec la page de mes chauffages.

Vue PC

Vue NSPanel

Code
type: sections
max_columns: 4
title: Chauffages
path: Chauffages
sections:
  - type: grid
    cards:
      - grid_options:
          columns: 3
          rows: 2
        show_name: false
        show_icon: true
        icon: mdi:backspace
        type: custom:button-card
        styles:
          icon:
            - width: 35%
          card:
            - padding: 10% 0%
            - margin: 6% 0% 0%
            - width: 100%
        tap_action:
          action: navigate
          navigation_path: /dashboard-nspanel1/accueil
        visibility:
          - condition: user
            users:
              - fc5eca5eec334095bdbaf0583043a051
      - variables:
          name: Salon
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  else if (states['input_text.selection_pieces'].state == "2 Volets") 
                    return "var(--paper-item-icon-color)";          
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: auto
      - variables:
          name: Cuisine
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
      - variables:
          name: S.D.B
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
      - variables:
          name: Ch.Filles
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
      - variables:
          name: Ch.Parents
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
      - variables:
          name: Bureau
        show_name: true
        show_icon: false
        type: custom:button-card
        name: "[[[ return variables.name]]]"
        tap_action:
          action: perform-action
          perform_action: input_text.set_value
          target:
            entity_id: input_text.selection_pieces
          data:
            value: "[[[ return variables.name]]]"
        styles:
          card:
            - padding: 18% 0%
            - margin: 5% 0% 0%
            - background: |
                [[[
                  if (states['input_text.selection_pieces'].state == variables.name) 
                    return "var(--paper-item-icon-color)";
                  
                ]]]
          custom_fields:
            card1:
              - position: absolute
              - width: 100%
        grid_options:
          columns: 3
          rows: 1
    column_span: 10
    visibility:
      - condition: screen
        media_query: "(min-width: 0px) and (max-width: 1023px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Salon
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_salon
        show_name: false
        show_icon: true
        show_label: false
        size: 50px
        icon: |
          [[[
            if (entity.attributes.hvac_action == "heating") 
              return "mdi:radiator"
            if (entity.state == "off")
              return "mdi:radiator-off"
            else
              return "mdi:radiator-disabled"
          ]]]
        tap_action:
          action: toggle
        hold_action:
          action: none
        styles:
          card:
            - background: none
            - border: none
            - padding-top: 12px
      - grid_options:
          columns: 8
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_salon
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: none
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad1
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
          power1: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad2
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'power power1 fen alert' "
            - grid-template-columns: 1fr 0.5fr 1fr 1fr
          custom_fields:
            power:
              - color: |
                  [[[
                  if (states['switch.salon_radiateur1'].state == "on") 
                    return "orange";
                  ]]]
            power1:
              - color: |
                  [[[
                  if (states['switch.salon_radiateur2'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetres_salon'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        icon: mdi:cog
        size: 30px
        tap_action:
          action: navigate
          navigation_path: /dashboard-nspanel1/param_chauff_salon
        styles:
          card:
            - position: relative
            - top: 20px
            - background: none
            - border: none
          icon:
            - position: relative
            - align-items: end
      - type: custom:button-card
        entity: climate.thermostat_salon
        variables:
          hum: sensor.salon_capteurs_humidity
          batterie: sensor.salon_capteurs_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_salon
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-spacing: 1px;
                --st-font-size-l: 60px;        
            }
        grid_options:
          columns: 6
          rows: auto
      - variables:
          entity: climate.thermostat_salon
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_salon
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_salon
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_salon
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: Salon
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Cuisine
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_cuisine
        show_name: false
        show_icon: true
        show_label: false
        size: 50px
        icon: |
          [[[
            if (entity.attributes.hvac_action == "heating") 
              return "mdi:radiator"
            if (entity.state == "off")
              return "mdi:radiator-off"
            else
              return "mdi:radiator-disabled"
          ]]]
        tap_action:
          action: toggle
        hold_action:
          action: none
        styles:
          card:
            - background: none
            - border: none
            - padding-top: 12px
      - grid_options:
          columns: 8
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_cuisine
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: none
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'power power1 fen alert' "
            - grid-template-columns: 1fr 0.5fr 1fr 1fr
          custom_fields:
            power:
              - color: |
                  [[[
                  if (states['switch.cuisine_radiateur'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetres_cuisine_contact'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]          
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        icon: mdi:cog
        size: 30px
        tap_action:
          action: navigate
          navigation_path: /dashboard-nspanel1/param_chauff_cuisine
        styles:
          card:
            - position: relative
            - top: 20px
            - background: none
            - border: none
          icon:
            - position: relative
            - align-items: end
      - type: custom:button-card
        entity: climate.thermostat_cuisine
        variables:
          hum: sensor.cuisine_capteurs_humidity
          batterie: sensor.cuisine_capteurs_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_cuisine
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        grid_options:
          columns: 6
          rows: auto
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-spacing: 1px;
                --st-font-size-l: 60px;        
            }
      - variables:
          entity: climate.thermostat_cuisine
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_cuisine
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_cuisine
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_cuisine
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: Cuisine
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: S.D.B
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_s_d_b
        show_name: false
        show_icon: true
        show_label: false
        size: 50px
        icon: |
          [[[
            if (entity.attributes.hvac_action == "heating") 
              return "mdi:radiator"
            if (entity.state == "off")
              return "mdi:radiator-off"
            else
              return "mdi:radiator-disabled"
          ]]]
        tap_action:
          action: toggle
        hold_action:
          action: none
        styles:
          card:
            - background: none
            - border: none
            - padding-top: 12px
      - grid_options:
          columns: 8
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_s_d_b
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: none
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
          power1: |
            [[[
              return `
              <span
                style="font-size: 10px; ">
              </span><br>
              <ha-icon
                icon="mdi:fan"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'power power1 fen alert' "
            - grid-template-columns: 1fr 0.5fr 1fr 1fr 1fr
          custom_fields:
            power:
              - color: |
                  [[[
                  if (states['switch.s_d_b_radiateur'].state == "on") 
                    return "orange";
                  ]]]
            power1:
              - color: |
                  [[[
                  if (states['switch.s_d_b_soufflerie'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetres_salon'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - grid_options:
          columns: 2
          rows: auto
        type: custom:button-card
        icon: mdi:cog
        size: 30px
        tap_action:
          action: navigate
          navigation_path: /dashboard-nspanel1/parametre_chauff_s-d-b
        styles:
          card:
            - position: relative
            - top: 20px
            - background: none
            - border: none
          icon:
            - position: relative
            - align-items: end
      - type: custom:button-card
        entity: climate.thermostat_s_d_b
        variables:
          hum: sensor.s_d_b_capteurs_humidity
          batterie: sensor.s_d_b_capteurs_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_s_d_b
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        grid_options:
          columns: 6
          rows: auto
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-l: 60px; 
                --st-spacing: 1px;
            }
      - variables:
          entity: climate.thermostat_s_d_b
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_s_d_b
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_s_d_b
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_s_d_b
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: S.D.B
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Ch. Filles
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: full
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_ch_filles
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: toggle
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          rad: |
            [[[
            if (entity.attributes.hvac_action == "heating") 
              return `<ha-icon
                icon="mdi:radiator"
                style="width: 50px; ">
                </ha-icon>`
            else
              return `<ha-icon
                icon="mdi:radiator-disabled"
                style="width: 50px; ">
                </ha-icon>`
            ]]] 
          para:
            card:
              type: custom:button-card
              icon: mdi:cog
              size: 30px
              tap_action:
                action: navigate
                navigation_path: /dashboard-nspanel1/param_chauff_cuisine
              styles:
                card:
                  - position: relative
                  - top: 10px
                  - background: none
                  - border: none
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'rad power power1 fen alert para' "
            - grid-template-columns: 1fr 1fr 0.5fr 1fr 1fr 1fr
          custom_fields:
            rad:
              - color: |
                  [[[
                  if (entity.attributes.hvac_action == "heating") 
                    return "#E92F00";
                  else if (entity.state == "heat") 
                    return "var(--paper-item-icon-color)";
                  else
                    return "grey";
                  ]]]
            power:
              - color: |
                  [[[
                  if (states['switch.chambre_filles_radiateur'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetre_filles_contact'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]          
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - type: custom:button-card
        entity: climate.thermostat_ch_filles
        variables:
          hum: sensor.ch_filles_capteurs_humidity
          batterie: sensor.ch_filles_capteurs_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_ch_filles
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        grid_options:
          columns: 6
          rows: auto
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-spacing: 1px;
                --st-font-size-l: 60px;        
            }
      - variables:
          entity: climate.thermostat_ch_filles
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_ch_filles
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_ch_filles
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_ch_filles
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: Ch.Filles
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Ch. Parents
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: full
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_parent
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: toggle
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          rad: |
            [[[
            if (entity.attributes.hvac_action == "heating") 
              return `<ha-icon
                icon="mdi:radiator"
                style="width: 50px; ">
                </ha-icon>`
            else
              return `<ha-icon
                icon="mdi:radiator-disabled"
                style="width: 50px; ">
                </ha-icon>`
            ]]] 
          para:
            card:
              type: custom:button-card
              icon: mdi:cog
              size: 30px
              tap_action:
                action: navigate
                navigation_path: /dashboard-nspanel1/param_chauff_parent
              styles:
                card:
                  - position: relative
                  - top: 10px
                  - background: none
                  - border: none
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'rad power power1 fen alert para' "
            - grid-template-columns: 1fr 1fr 0.5fr 1fr 1fr 1fr
          custom_fields:
            rad:
              - color: |
                  [[[
                  if (entity.attributes.hvac_action == "heating") 
                    return "FireBrick";
                  else if (entity.state == "heat") 
                    return "var(--paper-item-icon-color)";
                  else
                    return "grey";
                  ]]]
            power:
              - color: |
                  [[[
                  if (states['switch.chambre_parents_radiateur'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetre_parents_contact'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - type: custom:button-card
        entity: climate.thermostat_parent
        variables:
          hum: sensor.ch_parents_capteurs_humidity
          batterie: sensor.ch_parents_capteurs_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_parent
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        grid_options:
          columns: 6
          rows: auto
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-spacing: 1px;
                --st-font-size-l: 60px;        
            }
      - variables:
          entity: climate.thermostat_parent
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_parent
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_parent
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_parent
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: Ch.Parents
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        name: Bureau
        grid_options:
          columns: full
          rows: 1
        styles:
          card:
            - font-size: 300%
            - color: white
            - background: none
            - border: none
            - border-bottom: 2px white double
            - margin: 0px
            - padding: 0px
            - font-weight: 500
          name:
            - align-self: start
        visibility:
          - condition: screen
            media_query: "(min-width: 1024px)"
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
        visibility:
          - condition: screen
            media_query: "(min-width: 0px) and (max-width: 1023px)"
      - grid_options:
          columns: full
          rows: auto
        type: custom:button-card
        entity: climate.thermostat_bureau
        show_name: false
        show_icon: false
        show_label: false
        tap_action:
          action: toggle
        hold_action:
          action: none
        custom_fields:
          fen: |
            [[[
              return `<br><ha-icon
                icon="mdi:window-open-variant"
                style="width: 20px; color:orange; ">
                </ha-icon>`
            ]]] 
          rad: |
            [[[
            if (entity.attributes.hvac_action == "heating") 
              return `<ha-icon
                icon="mdi:radiator"
                style="width: 50px; ">
                </ha-icon>`
            else
              return `<ha-icon
                icon="mdi:radiator-disabled"
                style="width: 50px; ">
                </ha-icon>`
            ]]] 
          para:
            card:
              type: custom:button-card
              icon: mdi:cog
              size: 30px
              tap_action:
                action: navigate
                navigation_path: /dashboard-nspanel1/param_chauff_bureau
              styles:
                card:
                  - position: relative
                  - top: 10px
                  - background: none
                  - border: none
          alert: |
            [[[
              return `<br><ha-icon
                icon="mdi:alert"
                style="width: 30px; ">
                </ha-icon>`
            ]]] 
          power: |
            [[[
              return `
              <span
                style="font-size: 10px; ">rad
              </span><br>
              <ha-icon
                icon="mdi:power"
                style="width: 20px; ">
              </ha-icon>`
            ]]] 
        styles:
          card:
            - padding-bottom: 0px
            - border: none
            - background-color: transparent
          grid:
            - grid-template-areas: "'rad power power1 fen alert para' "
            - grid-template-columns: 1fr 1fr 0.5fr 1fr 1fr 1fr
          custom_fields:
            rad:
              - color: |
                  [[[
                  if (entity.attributes.hvac_action == "heating") 
                    return "#E92F00";
                  else if (entity.state == "heat") 
                    return "var(--paper-item-icon-color)";
                  else
                    return "grey";
                  ]]]
            power:
              - color: |
                  [[[
                  if (states['switch.chambre1_radiateur'].state == "on") 
                    return "orange";
                  ]]]
            fen:
              - display: |
                  [[[
                    if (states['binary_sensor.fenetre_bureau'].state == "on")
                      return "content"
                    else
                      return "none"
                  ]]]          
            alert:
              - display: |
                  [[[
                    if (entity.state == "unavailable")
                      return "content"
                    else
                      return "none"
                  ]]]
              - color: red
              - animation: blink 2s ease infinite
      - type: custom:button-card
        entity: climate.thermostat_bureau
        variables:
          hum: sensor.bureau_capteur_humidity
          batterie: sensor.bureau_capteur_battery
        template: info_chauffe
        grid_options:
          columns: 6
          rows: auto
      - type: custom:simple-thermostat
        entity: climate.thermostat_bureau
        hide:
          state: true
          temperature: true
        label:
          temperature: T°
        layout:
          step: null
          mode:
            names: false
            icons: false
            headings: false
        control:
          - null
        header: false
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0);
                border: none;
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-spacing: 1px;
                --st-font-size-l: 60px;        
            }
        grid_options:
          columns: 6
          rows: auto
      - variables:
          entity: climate.thermostat_bureau
          mode: frost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_bureau
          mode: eco
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_bureau
          mode: comfort
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
      - variables:
          entity: climate.thermostat_bureau
          mode: boost
        template: mode_chauffe
        type: custom:button-card
        grid_options:
          columns: 3
          rows: 1
    visibility:
      - condition: user
        users:
          - ef27be782c824f3298261b3dc9c614dc
          - 71ec97164a674471a182e3b838794a7d
          - 2d3459002c5b4154b2b4e701f3c964c0
          - a446ea61780348cb88b936b4c8f21558
          - 84678b3eb9e849498aa8ff85da35367c
      - condition: or
        conditions:
          - condition: and
            conditions:
              - condition: screen
                media_query: "(min-width: 0px) and (max-width: 1023px)"
              - condition: state
                entity: input_text.selection_pieces
                state: Bureau
          - condition: screen
            media_query: "(min-width: 1024px)"
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_s_d_b
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.s_d_b_capteurs_temperature
            icon: mdi:thermometer
          - entity: sensor.s_d_b_capteurs_humidity
            icon: mdi:water-percent
          - entity: sensor.s_d_b_capteurs_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.s_d_b_radiateur
              icon: mdi:power
            - entity: switch.s_d_b_soufflerie
              icon: mdi:fan
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: S.D.B
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_salon
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.salon_capteurs_temperature
            icon: mdi:thermometer
          - entity: sensor.salon_capteurs_humidity
            icon: mdi:water-percent
          - entity: sensor.salon_capteurs_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.salon_radiateur1
              icon: mdi:power
            - entity: switch.salon_radiateur2
              icon: mdi:power
            - entity: binary_sensor.fenetres_salon
              icon: mdi:window-open-variant
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: Salon
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_cuisine
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.cuisine_capteurs_temperature
            icon: mdi:thermometer
          - entity: sensor.cuisine_capteurs_humidity
            icon: mdi:water-percent
          - entity: sensor.cuisine_capteurs_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.cuisine_radiateur
              icon: mdi:power
            - entity: binary_sensor.fenetres_cuisine_contact
              icon: mdi:window-open-variant
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: Cuisine
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_ch_filles
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.ch_filles_capteurs_temperature
            icon: mdi:thermometer
          - entity: sensor.ch_filles_capteurs_humidity
            icon: mdi:water-percent
          - entity: sensor.ch_filles_capteurs_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.chambre_filles_radiateur
              icon: mdi:power
            - entity: binary_sensor.fenetre_filles_contact
              icon: mdi:window-open-variant
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: Ch.Filles
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_parent
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.ch_parents_capteurs_temperature
            icon: mdi:thermometer
          - entity: sensor.ch_parents_capteurs_humidity
            icon: mdi:water-percent
          - entity: sensor.ch_parents_capteurs_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.chambre_parents_radiateur
              icon: mdi:power
            - entity: binary_sensor.fenetre_parents_contact
              icon: mdi:window-open-variant
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: Ch.Parents
  - type: grid
    cards:
      - show_name: true
        show_icon: false
        type: custom:button-card
        grid_options:
          columns: full
          rows: 0.5
        styles:
          card:
            - background: none
            - border: none
      - type: custom:simple-thermostat
        entity: climate.thermostat_bureau
        hide:
          state: true
          temperature: true
        control:
          preset:
            eco:
              icon: mdi:leaf
            frost:
              icon: mdi:snowflake
            comfort:
              icon: mdi:sofa
            boost:
              icon: mdi:rocket-launch
            none: false
        layout:
          step: null
          mode:
            icons: true
            headings: false
            names: true
        sensors:
          - entity: sensor.bureau_capteur_temperature
            icon: mdi:thermometer
          - entity: sensor.bureau_capteur_humidity
            icon: mdi:water-percent
          - entity: sensor.bureau_capteur_battery
            icon: mdi:battery
        header:
          name: .
          faults:
            - entity: switch.chambre1_radiateur
              icon: mdi:power
            - entity: binary_sensor.fenetre_bureau_contact
              icon: mdi:window-open-variant
              hide_inactive: true
        card_mod:
          style: |
            ha-card {
                background: rgba(0,0,0, 0.5);
                --st-font-size-xl: 60px;
                --st-font-size-m: 50px;
                --st-font-size-title: 0px;
                --st-font-size-sensors: 20px;
                --st-spacing: 1px;
                --st-font-size-toggle-label: px;
                --st-font-size-l: 60px;        
            }
    visibility:
      - condition: user
        users:
          - fc5eca5eec334095bdbaf0583043a051
      - condition: state
        entity: input_text.selection_pieces
        state: Bureau
cards: []
background:
  opacity: 45
  alignment: center
  size: cover
  repeat: no-repeat
  attachment: fixed
  image: https://w.wallhaven.cc/full/d6/wallhaven-d6o6wg.png
dense_section_placement: true
subview: true
icon: mdi:radiator-disabled

le code pour la vue PC n’est pas encore entièrement terminé