Gestion de l'option Tempo EDF

remonte un peu plus haut dans le fil j’ai mis le code que j’ai fait, il y a certainement mieux à faire mais ca fonctionne

euh j’avais pas vu pour l’année mais en gros ca prends la valeur au 1er janvier, tu n’as pas non plus le mois d’avant donc je suppose que tu n’a pas de données à cette date, il va te falloir attendre ou te pencher du côté de ton menu outils de développement => statistiques j’avais cru comprendre dans un autre post que tu pouvais rajouter ou modifier des statistiques dans la base.

J’ai en gros 10 jours de données, donc je vais devoir attendre :wink:

Oups j’ai scroll trop vite j’avais pas vu. Merci :blush:

pour aujourd’hui en rouge, la carte a pris la bonne couleur

par contre j’ai manifestement encore un problème d’heures sûrement lié à l’heure d’été et d’hiver avec la base, si il y a des calés en sql je suis preneur parce que je sèche, la base est en timestamp unix et ne prends pas dans les requêtes les options de temps du coup je passe par le calcul en secondes, mais je n’arrive pas à gérer l’heure d’été et l’heure d’hiver

image

Hello, c’est peut-être lié ou pas =>

Capture d'écran 2024-02-12 143245

Aujourd’hui c’est mon 1er jour rouge depuis que j’ai l’abonnement, et ça me compte 0.16kw en rouge HP pour hier et 1.10 pour la semaine dernière, alors que l’on était en bleu hier et en bleu ou blanc la semaine dernière. Les formules correspondent au code de ta carte, donc la partie sql ?

oui c’est ca !! en fait on doit avoir une petite partie de ce matin je pense du coup entre 6h00 et 7h00 qui est comptabilisée, heure d’hiver surement

Hello,

je viens de trouver ça, je ne sais pas si ça peut t’aider pour la partie sql

https://community.home-assistant.io/t/last-changed-in-lovelace-fix-timezone/169358

Merci pour le message, mais j’ai en fait plusieurs problèmes, je pense avoir résolu le décalage, hiver été (à verifier pour l’été), mais je dois aussi m’assurer , pour les semaines -1 , mois et année d’être supérieur ou inferieur à 10 jours, afin de sélectionner la table « states », ou la table « statistics », et la je sèche complet, si il y a des calés en sql je suis demandeur d’aide.

par exemple la requête remaniée pour semaine-1
j’utilise case en vérifiant avec (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) + 21600 >= 864000, que la durée en secondes depuis le lundi de la semaine précédente à 6h00 du matin est supérieure à 10 jours 864000 secondes
mais dans la partie from je ne peux pas utiliser case

SELECT
  CASE WHEN (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) + 21600 >= 864000
        THEN statistics.state
        ELSE states.state
  END AS state
FROM
  statistics
  INNER JOIN statistics_meta ON
    statistics.metadata_id = statistics_meta.id

  states
  INNER JOIN states_meta ON
    states.metadata_id = states_meta.metadata_id

WHERE
    CASE WHEN (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) + 21600 >= 864000
        THEN
          statistic_id =  'sensor.em_maison_bbrhpjr'
          AND strftime('%s', created_ts) <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) + 21600 -
          CASE
          WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 0
          ELSE 3600
          END
        ELSE
          states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
          AND strftime('%s', 'last_updated_ts') <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) + 21600 -
          CASE
          WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 0
          ELSE 3600
          END
    END
ORDER BY
  CASE WHEN (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) + 21600 >= 864000
        THEN created_ts
        ELSE last_updated_ts
  END DESC
LIMIT
 1;

Je reviens avec des corrections et des différences:

  • Correction de l’affichage de certaines valeurs à 0.00 dans les compteurs
  • Les requêtes SQL prennent en compte la spécificité française des heures d’hiver et d’été
  • Je précise que les années bissextiles, les mois en 28, 29, 30 et 31 jours sont aussi pris en compte
  • Si vous n’avez pas assez de données, par exemple vos sensors n’ont produit des données que depuis le 01/11/23 alors (A-1) court dorénavant du 01/11/23 au 31/12/23, et donc ne renvoi plus Nan

reste à trouver comment choisir la table si supérieur à 10 jours: je redonnes le problème home assistant stocke 10 jours de statistiques dans la table « states », puis il stocke les statistiques supérieures à 10 jours dans la table « statistics », ainsi le problème est le suivant:
si je me trouve dans le cas de figure ou nous sommes un samedi, j’affiche pour (S) à partir du lundi donc < 10jours, mais si je souhaite afficher la valeur du lundi précédent pour (S-1) soit 11 jours, j’ai donc pour la même requête, deux tables différentes à utiliser…

code de la carte:

type: custom:button-card
entity: sensor.rte_tempo_couleur_actuelle
template:
  - base_high
  - card_state
