Schedule State Card – Visualisation avancée des plannings (nécessite schedule_state)

Voici un dashboard de test reproduisant le problème.

Cartes :

  • card_mod
  • schedule-state-card

Modules :

  • browser_mod
  • schedule-state
views:
  - theme: Backend-selected
    title: test
    path: test
    icon: ''
    layout:
      height: auto
      margin: 0px 4px 0px 0px
    type: custom:horizontal-layout
    badges: []
    cards:
      - type: custom:button-card
        icon: mdi:test-tube
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            browser_id: THIS
            data:
              content:
                type: custom:button-card
                styles:
                  card:
                    - padding: 0px
                    - border-radius: 15px !important
                    - padding: 8px 8px
                    - border: none;
                    - background: transparent
                  grid:
                    - grid-template-areas: >-
                        "actions actions" "temp_ext chauffage" "humidite_ext
                        energy"
                    - grid-template-columns: 1fr 1fr
                    - grid-template-rows: min-content min-content min-content
                custom_fields:
                  actions:
                    card:
                      type: custom:button-card
                      styles:
                        grid:
                          - grid-template-areas: '"mode_absent ouvertures music vide3 vide4 vide5"'
                          - grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr
                          - grid-template-rows: min-content
                        card:
                          - border: 0px
                          - padding: 5px 0 !important
                      custom_fields:
                        mode_absent:
                          card:
                            type: custom:button-card
                            icon: mdi:home
                            name: Mode Absence
                        ouvertures:
                          card:
                            type: custom:button-card
                            icon: mdi:window-open-variant
                            name: 0 / 8
                            color: grey
                            styles:
                              card:
                                - background: rgba(42,45,54,1.0)
                                - width: 97%
                        music:
                          card:
                            type: custom:button-card
                            icon: mdi:speaker
                            name: Multimédia
                            styles:
                              card:
                                - background: rgba(42,45,54,1.0)
                                - width: 97%
                        vide3:
                          card:
                            type: custom:button-card
                            color_type: blank-card
                        vide4:
                          card:
                            type: custom:button-card
                            color_type: blank-card
                        vide5:
                          card:
                            type: custom:button-card
                            color_type: blank-card
                  temp_ext:
                    card:
                      type: energy-devices-detail-graph
                      card_mod:
                        style: |
                          ha-card {
                            margin-left: 5px;
                            background: rgba(42,45,54,1.0) !important
                          }
                  humidite_ext:
                    card:
                      type: energy-devices-detail-graph
                      card_mod:
                        style: |
                          ha-card {
                            margin-left: 5px;
                            background: rgba(42,45,54,1.0) !important
                          }
                  energy:
                    card:
                      type: energy-devices-detail-graph
                      card_mod:
                        style: |
                          ha-card {
                            margin-left: 5px;
                            background: rgba(42,45,54,1.0) !important
                          }
                  chauffage:
                    card:
                      type: custom:schedule-state-card
                      entities:
                        - entity: sensor.pac_present
                          name: Pompe à chaleur
                          icon: mdi:calendar-clock
                      title: Pompe à Chaleur
                      colors:
                        active_layer: 'var(--primary-color, #2196F3)'
                        inactive_layer: 'var(--secondary-text-color, #BDBDBD)'
                        combined_folded_layer: 'var(--warning-color, #FF9800)'
                        combined_unfolded_layer: 'var(--primary-color, #2196F3)'
                        cursor: 'var(--label-badge-yellow, #FDD835)'
                      show_state_in_title: true
                      card_mod:
                        style: |
                          ha-card {
                            background: red !important;
                            margin-left: 10px;
                          }
              popup_styles:
                - style: all
                  styles: |-
                    ha-dialog {
                      --ha-dialog-surface-background: transparent;
                      --ha-dialog-scrim-backdrop-filter: blur(15px);
                      --ha-card-background: transparent;
                      --primary-text-color: white;
                      --mdc-dialog-min-width: 70vw;
                      --mdc-dialog-min-height: 100vdh;
                      --mdc-dialog-max-height: 100vdh;
                      color: white;
                    }
                    ha-dialog $: |
                      .mdc-dialog .mdc-dialog__scrim {
                        backdrop-filter: blur(100px);
                        background: red;
                      }

