RTE Tempo : carte

Bon, delphiki a mise à jour son intégration !!
Super boulot !
Voir le lien : Récupération des tarifs EDF Tempo via son compte EDF (Browserless Chromium) - #4 par delphiki

Du coup, je change ma carte pour prendre en compte ces changements.
Suppression de tous les input_number ainsi que de l’automatisation qui n’a jamais correctement fonctionnée.
Voici le nouveau code :

square: false
type: grid
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: |
          [[[
            var firstDay = "Aujourd'hui";

            if (new Date().getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours sont faux, c'est demain !
              firstDay = "Hier";
            }
          return firstDay;
          ]]]
        show_label: true
        label: |
          [[[
            var date = new Date();
            if (date.getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours
              // sont faux, c'est demain !
              date.setDate(date.getDate() - 1);
            }
            var dayOfWeek = date.toLocaleString('fr-FR', { weekday: 'short' });
            var day = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' });
            var color = states['sensor.rte_tempo_couleur_actuelle'].state;
            var color_text = (color === 'unavailable') ? "(Non disponible)" : "Jour " + color;
            // Tarifs
            var tarifs_hc = 'Non disponible';
            var tarifs_hc_unit = '';
            var tarifs_hp = 'Non disponible';
            var tarifs_hp_unit = '';
            if (color !== 'unavailable')
            {
               var tarifs_hc_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'];
                  tarifs_hp = tarifs_hp_val.replace('.', ',');
               }
            }
            return `${dayOfWeek} <span style="font-size: 1.5em;">${day}</span> ${month}<hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">Tarif HC : ${tarifs_hc} ${tarifs_hc_unit}<br/>Tarif HP : ${tarifs_hp} ${tarifs_hp_unit}`;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' : 
                        (color === 'blanc') ? '#ffffff' : 
                        (color === 'bleu') ? '#1565c0' : 
                        '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.9em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
      - type: custom:button-card
        entity: sensor.rte_tempo_prochaine_couleur
        name: |
          [[[
            var secondDay = "Demain";

            if (new Date().getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours sont faux, c'est demain !
              secondDay = "Aujourd'hui";
            }
          return secondDay;
          ]]]
        show_label: true
        label: |
          [[[
            var date = new Date();
            date.setDate(date.getDate() + 1);
            if (date.getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours
              // sont faux, c'est après demain !
              date.setDate(date.getDate() - 1);
            }
            var dayOfWeek = date.toLocaleString('fr-FR', { weekday: 'short' });
            var day = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' });
            var color = states['sensor.rte_tempo_prochaine_couleur'].state;
            var color_text = (color === 'unavailable') ? "(Non disponible)" : "Jour " + color;
            // Tarifs
            var tarifs_hc = 'Non disponible';
            var tarifs_hc_unit = '';
            var tarifs_hp = 'Non disponible';
            var tarifs_hp_unit = '';
            
            if (color !== 'unavailable')
            {
               var tarifs_hc_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'];
                  tarifs_hp = tarifs_hp_val.replace('.', ',');
               }
            }
            return `${dayOfWeek} <span style="font-size: 1.5em;">${day}</span> ${month}<hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">Tarif HC : ${tarifs_hc} ${tarifs_hc_unit}<br/>Tarif HP : ${tarifs_hp} ${tarifs_hp_unit}`;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_prochaine_couleur'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' :
                        (color === 'blanc') ? '#fFfFfF' : 
                        (color === 'bleu') ? '#1565c0' :
                        (color === 'unavailable') ? 'orange' :
                        'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_prochaine_couleur'].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.3em
          label:
            - font-size: 0.9em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
  - type: markdown
    content: "**La couleur du lendemain est actualisée tous les jours dès 6\_h.**\nPour plus d'information, visiter le site [Tempo EDF](https://particulier.edf.fr/fr/accueil/gestion-contrat/options/tempo.html#/).\n\nLes Heures Pleines sont de 6\_h à 22\_h.\nLes Heures Creuses sont de 22\_h à 6\_h.\n"
  - type: grid
    square: false
    columns: 1
    cards:
      - type: horizontal-stack
        cards:
          - type: markdown
            card_mod:
              style:
                ha-markdown: |
                  ha-card
                  {
                    {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'on') %}
                      border-style: solid;
                      border-radius: 12px;
                      border-color: #ADD6FF;
                      background: #ADD6FF;
                    {% endif %}
                  }
            content: >-
              {# Calcul HC Bleu #} {% set tarifs_hc_bleu = 'Indisponible' %} {%
              set unit_hc_bleu = '' %} {% set tarifs_hc_val_bleu =
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_bleu != '0.0' %} {% set tarifs_hc_bleu =
              tarifs_hc_val_bleu.replace('.', ',') %} {# {% set unit_hc_bleu =
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %} {# Calcul HC Blanc #} {% set tarifs_hc_blanc =
              'Indisponible' %} {% set unit_hc_blanc = '' %} {% set
              tarifs_hc_val_blanc =
              states['sensor.tarif_blanc_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_blanc != '0.0' %} {% set tarifs_hc_blanc =
              tarifs_hc_val_blanc.replace('.', ',') %} {# {% set unit_hc_blanc =
              states['sensor.tarif_blanc_tempo_heures_creuses_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %} {# Calcul HC Rouge #} {% set tarifs_hc_rouge =
              'Indisponible' %} {% set unit_hc_rouge = '' %} {% set
              tarifs_hc_val_rouge =
              states['sensor.tarif_rouge_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_rouge != '0.0' %} {% set tarifs_hc_rouge =
              tarifs_hc_val_rouge.replace('.', ',') %} {# {% set unit_hc_rouge =
              states['sensor.tarif_rouge_tempo_heures_creuses_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %}

              **<center>Tarif HC</center>** <center>({{
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].attributes['unit_of_measurement']
              }})</center> <br/> 🔵 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Bleu'
              %}<b>{{ tarifs_hc_bleu }} {{ unit_hc_bleu }}</b>{% else %}{{
              tarifs_hc_bleu }} {{ unit_hc_bleu }}{% endif %}<br/> ⚪️ {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Blanc'
              %}<b>{{ tarifs_hc_blanc }} {{ unit_hc_blanc }}</b>{% else %}{{
              tarifs_hc_blanc }} {{ unit_hc_blanc }}{% endif %}<br/> 🔴 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Rouge'
              %}<b>{{ tarifs_hc_rouge }} {{ unit_hc_rouge }}</b>{% else %}{{
              tarifs_hc_rouge }} {{ unit_hc_rouge }}{% endif %}<br/>
          - type: markdown
            content: >-
              {% set rel =
              ((as_timestamp(states['sensor.rte_tempo_heures_creuses_changement'].state)
              | float) - as_timestamp(now())) %} {% set duration = 'Maintenant'
              %} {% if (rel / 3600.0) >= 2.0 %} {% set duration = 'Dans ' +
              ((rel / 3600.0) | round(0) | string) + ' heures' %} {% elif (rel /
              3600.0) >= 1.0 %} {% set duration = 'Dans une heure' %} {% elif
              rel / 3600.0 > 0.0 and ((rel / 60.0) | round(0)) > 1.0 %} {% set
              duration = 'Dans ' + ((rel / 60.0) | round(0) | string) + '
              minutes' %} {% elif rel / 3600.0 > 0.0 %} {% set duration = 'Dans
              une minute' %} {% endif %}

              **<center>Changement</center>** <br/> <center><font
              color="#44739E"><ha-icon
              icon="mdi:clock"></ha-icon></font><br/></center> <br/> <center>{{
              duration }}</center>
          - type: markdown
            card_mod:
              style:
                ha-markdown: |
                  ha-card
                  {
                    {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
                      border-style: solid;
                      border-radius: 12px;
                      border-color: #FFB6AD;
                      background: #FFB6AD;
                    {% endif %}
                  }
            content: >-
              {# Calcul HP Bleu #} {% set tarifs_hp_bleu = 'Indisponible' %} {%
              set unit_hp_bleu = '' %} {% set tarifs_hp_val_bleu =
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_bleu != '0.0' %} {% set tarifs_hp_bleu =
              tarifs_hp_val_bleu.replace('.', ',') %} {# {% set unit_hp_bleu =
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %} {% set tarifs_hp_blanc = 'Indisponible' %} {#
              Calcul HP Blanc #} {% set unit_hp_blanc = '' %} {% set
              tarifs_hp_val_blanc =
              states['sensor.tarif_blanc_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_blanc != '0.0' %} {% set tarifs_hp_blanc =
              tarifs_hp_val_blanc.replace('.', ',') %} {# {% set unit_hp_blanc =
              states['sensor.tarif_blanc_tempo_heures_pleines_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %} {% set tarifs_hp_rouge = 'Indisponible' %} {#
              Calcul HP Rouge #} {% set unit_hp_rouge = '' %} {% set
              tarifs_hp_val_rouge =
              states['sensor.tarif_rouge_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_rouge != '0.0' %} {% set tarifs_hp_rouge =
              tarifs_hp_val_rouge.replace('.', ',') %} {# {% set unit_hp_rouge =
              states['sensor.tarif_rouge_tempo_heures_pleines_ttc'].attributes['unit_of_measurement']
              %} #} {% endif %}

              **<center>Tarif HP</center>** <center>({{
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].attributes['unit_of_measurement']
              }})</center> <br/> 🔵 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Bleu'
              %}<b>{{ tarifs_hp_bleu }} {{ unit_hp_bleu }}</b>{% else %}{{
              tarifs_hp_bleu }} {{ unit_hp_bleu }}{% endif %}<br/> ⚪️ {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Blanc'
              %}<b>{{ tarifs_hp_blanc }} {{ unit_hp_blanc }}</b>{% else %}{{
              tarifs_hp_blanc }} {{ unit_hp_blanc }}{% endif %}<br/> 🔴 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Rouge'
              %}<b>{{ tarifs_hp_rouge }} {{ unit_hp_rouge }}</b>{% else %}{{
              tarifs_hp_rouge }} {{ unit_hp_rouge }}{% endif %}<br/>
  - type: markdown
    content: |-
      {% set n = now() %}
      {% set year = n.year %}
      {% if n.month < 9 %}
      {% set year = year - 1 %}
      {% endif %}

      **Jours restants**
      Pour la période du 1er septembre {{ year }} au 31 août {{ year + 1 }}

      La journée de demain est déjà prise en compte dans les décomptes affichés.
  - type: horizontal-stack
    cards:
      - type: markdown
        content: |
          **Jours bleus**
          🔵 {{states('sensor.rte_tempo_cycle_jours_restants_bleu')}}/301
      - type: markdown
        content: |
          **Jours blancs**
          ⚪️ {{states('sensor.rte_tempo_cycle_jours_restants_blanc')}}/43
      - type: markdown
        content: |
          **Jours rouges**
          🔴 {{states('sensor.rte_tempo_cycle_jours_restants_rouge')}}/22
columns: 1

La même carte qui remplace EUR par € si l’unité est EUR :

square: false
type: grid
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: |
          [[[
            var firstDay = "Aujourd'hui";

            if (new Date().getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours sont faux, c'est demain !
              firstDay = "Hier";
            }
          return firstDay;
          ]]]
        show_label: true
        label: |
          [[[
            var date = new Date();
            if (date.getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours
              // sont faux, c'est demain !
              date.setDate(date.getDate() - 1);
            }
            var dayOfWeek = date.toLocaleString('fr-FR', { weekday: 'short' });
            var day = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' });
            var color = states['sensor.rte_tempo_couleur_actuelle'].state;
            var color_text = (color === 'unavailable') ? "(Non disponible)" : "Jour " + color;
            // Tarifs
            var tarifs_hc = 'Non disponible';
            var tarifs_hc_unit = '';
            var tarifs_hp = 'Non disponible';
            var tarifs_hp_unit = '';
            if (color !== 'unavailable')
            {
               var tarifs_hc_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€');
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€');
                  tarifs_hp = tarifs_hp_val.replace('.', ',');
               }
            }
            return `${dayOfWeek} <span style="font-size: 1.5em;">${day}</span> ${month}<hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">Tarif HC : ${tarifs_hc} ${tarifs_hc_unit}<br/>Tarif HP : ${tarifs_hp} ${tarifs_hp_unit}`;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' : 
                        (color === 'blanc') ? '#ffffff' : 
                        (color === 'bleu') ? '#1565c0' : 
                        '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.9em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
      - type: custom:button-card
        entity: sensor.rte_tempo_prochaine_couleur
        name: |
          [[[
            var secondDay = "Demain";

            if (new Date().getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours sont faux, c'est demain !
              secondDay = "Aujourd'hui";
            }
          return secondDay;
          ]]]
        show_label: true
        label: |
          [[[
            var date = new Date();
            date.setDate(date.getDate() + 1);
            if (date.getHours() < 12 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
            { // Jusque midi pour se mettre à jour (passer en HC) !
              // Sans cette gestion, entre 0h00 et 6h00 les jours
              // sont faux, c'est après demain !
              date.setDate(date.getDate() - 1);
            }
            var dayOfWeek = date.toLocaleString('fr-FR', { weekday: 'short' });
            var day = ('0' + date.getDate()).slice(-2);
            var month = date.toLocaleString('fr-FR', { month: 'short' });
            var color = states['sensor.rte_tempo_prochaine_couleur'].state;
            var color_text = (color === 'unavailable') ? "(Non disponible)" : "Jour " + color;
            // Tarifs
            var tarifs_hc = 'Non disponible';
            var tarifs_hc_unit = '';
            var tarifs_hp = 'Non disponible';
            var tarifs_hp_unit = '';
            
            if (color !== 'unavailable')
            {
               var tarifs_hc_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€');
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['sensor.tarif_' + color.toLowerCase() + '_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€');
                  tarifs_hp = tarifs_hp_val.replace('.', ',');
               }
            }
            return `${dayOfWeek} <span style="font-size: 1.5em;">${day}</span> ${month}<hr style="margin: 1px 0 8px; border-top: 1px solid rgba(0, 0, 0, 0.2);">Tarif HC : ${tarifs_hc} ${tarifs_hc_unit}<br/>Tarif HP : ${tarifs_hp} ${tarifs_hp_unit}`;
          ]]]
        styles:
          card:
            - height: 130px
            - background-color: |
                [[[
                  var color = states['sensor.rte_tempo_prochaine_couleur'].state.toLowerCase();
                  return (color === 'rouge') ? '#c62828' :
                        (color === 'blanc') ? '#fFfFfF' : 
                        (color === 'bleu') ? '#1565c0' :
                        (color === 'unavailable') ? 'orange' :
                        'var(--card-background-color)';
                ]]]
            - color: |
                [[[
                  return (states['sensor.rte_tempo_prochaine_couleur'].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.3em
          label:
            - font-size: 0.9em
            - justify-self: center
            - align-self: center
            - margin-top: 10px
  - type: markdown
    content: "**La couleur du lendemain est actualisée tous les jours dès 6\_h.**\nPour plus d'information, visiter le site [Tempo EDF](https://particulier.edf.fr/fr/accueil/gestion-contrat/options/tempo.html#/).\n\nLes Heures Pleines sont de 6\_h à 22\_h.\nLes Heures Creuses sont de 22\_h à 6\_h.\n"
  - type: grid
    square: false
    columns: 1
    cards:
      - type: horizontal-stack
        cards:
          - type: markdown
            card_mod:
              style:
                ha-markdown: |
                  ha-card
                  {
                    {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'on') %}
                      border-style: solid;
                      border-radius: 12px;
                      border-color: #ADD6FF;
                      background: #ADD6FF;
                    {% endif %}
                  }
            content: >-
              {# Calcul HC Bleu #} {% set tarifs_hc_bleu = 'Indisponible' %} {%
              set unit_hc_bleu = '' %} {% set tarifs_hc_val_bleu =
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_bleu != '0.0' %} {% set tarifs_hc_bleu =
              tarifs_hc_val_bleu.replace('.', ',') %} {# {% set unit_hc_bleu =
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %} {# Calcul HC Blanc #} {% set tarifs_hc_blanc =
              'Indisponible' %} {% set unit_hc_blanc = '' %} {% set
              tarifs_hc_val_blanc =
              states['sensor.tarif_blanc_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_blanc != '0.0' %} {% set tarifs_hc_blanc =
              tarifs_hc_val_blanc.replace('.', ',') %} {# {% set unit_hc_blanc =
              states['sensor.tarif_blanc_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %} {# Calcul HC Rouge #} {% set tarifs_hc_rouge =
              'Indisponible' %} {% set unit_hc_rouge = '' %} {% set
              tarifs_hc_val_rouge =
              states['sensor.tarif_rouge_tempo_heures_creuses_ttc'].state
              %} {% if tarifs_hc_val_rouge != '0.0' %} {% set tarifs_hc_rouge =
              tarifs_hc_val_rouge.replace('.', ',') %} {# {% set unit_hc_rouge =
              states['sensor.tarif_rouge_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %}

              **<center>Tarif HC</center>** <center>({{
              states['sensor.tarif_bleu_tempo_heures_creuses_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              }})</center> <br/> 🔵 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Bleu'
              %}<b>{{ tarifs_hc_bleu }} {{ unit_hc_bleu }}</b>{% else %}{{
              tarifs_hc_bleu }} {{ unit_hc_bleu }}{% endif %}<br/> ⚪️ {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Blanc'
              %}<b>{{ tarifs_hc_blanc }} {{ unit_hc_blanc }}</b>{% else %}{{
              tarifs_hc_blanc }} {{ unit_hc_blanc }}{% endif %}<br/> 🔴 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Rouge'
              %}<b>{{ tarifs_hc_rouge }} {{ unit_hc_rouge }}</b>{% else %}{{
              tarifs_hc_rouge }} {{ unit_hc_rouge }}{% endif %}<br/>
          - type: markdown
            content: >-
              {% set rel =
              ((as_timestamp(states['sensor.rte_tempo_heures_creuses_changement'].state)
              | float) - as_timestamp(now())) %} {% set duration = 'Maintenant'
              %} {% if (rel / 3600.0) >= 2.0 %} {% set duration = 'Dans ' +
              ((rel / 3600.0) | round(0) | string) + ' heures' %} {% elif (rel /
              3600.0) >= 1.0 %} {% set duration = 'Dans une heure' %} {% elif
              rel / 3600.0 > 0.0 and ((rel / 60.0) | round(0)) > 1.0 %} {% set
              duration = 'Dans ' + ((rel / 60.0) | round(0) | string) + '
              minutes' %} {% elif rel / 3600.0 > 0.0 %} {% set duration = 'Dans
              une minute' %} {% endif %}

              **<center>Changement</center>** <br/> <center><font
              color="#44739E"><ha-icon
              icon="mdi:clock"></ha-icon></font><br/></center> <br/> <center>{{
              duration }}</center>
          - type: markdown
            card_mod:
              style:
                ha-markdown: |
                  ha-card
                  {
                    {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
                      border-style: solid;
                      border-radius: 12px;
                      border-color: #FFB6AD;
                      background: #FFB6AD;
                    {% endif %}
                  }
            content: >-
              {# Calcul HP Bleu #} {% set tarifs_hp_bleu = 'Indisponible' %} {%
              set unit_hp_bleu = '' %} {% set tarifs_hp_val_bleu =
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_bleu != '0.0' %} {% set tarifs_hp_bleu =
              tarifs_hp_val_bleu.replace('.', ',') %} {# {% set unit_hp_bleu =
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %} {% set tarifs_hp_blanc = 'Indisponible' %} {#
              Calcul HP Blanc #} {% set unit_hp_blanc = '' %} {% set
              tarifs_hp_val_blanc =
              states['sensor.tarif_blanc_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_blanc != '0.0' %} {% set tarifs_hp_blanc =
              tarifs_hp_val_blanc.replace('.', ',') %} {# {% set unit_hp_blanc =
              states['sensor.tarif_blanc_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %} {% set tarifs_hp_rouge = 'Indisponible' %} {#
              Calcul HP Rouge #} {% set unit_hp_rouge = '' %} {% set
              tarifs_hp_val_rouge =
              states['sensor.tarif_rouge_tempo_heures_pleines_ttc'].state
              %} {% if tarifs_hp_val_rouge != '0.0' %} {% set tarifs_hp_rouge =
              tarifs_hp_val_rouge.replace('.', ',') %} {# {% set unit_hp_rouge =
              states['sensor.tarif_rouge_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              %} #} {% endif %}

              **<center>Tarif HP</center>** <center>({{
              states['sensor.tarif_bleu_tempo_heures_pleines_ttc'].attributes['unit_of_measurement'].replace('EUR', '€')
              }})</center> <br/> 🔵 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Bleu'
              %}<b>{{ tarifs_hp_bleu }} {{ unit_hp_bleu }}</b>{% else %}{{
              tarifs_hp_bleu }} {{ unit_hp_bleu }}{% endif %}<br/> ⚪️ {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Blanc'
              %}<b>{{ tarifs_hp_blanc }} {{ unit_hp_blanc }}</b>{% else %}{{
              tarifs_hp_blanc }} {{ unit_hp_blanc }}{% endif %}<br/> 🔴 {% if
              states['sensor.rte_tempo_couleur_actuelle'].state == 'Rouge'
              %}<b>{{ tarifs_hp_rouge }} {{ unit_hp_rouge }}</b>{% else %}{{
              tarifs_hp_rouge }} {{ unit_hp_rouge }}{% endif %}<br/>
  - type: markdown
    content: |-
      {% set n = now() %}
      {% set year = n.year %}
      {% if n.month < 9 %}
      {% set year = year - 1 %}
      {% endif %}

      **Jours restants**
      Pour la période du 1er septembre {{ year }} au 31 août {{ year + 1 }}

      La journée de demain est déjà prise en compte dans les décomptes affichés.
  - type: horizontal-stack
    cards:
      - type: markdown
        content: |
          **Jours bleus**
          🔵 {{states('sensor.rte_tempo_cycle_jours_restants_bleu')}}/301
      - type: markdown
        content: |
          **Jours blancs**
          ⚪️ {{states('sensor.rte_tempo_cycle_jours_restants_blanc')}}/43
      - type: markdown
        content: |
          **Jours rouges**
          🔴 {{states('sensor.rte_tempo_cycle_jours_restants_rouge')}}/22
columns: 1
1 « J'aime »