name: >-
    [[[ return (states['binary_sensor.rte_tempo_heures_creuses'].state
    == 'on') ? 'Linky - HC - Demain: ' + states['sensor.rte_tempo_prochaine_couleur'].state : 'Linky - HP - Demain: ' + states['sensor.rte_tempo_prochaine_couleur'].state ]]]
styles:
  card:
    - height: 770px
  custom_fields:
    table:
      - position: absolute
      - top: 26%
      - left: 50%
      - width: calc(95% + 1px)
      - background-color: var(--primary-background-color)
      - padding: 6px
      - border-radius: 15px
      - transform: translate(-50%, calc(-50% + 10px))
      - '--paper-card-background-color': rgba(0, 0, 0, 0.0)
      - '--ha-card-background': rgba(0, 0, 0, 0.0)
      - '--ha-card-box-shadow': none
      - '--ha-card-border-width': 0px
    table_cost:
      - position: absolute
      - top: 78%
      - left: 50%
      - width: calc(95% + 1px)
      - background-color: var(--primary-background-color)
      - padding: 6px
      - border-radius: 15px
      - transform: translate(-50%, calc(-50% + 10px))
      - '--paper-card-background-color': rgba(0, 0, 0, 0.0)
      - '--ha-card-background': rgba(0, 0, 0, 0.0)
      - '--ha-card-box-shadow': none
      - '--ha-card-border-width': 0px
    label_boutons:
      - position: absolute
      - top: 4%
      - left: 50%
      - width: calc(75% + 1px)
      - transform: translate(-50%, calc(-50% + 10px))
      - '--paper-card-background-color': rgba(0, 0, 0, 0.0)
      - '--ha-card-background': rgba(0, 0, 0, 0.0)
      - '--ha-card-box-shadow': none
      - '--ha-card-border-width': 0px
    prices:
      - position: absolute
      - top: 52%
      - left: 50%
      - width: calc(95% + 1px)
      - background-color: var(--primary-background-color)
      - padding: 6px
      - border-radius: 15px
      - transform: translate(-50%, calc(-50% + 10px))
      - '--paper-card-background-color': rgba(0, 0, 0, 0.0)
      - '--ha-card-background': rgba(0, 0, 0, 0.0)
      - '--ha-card-box-shadow': none
      - '--ha-card-border-width': 0px