Ah oui dans le genre compliqué, tu ne fais pas semblant !

custom:horizontal-layout => custom:button-card => popup => custom:button-card => custom_fields => grid

Mais euh… Non !
Pour la partie qui nous intéresse ça fait juste :

popup => custom:button-card => custom_fields => grid

:grinning_face_with_smiling_eyes:

Après oui utiliser une button-card pour l’intérieur de la popup c’est pas top.
Mais comme je voulais des choses alignées j’avais commencé comme ça.
Il faudra que je vois pour remplacer ça par des cartes horizontale et verticales.

Essaye ça dans un 1er temps

type: custom:button-card
icon: mdi:test-tube
tap_action:
  action: fire-dom-event
  browser_mod:
    service: browser_mod.popup
    browser_id: THIS
    data:
      content:
        type: custom:layout-card
        layout_type: grid
        layout_options:
          grid_fit: false
        layout:
          grid-template-columns: repeat(6, 1fr)
          grid-auto-rows: auto
          grid-gap: 0px
          overflow: hidden
        cards:
          - type: custom:button-card
            view_layout:
              grid-column: 1
            icon: mdi:home
            name: Mode Absence
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 2
            icon: mdi:window-open-variant
            name: 0 / 8
            color: grey
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 3
            icon: mdi:speaker
            name: Multimédia
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 4
            icon: mdi:thermometer
            name: Température
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 5
            icon: mdi:water-percent
            name: Humidité
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 6
            icon: mdi:lightning-bolt
            name: Énergie
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 1
              grid-column-end: 4
              grid-row-start: 2
              grid-row-end: 3
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
          - type: custom:schedule-state-card
            view_layout:
              grid-column-start: 4
              grid-column-end: 7
              grid-row-start: 2
              grid-row-end: 3
            entities:
              - entity: sensor.pac_present
                name: Pompe à chaleur
                icon: mdi:calendar-clock
            title: Pompe à Chaleur
            colors:
              active_layer: "var(--primary-color, #2196F3)"
              inactive_layer: "var(--secondary-text-color, #BDBDBD)"
              combined_folded_layer: "var(--warning-color, #FF9800)"
              combined_unfolded_layer: "var(--primary-color, #2196F3)"
              cursor: "var(--label-badge-yellow, #FDD835)"
            show_state_in_title: true
            card_mod:
              style:
                ha-card: |
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                  flex: 1 !important;
                schedule-state-card$: |
                  :host {
                    background: rgba(42,45,54,1.0) !important;
                    min-height: 280px !important;
                    display: flex !important;
                    flex-direction: column !important;
                  }
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 1
              grid-column-end: 4
              grid-row-start: 3
              grid-row-end: 4
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 4
              grid-column-end: 7
              grid-row-start: 3
              grid-row-end: 4
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
      popup_styles:
        - style: all
          styles: |-
            ha-dialog {
              --ha-dialog-surface-background: transparent;
              --ha-dialog-scrim-backdrop-filter: blur(15px);
              --primary-text-color: white;
              --mdc-dialog-min-width: 70vw;
              --mdc-dialog-min-height: 100vh;
              --mdc-dialog-max-height: 100vh;
              color: white;
              padding: 20px !important;
            }
            ha-dialog .mdc-dialog__surface {
              overflow: visible !important;
              padding: 0 !important;
            }
            ha-dialog $: |
              .mdc-dialog .mdc-dialog__scrim {
                backdrop-filter: blur(100px);
                background: rgba(0,0,0,0.5);
              }
styles:
  card:
    - background: rgba(42,45,54,1.0)
    - border-radius: 10px

La version 2.0.6 supporte card_mod