custom_fields:
  label_boutons:
    card:
      type: horizontal-stack
      cards:
        - type: custom:button-card
          entity: binary_sensor.rte_tempo_heures_creuses
          label: " [[[ return states['sensor.rte_tempo_cycle_jours_deja_places_bleu'].state + '/' + states['sensor.rte_tempo_cycle_jours_restants_bleu'].state ]]]"
          template: sub_button_mini_label_style
          styles:
            card:
              - background-color:  var(--color-card-blue)
            icon:
              - color: var(--color-icon-blue)
            img_cell:
              - background-color: var(--color-img-cell-blue)
        - type: custom:button-card
          entity: binary_sensor.rte_tempo_heures_creuses
          label: " [[[ return states['sensor.rte_tempo_cycle_jours_deja_places_blanc'].state + '/' + states['sensor.rte_tempo_cycle_jours_restants_blanc'].state ]]]"
          template: sub_button_mini_label_style
          styles:
            card:
              - background-color:  var(--color-card-orange)
            icon:
              - color: var(--color-icon-orange)
            img_cell:
              - background-color: var(--color-img-cell-orange)
        - type: custom:button-card
          entity: binary_sensor.rte_tempo_heures_creuses
          label: " [[[ return states['sensor.rte_tempo_cycle_jours_deja_places_rouge'].state + '/' + states['sensor.rte_tempo_cycle_jours_restants_rouge'].state ]]]"
          template: sub_button_mini_label_style
          styles:
            card:
              - background-color:  var(--color-card-red)
            icon:
              - color: var(--color-icon-red)
            img_cell:
              - background-color: var(--color-img-cell-red)  
  table:
    card:
      type: vertical-stack
      cards:
        - type: custom:button-card
          entity: sensor.rte_tempo_couleur_actuelle
          label: CONSOMMATION
          template: conso_total_label
        - type: horizontal-stack
          cards:
            - type: vertical-stack
              cards:
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpdb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpdb'].state - states['sensor.hpdbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpsb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpsb'].state - states['sensor.hpsbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpmb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpmb'].state - states['sensor.hpmbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpab'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpab'].state - states['sensor.hpabl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                    - type: vertical-stack
                      cards: 
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcdb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcdb'].state - states['sensor.hcdbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcsb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcsb'].state - states['sensor.hcsbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcmb'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcmb'].state - states['sensor.hcmbl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcab'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcab'].state - states['sensor.hcabl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
            - type: vertical-stack
              cards:
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                              let resultat = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpdw'].state;
                              if (resultat == 0) return;
                              return resultat.toFixed(2);
                             ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpdw'].state - states['sensor.hpdwl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                              let resultat = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpsw'].state;
                              if (resultat == 0) return;
                              return resultat.toFixed(2);
                             ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpsw'].state - states['sensor.hpswl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                              let resultat = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpmw'].state;
                              if (resultat == 0) return;
                              return resultat.toFixed(2);
                             ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpmw'].state - states['sensor.hpmwl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                              let resultat = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpaw'].state;
                              if (resultat == 0) return;
                              return resultat.toFixed(2);
                             ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpaw'].state - states['sensor.hpawl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcdw'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcdw'].state - states['sensor.hcdwl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcsw'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcsw'].state - states['sensor.hcswl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcmw'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcmw'].state - states['sensor.hcmwl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcaw'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcaw'].state - states['sensor.hcawl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
            - type: vertical-stack
              cards:
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpdr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpdr'].state - states['sensor.hpdrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpsr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpsr'].state - states['sensor.hpsrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpmr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpmr'].state - states['sensor.hpmrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpar'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hpar'].state - states['sensor.hparl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcdr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcdr'].state - states['sensor.hcdrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcsr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcsr'].state - states['sensor.hcsrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcmr'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcmr'].state - states['sensor.hcmrl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          label: |
                            [[[
                             let resultat = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcar'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = states['sensor.hcar'].state - states['sensor.hcarl'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
            - type: vertical-stack
              cards:
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpdb'].state;
                     let hpjw = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpdw'].state;
                     let hpjr = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpdr'].state;
                     let hcjb = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcdb'].state;
                     let hcjw = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcdw'].state;
                     let hcjr = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcdr'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'J | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = states['sensor.hpdb'].state - states['sensor.hpdbl'].state;
                     let hpjw = states['sensor.hpdw'].state - states['sensor.hpdwl'].state;
                     let hpjr = states['sensor.hpdr'].state - states['sensor.hpdrl'].state;
                     let hcjb = states['sensor.hcdb'].state - states['sensor.hcdbl'].state;
                     let hcjw = states['sensor.hcdw'].state - states['sensor.hcdwl'].state;
                     let hcjr = states['sensor.hcdr'].state - states['sensor.hcdrl'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'J-1 | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpsb = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpsb'].state;
                     let hpsw = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpsw'].state;
                     let hpsr = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpsr'].state;
                     let hcsb = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcsb'].state;
                     let hcsw = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcsw'].state;
                     let hcsr = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcsr'].state;
                     let resultat = hpsb + hpsw + hpsr + hcsb + hcsw + hcsr;
                     if (resultat == 0) return;
                     return 'S | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpsb = states['sensor.hpsb'].state - states['sensor.hpsbl'].state;
                     let hpsw = states['sensor.hpsw'].state - states['sensor.hpswl'].state;
                     let hpsr = states['sensor.hpsr'].state - states['sensor.hpsrl'].state;
                     let hcsb = states['sensor.hcsb'].state - states['sensor.hcsbl'].state;
                     let hcsw = states['sensor.hcsw'].state - states['sensor.hcswl'].state;
                     let hcsr = states['sensor.hcsr'].state - states['sensor.hcsrl'].state;
                     let resultat = hpsb + hpsw + hpsr + hcsb + hcsw + hcsr;
                     if (resultat == 0) return;
                     return 'S-1 | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpmb'].state;
                     let hpjw = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpmw'].state;
                     let hpjr = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpmr'].state;
                     let hcjb = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcmb'].state;
                     let hcjw = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcmw'].state;
                     let hcjr = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcmr'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'M | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = states['sensor.hpmb'].state - states['sensor.hpmbl'].state;
                     let hpjw = states['sensor.hpmw'].state - states['sensor.hpmwl'].state;
                     let hpjr = states['sensor.hpmr'].state - states['sensor.hpmrl'].state;
                     let hcjb = states['sensor.hcmb'].state - states['sensor.hcmbl'].state;
                     let hcjw = states['sensor.hcmw'].state - states['sensor.hcmwl'].state;
                     let hcjr = states['sensor.hcmr'].state - states['sensor.hcmrl'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'M-1 | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpab'].state;
                     let hpjw = states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpaw'].state;
                     let hpjr = states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpar'].state;
                     let hcjb = states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcab'].state;
                     let hcjw = states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcaw'].state;
                     let hcjr = states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcar'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'A | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = states['sensor.hpab'].state - states['sensor.hpabl'].state;
                     let hpjw = states['sensor.hpaw'].state - states['sensor.hpawl'].state;
                     let hpjr = states['sensor.hpar'].state - states['sensor.hparl'].state;
                     let hcjb = states['sensor.hcab'].state - states['sensor.hcabl'].state;
                     let hcjw = states['sensor.hcaw'].state - states['sensor.hcawl'].state;
                     let hcjr = states['sensor.hcar'].state - states['sensor.hcarl'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'A-1 | ' + resultat.toFixed(2) + ' Kwh';
                    ]]]
                  template: conso_total_label
  table_cost:
    card:
      type: vertical-stack
      cards:
        - type: custom:button-card
          entity: sensor.rte_tempo_couleur_actuelle
          label: FACTURE
          template: conso_total_label
        - type: horizontal-stack
          cards:
            - type: vertical-stack
              cards: 
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpdb'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpdb'].state - states['sensor.hpdbl'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpsb'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpsb'].state - states['sensor.hpsbl'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpmb'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpmb'].state - states['sensor.hpmbl'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpab'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpab'].state - states['sensor.hpabl'].state) * states['input_number.hp_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hp_label
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcdb'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcdb'].state - states['sensor.hcdbl'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcsb'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcsb'].state - states['sensor.hcsbl'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcmb'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcmb'].state - states['sensor.hcmbl'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_blue_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcab'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcab'].state - states['sensor.hcabl'].state) * states['input_number.hc_bleu'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_blue_hc_label
            - type: vertical-stack
              cards:
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpdw'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpdw'].state - states['sensor.hpdwl'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpsw'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpsw'].state - states['sensor.hpswl'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpmw'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpmw'].state - states['sensor.hpmwl'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpaw'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpaw'].state - states['sensor.hpawl'].state) * states['input_number.hp_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hp_label
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcdw'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcdw'].state - states['sensor.hcdwl'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcsw'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcsw'].state - states['sensor.hcswl'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcmw'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcmw'].state - states['sensor.hcmwl'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_white_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcaw'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcaw'].state - states['sensor.hcawl'].state) * states['input_number.hc_blanc'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_white_hc_label
            - type: vertical-stack
              cards:
                - type: horizontal-stack
                  cards:
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpdr'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpdr'].state - states['sensor.hpdrl'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpsr'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpsr'].state - states['sensor.hpsrl'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpmr'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpmr'].state - states['sensor.hpmrl'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hp_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpar'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hpar'].state - states['sensor.hparl'].state) * states['input_number.hp_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hp_label
                    - type: vertical-stack
                      cards:
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcdr'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcdr'].state - states['sensor.hcdrl'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcsr'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcsr'].state - states['sensor.hcsrl'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcmr'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcmr'].state - states['sensor.hcmrl'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
                        - type: custom:button-card
                          entity: input_boolean.off
                          label: ' '
                          template: conso_blank_space
                        - type: custom:button-card
                          entity: sensor.rte_tempo_couleur_actuelle
                          template: conso_red_hc_label
                          label: |
                            [[[
                             let resultat = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcar'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                        - type: custom:button-card
                          entity: sensor.rte_tempo_prochaine_couleur
                          label: |
                            [[[
                             let resultat = (states['sensor.hcar'].state - states['sensor.hcarl'].state) * states['input_number.hc_rouge'].state;
                             if (resultat == 0) return;
                             return resultat.toFixed(2);
                            ]]]
                          template: conso_red_hc_label
            - type: vertical-stack
              cards:
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpdb'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpdw'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpdr'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcdb'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcdw'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcdr'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'J | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = (states['sensor.hpdb'].state - states['sensor.hpdbl'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.hpdw'].state - states['sensor.hpdwl'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.hpdr'].state - states['sensor.hpdrl'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.hcdb'].state - states['sensor.hcdbl'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.hcdw'].state - states['sensor.hcdwl'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.hcdr'].state - states['sensor.hcdrl'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'J-1 | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpsb = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpsb'].state) * states['input_number.hp_bleu'].state;
                     let hpsw = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpsw'].state) * states['input_number.hp_blanc'].state;
                     let hpsr = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpsr'].state) * states['input_number.hp_rouge'].state;
                     let hcsb = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcsb'].state) * states['input_number.hc_bleu'].state;
                     let hcsw = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcsw'].state) * states['input_number.hc_blanc'].state;
                     let hcsr = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcsr'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpsb + hpsw + hpsr + hcsb + hcsw + hcsr;
                     if (resultat == 0) return;
                     return 'S | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpsb = (states['sensor.hpsb'].state - states['sensor.hpsbl'].state) * states['input_number.hp_bleu'].state;
                     let hpsw = (states['sensor.hpsw'].state - states['sensor.hpswl'].state) * states['input_number.hp_blanc'].state;
                     let hpsr = (states['sensor.hpsr'].state - states['sensor.hpsrl'].state) * states['input_number.hp_rouge'].state;
                     let hcsb = (states['sensor.hcsb'].state - states['sensor.hcsbl'].state) * states['input_number.hc_bleu'].state;
                     let hcsw = (states['sensor.hcsw'].state - states['sensor.hcswl'].state) * states['input_number.hc_blanc'].state;
                     let hcsr = (states['sensor.hcsr'].state - states['sensor.hcsrl'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpsb + hpsw + hpsr + hcsb + hcsw + hcsr;
                     if (resultat == 0) return;
                     return 'S-1 | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpmb'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpmw'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpmr'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcmb'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcmw'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcmr'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'M | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = (states['sensor.hpmb'].state - states['sensor.hpmbl'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.hpmw'].state - states['sensor.hpmwl'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.hpmr'].state - states['sensor.hpmrl'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.hcmb'].state - states['sensor.hcmbl'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.hcmw'].state - states['sensor.hcmwl'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.hcmr'].state - states['sensor.hcmrl'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'M-1 | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: input_boolean.off
                  label: ' '
                  template: conso_blank_space
                - type: custom:button-card
                  entity: sensor.rte_tempo_couleur_actuelle
                  label: |
                    [[[
                     let hpjb = (states['sensor.em_maison_bbrhpjb'].state - states['sensor.hpab'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.em_maison_bbrhpjw'].state - states['sensor.hpaw'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.em_maison_bbrhpjr'].state - states['sensor.hpar'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.em_maison_bbrhcjb'].state - states['sensor.hcab'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.em_maison_bbrhcjw'].state - states['sensor.hcaw'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.em_maison_bbrhcjr'].state - states['sensor.hcar'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'A | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
                - type: custom:button-card
                  entity: sensor.rte_tempo_prochaine_couleur
                  label: |
                    [[[
                     let hpjb = (states['sensor.hpab'].state - states['sensor.hpabl'].state) * states['input_number.hp_bleu'].state;
                     let hpjw = (states['sensor.hpaw'].state - states['sensor.hpawl'].state) * states['input_number.hp_blanc'].state;
                     let hpjr = (states['sensor.hpar'].state - states['sensor.hparl'].state) * states['input_number.hp_rouge'].state;
                     let hcjb = (states['sensor.hcab'].state - states['sensor.hcabl'].state) * states['input_number.hc_bleu'].state;
                     let hcjw = (states['sensor.hcaw'].state - states['sensor.hcawl'].state) * states['input_number.hc_blanc'].state;
                     let hcjr = (states['sensor.hcar'].state - states['sensor.hcarl'].state) * states['input_number.hc_rouge'].state;
                     let resultat = hpjb + hpjw + hpjr + hcjb + hcjw + hcjr;
                     if (resultat == 0) return;
                     return 'A-1 | ' + resultat.toFixed(2) + ' €';
                    ]]]
                  template: conso_total_label
  prices:
    card:
      type: vertical-stack
      cards:
        - type: custom:button-card
          entity: sensor.rte_tempo_couleur_actuelle
          label: TARIFS
          template: conso_total_label
        - type: horizontal-stack
          cards:
            - type: custom:button-card
              entity: input_number.hp_bleu
              label: '[[[ return states["input_number.hp_bleu"].state + " €/Kwh"]]]'
              template: conso_blue_hp_label
            - type: custom:button-card
              entity: input_number.hp_blanc
              label: '[[[ return states["input_number.hp_blanc"].state + " €/Kwh" ]]]'
              template: conso_white_hp_label
            - type: custom:button-card
              entity: input_number.hp_rouge
              label: '[[[ return states["input_number.hp_rouge"].state + " €/Kwh" ]]]'
              template: conso_red_hp_label
        - type: horizontal-stack
          cards:
            - type: custom:button-card
              entity: input_number.hc_bleu
              label: '[[[ return states["input_number.hc_bleu"].state + " €/Kwh" ]]]'
              template: conso_blue_hc_label
            - type: custom:button-card
              entity: input_number.hc_blanc
              label: '[[[ return states["input_number.hc_blanc"].state + " €/Kwh" ]]]'
              template: conso_white_hc_label
            - type: custom:button-card
              entity: input_number.hc_rouge
              label: '[[[ return states["input_number.hc_rouge"].state + " €/Kwh" ]]]'
              template: conso_red_hc_label      

fichier sql.yaml

### Jour
  - name: hpdb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Jour -1
  - name: hpdbl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdwl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdrl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdbl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdwl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdrl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Semaine
  - name: hpsb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpsw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpsr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <=   strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Semaine -1
  - name: hpsbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;
  - name: hpswl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;
  - name: hpsrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;
  - name: hcsbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;
  - name: hcswl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;
  - name: hcsrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND created_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts DESC
      LIMIT
        1;  
### Mois
  - name: hpmb
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmw
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmr
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmb
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmw
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmr
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
### Mois -1
  - name: hpmbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmwl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmwl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
### Année
  - name: hpab
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpaw
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpar
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcab
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcaw
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcar
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
### Année -1
  - name: hpabl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpawl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hparl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcabl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcawl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcarl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id = 'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) + 
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;

Hello @Nemesis24 ,

Petite réflexion du jour, suite à la judicieuse remarque de @Lesuperlolo ,

@Ludoc Ton tarif tempo est celui du 08-23. Il a changé au 02-24.

En partant du principe que tu arrives à faire des requêtes sur de longues périodes, comment vas tu gérer les changements de prix comme celui du début de mois, et du coup utiliser l’ancien prix pour les données avant cette augmentation ?

Je n’y connais pas grand chose en db, mais est ce que ça ne vaudrait pas le coup de faire :

  1. un export des données existantes dans une nouvelle db avec le prix correspondant.
  2. alimenter au jour-1 cette db avec le prix actuel.
  3. et du coup utiliser cette db (début des enregistrements jusqu’à j-1) et avec les données du jour pour afficher la carte, du coup plus de problème de table.

Juste une réflexion :wink:

hello, pour le changement de tarif je n’avais rien prévu en plus je pense que ca doit être une vrai usine à gaz, déjà qu’au niveau des requêtes c’est déjà le cas, pour ce que tu propose ensuite cela dépasse clairement mes compétences. Pour les tables si il n’y a pas de solutions directement via la requête il suffira de créer de nouvelles entités pour j-1, m et a qui tape la seconde table et vérifier préalablement dans le code de la carte si on est > ou < à 10 jours, pour taper la bonne entité.

Je pense être ce coup ci bon sur les requêtes sql , les modifications apportées permettent d’obtenir le bon résultat en fonction de la bonne table suivant la specificité d’home assistant sur le court terme et le long terme, ainsi cette version prend en compte une valeur correcte pour les cas ou S-1, M, A sont supérieur ou inférieur à 10 jours…voici le nouveau fichier

### Jour
  - name: hpdb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) + 
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Jour -1
  - name: hpdbl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdwl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpdrl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdbl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdwl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcdrl
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - 86400 +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Semaine
  - name: hpsb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND last_updated_ts <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpsw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hpsr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND last_updated_ts <=   strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsb
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsw
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
  - name: hcsr
    column: "state"
    query: >
      SELECT
        states.state
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND last_updated_ts <=  strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', last_updated_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        last_updated_ts DESC
      LIMIT
        1;
### Semaine -1
  - name: hpsbl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;
  - name: hpswl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;
  - name: hpsrl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;
  - name: hcsbl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;
  - name: hcswl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;
  - name: hcsrl
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND Timestamp <= strftime('%s', 'now') - (((strftime('%w', 'now') + 6) % 7 + 7) * 86400) - (strftime('%s', 'now') % 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp DESC
      LIMIT
        1;      
### Mois
  - name: hpmb
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hpmw
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC 
      LIMIT
        1;
  - name: hpmr
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hcmb
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hcmw
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hcmr
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
### Mois -1
  - name: hpmbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmwl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpmrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmbl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmwl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcmrl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%d', 'now') - 1 + 
        CASE strftime('%m', 'now')
            WHEN '01' THEN 31  -- Decembre
            WHEN '02' THEN 31  -- Janvier
            WHEN '03' THEN 28 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0))  -- Fevrier
            WHEN '04' THEN 31  -- Mars
            WHEN '05' THEN 30  -- Avril
            WHEN '06' THEN 31  -- Mai
            WHEN '07' THEN 30  -- Juin
            WHEN '08' THEN 31  -- Juillet
            WHEN '09' THEN 31  -- Aout
            WHEN '10' THEN 30  -- Septembre
            WHEN '11' THEN 31  -- Octobre
            WHEN '12' THEN 30  -- Novembre
        END) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
### Année
  - name: hpab
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hpaw
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hpar
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhpjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hcab
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC 
      LIMIT
        1;
  - name: hcaw
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC
      LIMIT
        1;
  - name: hcar
    column: "state"
    query: >
      SELECT
        state, last_updated_ts AS Timestamp
      FROM
        states
        INNER JOIN states_meta ON
          states.metadata_id = states_meta.metadata_id
      WHERE
        states_meta.entity_id = 'sensor.em_maison_bbrhcjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      UNION ALL
      SELECT
        state, created_ts AS Timestamp
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjr'
        AND Timestamp >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1) * 86400) +
      CASE
        WHEN strftime('%m', Timestamp) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY Timestamp ASC 
      LIMIT
        1;
### Année -1
  - name: hpabl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hpawl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hparl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhpjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcabl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjb'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcawl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id =  'sensor.em_maison_bbrhcjw'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) +
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;
  - name: hcarl
    column: "state"
    query: >
      SELECT
        statistics.state
      FROM
        statistics
        INNER JOIN statistics_meta ON
          statistics.metadata_id = statistics_meta.id
      WHERE
        statistic_id = 'sensor.em_maison_bbrhcjr'
        AND created_ts >= strftime('%s', 'now') - (strftime('%s', 'now') % 86400) - ((strftime('%j', 'now') - 1 + (strftime('%Y', 'now') % 4 = 0 AND (strftime('%Y', 'now') % 100 != 0 OR strftime('%Y', 'now') % 400 = 0)) * 365) * 86400) + 
      CASE
        WHEN strftime('%m', created_ts) BETWEEN '04' AND '10' THEN 25200
        ELSE 18000
      END
      ORDER BY
        created_ts ASC
      LIMIT
        1;

Bonjour à tous,
Je dois être un peu limité mais y a une chose que je pige pas.

Je voudrais faire dans mon dashboard energie un truc de ce genre.

Cependant je ne possède pas de pinces amperemetrique, ni de Lixee ou autre truc du genre.
Juste mon contrat Tempo et mon Linky que j’arrive a récupérer actuellement dans HA mais avec un seul suivi dans mon Dashboard energy via https://github.com/bokub/ha-linky

(et pas 2 entité par code couleur (bleu blanc rouge - hp et hc)

Je ne vois pas pourquoi ca ne serait pas faisable vu que les plage horaire sont connues et envoyées par le linky mais bon …

Merci d’avance

Bonjour à tous,

J’ai rajouté mes entités dans mon tableau de bord énergie puisque je suis passé sur l’offre TEMPO. Tout fonctionne très bien sauf que je n’ai plus accès à mon historique et ma consommation de mon ancienne offre HC/HP.
Avez vous la même chose ?

bonjour
je veux calculer le prix de revient journalier (pour l’instant) mes commutations de tarifs fonctionnent correctement , j’utilise l’energie HP et l’energie HC cette partie fonctionne correctement mais au changement de tarif ( 6h et 22h) la valeur prend le nouveau tarif au lieu de rester à l’ancien d’où ma question comment bloquer l’evolution du cout à chaque changement de tarif afin de suivre la courbe de l’energie ?
je mets un ex pour que ce soit plus clair :
graphe cout elec hp
graphe energie hc
graphe energie hp
graphe cout elec

le code :

 - name: tarif elec en cours
        
        state:  "{% set t = now().hour %}
           {% if t >= 6 and t < 22 %}
            {% if is_state('sensor.rte_tempo_couleur_actuelle', 'Bleu') %}
              0.1609
            {% elif is_state('sensor.rte_tempo_couleur_actuelle', 'Blanc') %}
              0.1894
            {% elif is_state('sensor.rte_tempo_couleur_actuelle', 'Rouge') %}
              0.7562
            {% else %}
              erreur
            {% endif %}
          {% else %}
            {% if is_state('sensor.rte_tempo_couleur_actuelle', 'Bleu') %}
              0.1296
            {% elif is_state('sensor.rte_tempo_couleur_actuelle', 'Blanc') %}
              0.1486
            {% elif is_state('sensor.rte_tempo_couleur_actuelle', 'Rouge') %}
              0.1568
             {% else %}
              erreur
            {% endif %}
          {% endif %}"
      
      - name : cout elec jour hc
        unit_of_measurement: "€"
        state: "{{ ((states('sensor.tarif_elec_en_cours') |float ) * 
        (states ('sensor.energie_tempo_hc') | float /1000) )  |round(2)}}"
      
      - name : cout elec jour hp
        unit_of_measurement: "€"
        state: "{{ ((states('sensor.tarif_elec_en_cours') |float ) * 
        (states ('sensor.energie_tempo_hp') | float /1000) )  |round(2)}}"
        
      - name : cout elec jour hc+hp
        unit_of_measurement: "€"
        state: "{{ ((states('sensor.cout_elec_jour_hc') |float ) +
        (states ('sensor.cout_elec_jour_hp') | float ) ) |round(2)}}"  
      
        
      

Bonjour,

Comment faire pour déclarer des services comme dans l’exemple ci-dessous (configuration de @samourai47 )

action:
  - service: notify.SMS_FREE_PHILIPPE
    data:
      message: >-
        Aujourd'hui {{ states('sensor.rte_tempo_couleur_actuelle') }}, demain {{
        states('sensor.rte_tempo_prochaine_couleur') }}
  - service: notify.SMS_FREE_MICHELLE
    data:
      message: >-
        La couleur EDF TEMPO. Aujourd'hui {{
notify.SMS_FREE_PHILIPPE
ou
notify.SMS_FREE_MICHELLE

j’ai bien essayé ça dans le configuration.yaml :

notify:
  - name: sms_toto
    platform: sms
    recipient: +33612345678

j’ai sauvegardé et redémarré et lorsque je vais dans « outils de développement » → service notify.sms_toto n’existe pas

Bonjour,

J’essaye d’intégrer la carte de @chuppito dans mon interface mais j’ai une erreur que je n’arrive pas à régler…

Si je prends la carte de base, j’ai bien les infos aujourd’hui et demain:
image

Mais cela ne tient pas compte des modifs apportées pour tenir compte d’un état du prochain jour en « indisponible ».
Là il me retourne le résultat suivant:
image
Pourtant:

  • Je dispose bien de l’info comme quoi demain sera bleu
  • Si réellement je n’avais pas l’info je m’attends à ce que la couleur de fond soit orange si je comprends bien le code