type: custom:button-card
icon: mdi:test-tube
tap_action:
  action: fire-dom-event
  browser_mod:
    service: browser_mod.popup
    browser_id: THIS
    data:
      content:
        type: custom:layout-card
        layout_type: grid
        layout_options:
          grid_fit: false
        layout:
          grid-template-columns: repeat(6, 1fr)
          grid-auto-rows: 1fr auto auto
          grid-gap: 0px
          overflow: hidden
        card_mod:
          style: |
            :host {
              height: 100% !important;   /* occupe toute la zone du popup */
              display: block !important;
            }
            .layout {
              height: 100% !important;   /* la grille elle-même s'étire */
              display: grid !important;
            }
        cards:
          - type: custom:button-card
            view_layout:
              grid-column: 1
            icon: mdi:home
            name: Mode Absence
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 2
            icon: mdi:window-open-variant
            name: 0 / 8
            color: grey
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 3
            icon: mdi:speaker
            name: Multimédia
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 4
            icon: mdi:thermometer
            name: Température
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 5
            icon: mdi:water-percent
            name: Humidité
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: custom:button-card
            view_layout:
              grid-column: 6
            icon: mdi:lightning-bolt
            name: Énergie
            styles:
              card:
                - background: rgba(42,45,54,1.0)
                - border-radius: 10px
                - padding: 15px
                - min-height: 120px
                - width: 100%
                - display: flex
                - flex-direction: column
                - align-items: center
                - justify-content: center
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 1
              grid-column-end: 4
              grid-row-start: 2
              grid-row-end: 3
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
          - type: custom:schedule-state-card
            view_layout:
              grid-column-start: 4
              grid-column-end: 7
              grid-row-start: 2
              grid-row-end: 3
            entities:
              - entity: sensor.consigne_rdc
                name: Pompe à chaleur
                icon: mdi:calendar-clock
            title: Pompe à Chaleur
            colors:
              active_layer: "var(--primary-color, #2196F3)"
              inactive_layer: "var(--secondary-text-color, #BDBDBD)"
              combined_folded_layer: "var(--warning-color, #FF9800)"
              combined_unfolded_layer: "var(--primary-color, #2196F3)"
              cursor: "var(--label-badge-yellow, #FDD835)"
            show_state_in_title: true
            card_mod:
              style: |
                ha-card {
                  background: rgba(42, 45, 54, 1.0) !important;
                  height: 100% !important;
                  display: flex !important;
                  flex-direction: column !important;
                  box-sizing: border-box !important;
                }
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 1
              grid-column-end: 4
              grid-row-start: 3
              grid-row-end: 4
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
          - type: energy-devices-detail-graph
            view_layout:
              grid-column-start: 4
              grid-column-end: 7
              grid-row-start: 3
              grid-row-end: 4
            card_mod:
              style: |
                ha-card {
                  background: rgba(42,45,54,1.0) !important;
                  min-height: 280px !important;
                  height: 100% !important;
                }
      popup_styles:
        - style: all
          styles: |-
            ha-dialog {
              --ha-dialog-surface-background: transparent;
              --ha-dialog-scrim-backdrop-filter: blur(15px);
              --primary-text-color: white;
              --mdc-dialog-min-width: 70vw;
              --mdc-dialog-min-height: 100vh;
              --mdc-dialog-max-height: 100vh;
              color: white;
              padding: 20px !important;
            }
            ha-dialog .mdc-dialog__surface {
              overflow: visible !important;
              padding: 0 !important;
            }
            ha-dialog $: |
              .mdc-dialog .mdc-dialog__scrim {
                backdrop-filter: blur(100px);
                background: rgba(0,0,0,0.5);
              }
styles:
  card:
    - background: rgba(42,45,54,1.0)
    - border-radius: 10px

Super boulot Pulpy-Luke !
Même pas eu le temps de tester le paliatif.

Ça donne envie d’essayer.

J’utilise scheduler card avec le scheduler component, ça fonctionne, mais c’est une usine à gaz. Et il n’y a pas d’option pour visualiser simplement les plannings de chauffage comme sur votre carte.

1 « J'aime »

Oui faut essayer. Le fonctionnement n’est pas forcément similaire