Ca coince très probablement là, mais pour le coup je pige pas quoi…

            var now = new Date();
            var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
            var day = midnight.toLocaleString('fr-FR', { weekday: 'long' });
            var dayOfMonth = ('0' + midnight.getDate()).slice(-2);
            var month = midnight.toLocaleString('fr-FR', { month: 'long' }).replace('.', '');
            var colorState = states['sensor.rte_tempo_prochaine_couleur'];
            var color = (colorState && colorState.state) ? colorState.state : 'indisponible';

Le code en totalité:

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: Aujourd'hui
        show_label: label
        label: |
          [[[
            var now = new Date();
            var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate());
            var day = midnight.toLocaleString('fr-FR', { weekday: 'long' });
            var dayOfMonth = ('0' + midnight.getDate()).slice(-2);
            var month = midnight.toLocaleString('fr-FR', { month: 'long' }).replace('.', '');
            var color = states['sensor.rte_tempo_couleur_actuelle'].state;
            var hpPrice = states['input_number.tarif_edf_tempo_hp_' + color.toLowerCase()].state;
            var hcPrice = states['input_number.tarif_edf_tempo_hc_' + color.toLowerCase()].state;
            var joursRestants = states['sensor.rte_tempo_cycle_jours_restants_' + color.toLowerCase()].state;

            var content = `<span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span><br><span style="font-size: 0.9em; margin: 5px 0;">Jusqu'à 06h00</span><hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">il reste ${joursRestants} ${color}`;
            content += `<br>Tarif HP: ${hpPrice} €/kWh<br>Tarif HC: ${hcPrice} €/kWh`;

            return content;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (color === 'rouge') ? '#fe1b00' : 
                         (color === 'blanc') ? 'white' : 
                         (color === 'bleu') ? 'dodgerblue' : 
                         'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1.2em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          grid:
            - grid-template-areas: '"n" "l"'
            - grid-template-rows: 1fr min-content
          name:
            - font-weight: bold
            - font-size: 1.2em
          label:
            - font-size: 0.8em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
      - type: custom:button-card
        entity: sensor.rte_tempo_prochaine_couleur
        name: Demain
        show_label: true
        label: |
          [[[
            var now = new Date();
            var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
            var day = midnight.toLocaleString('fr-FR', { weekday: 'long' });
            var dayOfMonth = ('0' + midnight.getDate()).slice(-2);
            var month = midnight.toLocaleString('fr-FR', { month: 'long' }).replace('.', '');
            var colorState = states['sensor.rte_tempo_prochaine_couleur'];
            var color = (colorState && colorState.state) ? colorState.state : 'indisponible';
            var hpPriceState = states['input_number.tarif_edf_tempo_hp_' + color.toLowerCase()];
            var hcPriceState = states['input_number.tarif_edf_tempo_hc_' + color.toLowerCase()];
            var joursRestantsState = states['sensor.rte_tempo_cycle_jours_restants_' + color.toLowerCase()].state;
            if (colorState && hpPriceState && hcPriceState && joursRestantsState &&
                colorState.state && hpPriceState.state && hcPriceState.state && joursRestantsState.state) {
              var hpPrice = hpPriceState.state;
              var hcPrice = hcPriceState.state;
              var joursRestants = joursRestantsState.state;
              var content = `<span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span><br><span style="font-size: 0.9em; margin: 5px 0;">Jusqu'à 06h00</span><hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">il reste ${joursRestants} ${color}`;
              content += `<br>Tarif HP: ${hpPrice} €/kWh<br>Tarif HC: ${hcPrice} €/kWh`;
              return content;
            } else {
              // Orange si unavailable
              return 'Jour non défini';
            }
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var colorState = states['sensor.rte_tempo_prochaine_couleur'];
                  if (colorState && colorState.state) {
                    var color = colorState.state.toLowerCase();
                    return (color === 'rouge') ? '#fe1b00' : 
                           (color === 'blanc') ? 'white' : 
                           (color === 'bleu') ? 'dodgerblue' : 
                           (color === 'unavailable') ? 'orange' :
                           'var(--card-background-color)';
                  } else {
                    // Sinon jaune (aucun état ci-dessus)
                    return 'yellow';
                  }
                ]]]
            - color: |
                [[[
                  var colorState = states['sensor.rte_tempo_prochaine_couleur'];
                  return (colorState && colorState.state && colorState.state.toLowerCase() === 'blanc') ? 'black' : 'white';
                ]]]
            - border-radius: 20px
            - padding: 16px
            - font-size: 1.2em
            - text-align: center
            - box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.3)
          grid:
            - grid-template-areas: '"n" "l"'
            - grid-template-rows: 1fr min-content
          name:
            - font-weight: bold
            - font-size: 1.2em
          label:
            - font-size: 0.8em
            - justify-self: center
            - align-self: center
            - margin-top: 10px

Merci d’avance!

Antoine

SLT, pour info les tarifs HP et HC sont faux.
les tarifs en vigueurs:
image

Salut,

Oui merci, je m’en suis rendu compte dans l’aprèm…
Je devais encore être sur les anciens!