# RTE Tempo : carte

**URL:** <https://forum.hacf.fr/t/rte-tempo-carte/51570>\
**Category:** Entraide Home Assistant\
**Tags:** integration\
**Created:** [Novembre 16, 2024, 3:52 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570 "2024-11-16T15:52:16Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 16, 2024, 3:52 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/1 "2024-11-16T15:52:17Z")

</div>

Bonjour à toutes et à toutes.

Je suis passé à l'offre TEMPO d'EDF, j'ai ajouté l'intégration RTE Tempo en suivant [ce tutoriel](https://www.antoineguilbert.fr/afficher-infos-abonnement-tempo-edf-home-assistant/)  
J'ai configuré une carte basée sur plusieurs cartes glanées entre autre ici : [RTE Tempo couleur demain](https://forum.hacf.fr/t/rte-tempo-couleur-demain/36876/9?page=2) et sur [Intégration Tarif EDF](https://forum.hacf.fr/t/integration-tarif-edf/36927/5)

 ![image](https://forum.hacf.fr/uploads/default/original/3X/0/0/0004fd5e90de77d2b00c5f40648d07848aec9dba.png)

Bon, elle est en dev mais le but est d'afficher les prix HP et HC du jour et du lendemain.  
Il semblerait que @MilesTEG1 utilise les variables suivantes :  
sensor.edf\_tempo\_prix\_actuel\_hp  
sensor.edf\_tempo\_prix\_actuel\_hc  
sensor.edf\_tempo\_prix\_demain\_hp  
sensor.edf\_tempo\_prix\_demain\_hc

Or je ne trouve pas d'intégration EDF TEMPO, ces variables n'existent pas ni dans RTE Tempo, ni dans Tarif EDF. Dans Tarif EDF, j'ai juste :  
sensor.tarif\_tempo\_heures\_creuses\_ttc  
sensor.tarif\_tempo\_heures\_pleines\_ttc

Donc, soit je n'ai pas compris un truc, soit il va falloir faire autrement.  
Mon idée est de créer 6 variables : tarifs HP / HC pour les jours rouges / blancs / bleus.  
Par défaut, elles sont vides.  
Si la variables du jour (en fonction de la couleur) est vide =\> la mettre à jour avec sensor.tarif\_tempo\_heures\_creuses\_ttc et sensor.tarif\_tempo\_heures\_pleines\_ttc  
Si la variable n'est pas vide et que le prix a changé =\> mettre à jour la variable correspondante et effacer les autres tarifs car le tarif Tempo a dû changer.

Question : est-il possible de créer les les variables via un script ? Genre si elle n'existe pas, alors la créer ? Ca éviterait de se les taper à la main !!  
L'idée c'est de créer ces 6 variables.  
input\_text.tarif\_tempo\_heures\_creuses\_ttc\_bleu  
input\_text.tarif\_tempo\_heures\_pleines\_ttc\_bleu  
input\_text.tarif\_tempo\_heures\_creuses\_ttc\_blanc  
input\_text.tarif\_tempo\_heures\_pleines\_ttc\_blanc  
input\_text.tarif\_tempo\_heures\_creuses\_ttc\_rouge  
input\_text.tarif\_tempo\_heures\_pleines\_ttc\_rouge

Le but ensuite étant de gérer ces variables dans la carte, puis de gérer les cas (si vide) :

```auto
var color = states['sensor.rte_tempo_couleur_actuelle'].state;
var tarifs_hc = states['input_text.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state;
var tarifs_hp = states['input_text.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state;

```

C'est un bon début où je démarre mal ?

---

<div class="post-metadata">

**Author:** ![MilesTEG1](https://forum.hacf.fr/user_avatar/forum.hacf.fr/milesteg1/32/45824_2.png) [@MilesTEG1](https://forum.hacf.fr/u/MilesTEG1)\
**Post date:** [Novembre 16, 2024, 3:59 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/2 "2024-11-16T15:59:22Z")

</div>

Salut ,  
Avant que je te partage mes sensors, as-tu vu cette intégration ?

> [@Intégration Tarif EDF](https://forum.hacf.fr/t/integration-tarif-edf/36927):
>
> Hello tout le monde, Je vous présente une petite intégration rapide, pour récupérer les tarifs des options Base / HCHP / Tempo assez simplement : [GitHub - delphiki/hass-tarif-edf: Home Assistant integration to retrieve EDF Tariffs](https://github.com/delphiki/hass-tarif-edf) Je me suis pas mal inspiré de ce topic : [API coût du gaz et de l'électricité - #10 par ToOoS](https://forum.hacf.fr/t/api-cout-du-gaz-et-de-lelectricite/17111/10) Merci à @ToOoS notamment pour l’inspiration. wink Notes : Les tarifs Base et HCHP sont récupérés depuis l’opendata de data.gouv : [Historique des tarifs réglementés de ve…](https://www.data.gouv.fr/fr/datasets/historique-des-tarifs-reglementes-de-vente-delectricite-pour-les-consommateurs-residentiels/)

Elle donne les tarifs EDF 😊

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 16, 2024, 4:03 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/3 "2024-11-16T16:03:03Z")

</div>

Je l’ai utilisée mais elle ne donne que :  
sensor.tarif\_tempo\_heures\_creuses\_ttc  
sensor.tarif\_tempo\_heures\_pleines\_ttc

Donc le jour courant, pas le suivant, surtout s’il n’est pas de la même couleur !  
J’ai raté un truc ?

---

<div class="post-metadata">

**Author:** ![Lexyan](https://forum.hacf.fr/user_avatar/forum.hacf.fr/lexyan/32/84090_2.png) [@Lexyan](https://forum.hacf.fr/u/Lexyan)\
**Post date:** [Novembre 16, 2024, 4:38 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/4 "2024-11-16T16:38:24Z")

</div>

Il te manque les templates sensors pour la carte,  
tu trouveras tout ce qu’il faut sur le github de l’integration [GitHub - hekmon/rtetempo: RTE Tempo days calendar and sensors for Home Assistant](https://github.com/hekmon/rtetempo?tab=readme-ov-file) tout en bas tu as des exemples avec les fichiers yaml pour template et input\_number.

---

<div class="post-metadata">

**Author:** ![MilesTEG1](https://forum.hacf.fr/user_avatar/forum.hacf.fr/milesteg1/32/45824_2.png) [@MilesTEG1](https://forum.hacf.fr/u/MilesTEG1)\
**Post date:** [Novembre 16, 2024, 5:14 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/5 "2024-11-16T17:14:04Z")

</div>

@Feneck91  
Alors voilà ce que j’ai comme template et sensors :  
(Je fais un copié collé d’une réponse faite à @David_CLAVERIE 🤣)

Alors, déjà pour les tarifs, il faut te créer des sensors de type `input_numbers` :  
(chez moi c'est dans un fichier yaml séparé, mis en include dans le configuration.yaml de HA :

```yaml
utility_meter: !include_dir_merge_named /config/YAML/utility_meters

```

```yaml
# Source : https://github.com/hekmon/rtetempo?tab=readme-ov-file#exemples-de-cartes-lovelace
# EDF Tarif Bleu Option Base
tarif_edf_base:
  name: EDF Base
  initial: 0.2516
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
# EDF Tarif Bleu Option HP/HC
tarif_edf_base_hc:
  name: EDF Base HC
  initial: 0.2068
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_base_hp:
  name: EDF Base HP
  initial: 0.2700
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
# EDF Tarif Bleu Option Tempo
tarif_edf_tempo_bleu_hc:
  name: EDF Tempo Bleu HC
  initial: 0.1296
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_bleu_hp:
  name: EDF Tempo Bleu HP
  initial: 0.1609
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_blanc_hc:
  name: EDF Tempo Blanc HC
  initial: 0.1486
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_blanc_hp:
  name: EDF Tempo Blanc HP
  initial: 0.1894
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_rouge_hc:
  name: EDF Tempo Rouge HC
  initial: 0.1568
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_tempo_rouge_hp:
  name: EDF Tempo Rouge HP
  initial: 0.7562
  min: 0
  max: 1
  step: 0.0001
  mode: box
  unit_of_measurement: "€ /kWh"
  icon: mdi:cash-lock
tarif_edf_abonnement_tempo_9kva:
  name: EDF Tempo Abonnement mensuel 9kVA
  initial: 16.16
  min: 0
  max: 100
  step: 0.01
  mode: box
  unit_of_measurement: "€ TTC /mois"
  icon: mdi:cash-lock

```

Ensuite, dans le dashboard Énergie, tu places tes sensors de ton ZLinky pour les heures creuses et pleines de couleurs.

 ![CleanShot 2024-11-15 at 21.43.25@2x](https://forum.hacf.fr/uploads/default/original/3X/1/e/1e0e5045c83f68a118ecd17f38a69b437bc51e24.png)  
Quand tu ajoutes tes senors ici, tu peux choisir les tarifs que tu as créé avant.

Après, pour les cartes Tempo, j'ai des template qui génèrent les valeurs affichées :

```yaml
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Configuration pour les prix TEMPO EDF ║
# ╚══════════════════════════════════════════════════════════════════════════╝
- sensor:
    - name: "EDF Tempo Prix Actuel"
      unique_id: "tempo_time_prices_current"
      device_class: "monetary"
      unit_of_measurement: "c€/kWh"
      icon: "mdi:cash-check"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
          {%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
            {{ states('input_number.tarif_edf_tempo_bleu_hp') | float * 100 }}
          {%- else %}
            {{ states('input_number.tarif_edf_tempo_bleu_hc') | float * 100 }}
          {%- endif %}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
          {%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
            {{ states('input_number.tarif_edf_tempo_blanc_hp') | float * 100 }}
          {%- else %}
            {{ states('input_number.tarif_edf_tempo_blanc_hc') | float * 100 }}
          {%- endif %}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
          {%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
            {{ states('input_number.tarif_edf_tempo_rouge_hp') | float * 100 }}
          {%- else %}
            {{ states('input_number.tarif_edf_tempo_rouge_hc') | float * 100 }}
          {%- endif %}
        {%- else %}
          0
        {%- endif %}
    - name: "EDF Tempo Prochain Prix"
      unique_id: "tempo_time_prices_next"
      device_class: "monetary"
      unit_of_measurement: "c€/kWh"
      icon: "mdi:cash-clock"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'on') %}
          {%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hp') | float * 100 }}
          {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hp') | float * 100 }}
          {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hp') | float * 100 }}
          {%- else %}
            0
          {%- endif %}
        {%- else %}
          {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hc') | float * 100 }}
          {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hc') | float * 100 }}
          {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hc') | float * 100 }}
          {%- else %}
            0
          {%- endif %}
        {%- endif %}

  # ╔══════════════════════════════════════════════════════════════════════════╗
  # ║ Variables avec les prix des HC et HP pour le jour actuel et demain ║
  # ╚══════════════════════════════════════════════════════════════════════════╝
    - name: "EDF Tempo Prix Actuel HP"
      unique_id: "tempo_time_prices_current_hp"
      device_class: "monetary"
      unit_of_measurement: "€/kWh"
      icon: "mdi:cash-check"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hp') | float }}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hp') | float }}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hp') | float }}
        {%- else %}
          0
        {%- endif %}
    - name: "EDF Tempo Prix Actuel HC"
      unique_id: "tempo_time_prices_current_hc"
      device_class: "monetary"
      unit_of_measurement: "€/kWh"
      icon: "mdi:cash-check"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_couleur_actuelle'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hc') | float }}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hc') | float }}
        {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hc') | float }}
        {%- else %}
          0
        {%- endif %}
    - name: "EDF Tempo Prix Demain HP"
      unique_id: "tempo_time_prices_tomorrow_hp"
      device_class: "monetary"
      unit_of_measurement: "€/kWh"
      icon: "mdi:cash-check"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hp') | float }}
        {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hp') | float }}
        {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hp') | float }}
        {%- else %}
          0
        {%- endif %}
    - name: "EDF Tempo Prix Demain HC"
      unique_id: "tempo_time_prices_tomorrow_hc"
      device_class: "monetary"
      unit_of_measurement: "€/kWh"
      icon: "mdi:cash-check"
      availability: >
        {{ not 'unavailable' in
          [
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
          ] and not 'unknown' in
          [
            states('sensor.rte_tempo_prochaine_couleur'),
            states('binary_sensor.rte_tempo_heures_creuses'),
            states('input_number.tarif_edf_tempo_bleu_hp'),
            states('input_number.tarif_edf_tempo_bleu_hc'),
            states('input_number.tarif_edf_tempo_blanc_hp'),
            states('input_number.tarif_edf_tempo_blanc_hc'),
            states('input_number.tarif_edf_tempo_rouge_hp'),
            states('input_number.tarif_edf_tempo_rouge_hc')
          ]
        }}
      state: >
        {%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu") %}
            {{ states('input_number.tarif_edf_tempo_bleu_hc') | float }}
        {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc") %}
            {{ states('input_number.tarif_edf_tempo_blanc_hc') | float }}
        {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
            {{ states('input_number.tarif_edf_tempo_rouge_hc') | float }}
        {%- else %}
          0
        {%- endif %}

```

Ensuite, quand tu dis que tu veux récupérer les consos de chaque jour, tu veux dire dans le dashboard énergie ? ou ailleurs avec des cartes ?  
Si c'est le premier, voir plus haut.  
Si c'est le deuxième, il te faut des utility\_meters :

```yaml
# ========================================================================================
# =============== Fichier contenant les utility_meter pour le ZLinky_TIC =================
# ========================================================================================

# ╔════════════════════════════════════════════════════════════════════════════╗
# ║ Utility Meter : Consommation totale ZLinky ║
# ║ - pendant 1 heure ; ║
# ║ - pendant 1 jour ; ║
# ║ - pendant 1 mois ; ║
# ║ - pendant 1 année. ║
# ╚════════════════════════════════════════════════════════════════════════════╝
zlinky_energy_hourly:
  source: sensor.zlinky_tic_east
  cycle: hourly
zlinky_energy_daily:
  source: sensor.zlinky_tic_east
  cycle: daily
zlinky_energy_weekly:
  source: sensor.zlinky_tic_east
  cycle: weekly
zlinky_energy_monthly:
  source: sensor.zlinky_tic_east
  cycle: monthly
zlinky_energy_yearly:
  source: sensor.zlinky_tic_east
  cycle: yearly

# Essai avec template totale conso toutes couleurs
zlinky_somme_toutes_couleurs_energy_hourly:
  source: sensor.zlinky_somme_conso_hc_hp_toutes_couleurs
  cycle: hourly

zlinky_somme_toutes_couleurs_energy_daily:
  source: sensor.zlinky_somme_conso_hc_hp_toutes_couleurs
  cycle: daily

```

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 16, 2024, 5:41 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/6 "2024-11-16T17:41:26Z")

</div>

Wahoo quelle réponse !!!  
En plus je débute donc là il y a des termes que je ne comprend pas. Je vais examiner toute cette mine d’information calmement !

J’ai pas de ZLinky, c’est quoi ? Il faut un boîtier dans le Linky ?  
Pour les consos j’ai mes panneaux photovoltaïques qui donnent la conso de la maison.

D’après ce que j’ai lu, tout est claqué en dur !  
La ce que je propose c’est que ça se fasse en automatique

Bon…

```auto
utility_meter: !include_dir_merge_named /config/YAML/utility_meters

```

Pourquoi utility\_meter: ?? C’est un nom particulier, visiblement on ne peut pas choisir ce que l’on souhaite, ou c’est lié à une intégration ? (J’ai cherché et je n’ai rien trouvé).

Bon, j’ai fais mon fichier avec les prix à 0.  
J’espère pouvoir modifier par un script ces variables comme je le souhaite. Je débute, je ne sais pas encore ce qu’on peut faire, comment on peut le faire et si ce que je souhaite faire est possible.

---

<div class="post-metadata">

**Author:** ![MilesTEG1](https://forum.hacf.fr/user_avatar/forum.hacf.fr/milesteg1/32/45824_2.png) [@MilesTEG1](https://forum.hacf.fr/u/MilesTEG1)\
**Post date:** [Novembre 16, 2024, 7:26 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/7 "2024-11-16T19:26:37Z")

</div>

> [@Feneck91](#):
>
> Wahoo quelle réponse !!!  
> En plus je débute donc là il y a des termes que je ne comprend pas. Je vais examiner toute cette mine d’information calmement !

Ha ! Ça va être costaud de s’attaquetr à ça directement. 🤪

> [@Feneck91](#):
>
> ’ai pas de ZLinky, c’est quoi ? Il faut un boîtier dans le Linky ?  
> Pour les consos j’ai mes panneaux photovoltaïques qui donnent la conso de la maison.

Le ZLinky c’est un petit boitier Zigbee qu’on branche sur la sortie TIC du Linky : [LiXee - ZLinky V2 Antenne\_externe Non](https://lixee.fr/produits/42-75-zlinky-tic-v2-3770014375179.html#/27-antenneexterne-non)

Il y aura moyen de récupérer les consommations des HC/HP selon la couleur du jour et donc avoir le cout via les tarifs de ces couleurs et tranches horaires.  
Mais va falloir travailler un peu sur les templates et les utility\_meters.

> [@Feneck91](#):
>
> Pourquoi utility\_meter: ?? C’est un nom particulier, visiblement on ne peut pas choisir ce que l’on souhaite, ou c’est lié à une intégration ? (J’ai cherché et je n’ai rien trouvé).

voir ici : [Utility Meter - Home Assistant](https://www.home-assistant.io/integrations/utility_meter/)  
c’est un type de capteur.

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 16, 2024, 7:31 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/8 "2024-11-16T19:31:21Z")

</div>

Ok, je vais regarder.

En fait, le fichier de référence doit être lu (quelque part) et en extraire des trucs : je ne trouve pas le trouve pas.  
Visiblement il est lu dans [API Coût du gaz et de l’électricité](https://forum.hacf.fr/t/api-cout-du-gaz-et-de-lelectricite/17111/7) mais pas de prix TEMPO, donc du crées le fichier à la main qui ne se met pas à jour automatiquement.  
C’est çà ?

Pourquoi dans ce cas ne pas parser une page WEB ?  
Ils doivent bien être quelque part ces tarifs ?

Il me manque des briques pour le moment mais je suis développeur, il y a moyen de faire des trucs bien plus puissant.

Il doit être possible d’analyser la page WEB : [https://particulier.edf.fr/fr/accueil/espace-client/mes-contrats.html](https://particulier.edf.fr/fr/accueil/espace-client/mes-contrats.html)

Il y a tout ! La puissance souscrite, les tarifs HP / HC et le prix de l’abonnement !

---

<div class="post-metadata">

**Author:** ![MilesTEG1](https://forum.hacf.fr/user_avatar/forum.hacf.fr/milesteg1/32/45824_2.png) [@MilesTEG1](https://forum.hacf.fr/u/MilesTEG1)\
**Post date:** [Novembre 16, 2024, 8:05 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/9 "2024-11-16T20:05:57Z")

</div>

> [@Feneck91](#):
>
> En fait, le fichier de référence doit être lu (quelque part) et en extraire des trucs : je ne trouve pas le trouve pas.

Oui le fichier .yaml doit être présent dans ton dossier config/.  
Moi je les place dans `/config/YAML/`

 ![CleanShot 2024-11-16 at 20.33.16@2x](https://forum.hacf.fr/uploads/default/original/3X/c/2/c2f56c8f5eb2f7b4d4e8eaff2e325c096abe5a0e.png)  
 ![CleanShot 2024-11-16 at 20.34.02@2x](https://forum.hacf.fr/uploads/default/original/3X/6/0/60a7017e1fa98f84f08b96fafefaf79779d07cd8.png)

> [@Feneck91](#):
>
> Visiblement il est lu dans [API Coût du gaz et de l’électricité](https://forum.hacf.fr/t/api-cout-du-gaz-et-de-lelectricite/17111/7) mais pas de prix TEMPO, donc du crées le fichier à la main qui ne se met pas à jour automatiquement.  
> C’est çà ?

Oui j'ai créé les fichiers à la main. Mais tu peux créer les capteurs via l'interface de HA, ça fera exactement la même chose.

> [@Feneck91](#):
>
> Pourquoi dans ce cas ne pas parser une page WEB ?  
> Ils doivent bien être quelque part ces tarifs ?

Oui, mais c'est comlplexe de faire ce que tu décris ici.  
L'intégration dont je t'ai parlé récupère les tarifs et les mets à dispo avec des sensors.

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 16, 2024, 9:04 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/10 "2024-11-16T21:04:31Z")

</div>

Donc ton fichier yaml est un capteur…  
Si je modifie ce fichier, il est rechargé automatiquement par HA ?

> [@MilesTEG1](#):
>
> L’intégration dont je t’ai parlé récupère les tarifs.

Elle récupère les tarifs où ? A priori dans le lien que j’ai vu : pas de prix Tempo.  
Et de quelle intégration tu parles ? Intégration Tarif EDF ? Il ne récupère pas les prix, enfin si mais pas ceux de Tempo, uniquement les autres tarifs EDF, c’est ici :  
[Historique des tarifs réglementés de ve…](https://www.data.gouv.fr/fr/datasets/historique-des-tarifs-reglementes-de-vente-delectricite-pour-les-consommateurs-residentiels/)

D’après ce que je comprend, tu t’es inspiré de ce qu’il a fait mais au lieu de récupérer dynamiquement les tarifs, tu l’as créé en dur.

Ce que je pourrais certainement faire, c’est de parser la page web.

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 17, 2024, 7:27 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/11 "2024-11-17T07:27:13Z")

</div>

Bon, je tente avec ha-multiscrape :

> **[GitHub - danieldotnl/ha-multiscrape: Home Assistant custom component for scraping...](https://github.com/danieldotnl/ha-multiscrape)**
>
> Home Assistant custom component for scraping (html, xml or json) multiple values (from a single HTTP request) with a separate sensor/attribute for each value. Support for (login) form-submit functionality.

Étape 1, je crée le fichier dans /config/YAML/automatic\_tarifs\_tempo.yaml :

```auto
multiscrape:
  - name: Tarifs EDF Tempo
    authentication: basic
    username: xxxxxx@xxxxx
    password: xxxxxxxxxxxxxxxxxxxxxxxxx
    resource: "https://particulier.edf.fr/fr/accueil/espace-client/selecteur-contrat.html?goto=%2Ffr%2Faccueil%2Fespace-client%2Fmes-contrats.html"
    scan_interval: 60
    sensor:
      - unique_id: puissance_souscrite
        name: Puissance souscrite
        select: "#power"
        value_template: "{{ value.replace('kVA', '') }}"

```

Puis, je l’ajoute dans configuration.yaml, je redémarre HA et là, rien…

```auto
multiscrape: !include_dir_merge_named /config/YAML/automatic_tarifs_tempo.yaml
ou
sensor: !include_dir_merge_named /config/YAML/automatic_tarifs_tempo.yaml

```

Je ne m’attend pas à ce que ça marche, ça va être compliqué pour se logguer, il demande d’abord le login puis le mot de passe mais je m’attendais à voir dans Entities ma variable puissance\_souscrite. Rien.  
Je pense que même si ça ne fonctionne pas je devrais voir les variables.

En ajoutant le contenu du fichier directement dans le fichier configuration, ça fonctionne !  
Enfin, je vois mon entité !  
Je dois pouvoir l’inclure via un include dans le fichier de configuration sans tout mettre dans le fichier de configuration sinon ça va être un peu le bordel.

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 17, 2024, 11:13 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/12 "2024-11-17T11:13:17Z")

</div>

Bon déjà ça marche !  
Dans configuration.yaml :

```auto
multiscrape: !include /config/YAML/automatic_tarifs_tempo.yaml

```

Et le fichier automatic\_tarifs\_tempo.yaml

```auto
- name: Tarifs EDF Tempo
  authentication: basic
  username: wwww@yyyy
  password: zzzzzzzzzzzzzzzzzzzzz
  resource: "https://particulier.edf.fr/fr/accueil/espace-client/selecteur-contrat.html?goto=%2Ffr%2Faccueil%2Fespace-client%2Fmes-contrats.html"
  scan_interval: 60
  sensor:
    - unique_id: puissance_souscrite
      name: Puissance souscrite
      select: "#power"
      value_template: "{{ value.replace('kVA', '') }}"

```

Bon maintenant il va falloir se logguer !

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 17, 2024, 3:29 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/13 "2024-11-17T15:29:50Z")

</div>

Bon je cherche mais je ne comprend pas comment se loguer !  
Visiblement le site EDF indique que le javascript est désactivé.  
Je n’ai pas l’impression que je vais pouvoir me logger !

---

<div class="post-metadata">

**Author:** ![MilesTEG1](https://forum.hacf.fr/user_avatar/forum.hacf.fr/milesteg1/32/45824_2.png) [@MilesTEG1](https://forum.hacf.fr/u/MilesTEG1)\
**Post date:** [Novembre 17, 2024, 7:54 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/14 "2024-11-17T19:54:59Z")

</div>

Bonjour 👋🏻

> [@Feneck91](#):
>
> Donc ton fichier yaml est un capteur…

Alors , oui et non.  
Dans le fichier yaml tu peux avoir plusieurs capteurs (sensors), moi je les groupes par utilisations.  
Donc dans le ficher Zlinky tu trouveras tous les capteurs qui s’y rattachent et ainsi de suite.

> [@Feneck91](#):
>
> Si je modifie ce fichier, il est rechargé automatiquement par HA ?

Non , il faut faire un rechargement via l’onglet « Outils de développement » puis redémarrer HA et enfin « rechargement rapide » ou si ça ne suffit pas « Redémarrer HA ».

> [@Feneck91](#):
>
> Elle récupère les tarifs où ? A priori dans le lien que j’ai vu : pas de prix Tempo.

C’est son auteur qui les mets à jour. Normalement il doit y avoir les tarifs tempo. Mais je ne l’utilise pas.

> [@Feneck91](#):
>
> Et de quelle intégration tu parles ? Intégration Tarif EDF ? Il ne récupère pas les prix, enfin si mais pas ceux de Tempo,

Oui c’est de celle là , mais je pensais qu’il y avait les tarif tempo.  
Apparemment ça n’est pas encore implémenté…  
Faut que tu prennes mes sensors ou d’autres ou que tu crées les tiens.

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 19, 2024, 8:24 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/15 "2024-11-19T08:24:58Z")

</div>

@MilesTEG1 Voici l’idée mais je ne suis pas certain que je puisse faire ça.  
Créer 6 entrées :

- input\_number.tarif\_tempo\_heures\_creuses\_ttc\_bleu
- input\_number.tarif\_tempo\_heures\_pleines\_ttc\_bleu
- input\_number.tarif\_tempo\_heures\_creuses\_ttc\_blanc
- input\_number.tarif\_tempo\_heures\_pleines\_ttc\_blanc
- input\_number.tarif\_tempo\_heures\_creuses\_ttc\_rouge
- input\_number.tarif\_tempo\_heures\_pleines\_ttc\_rouge

Puis, sur changement d’état de sensor.tarif\_tempo\_heures\_creuses\_ttc ou sensor.tarif\_tempo\_heures\_pleines\_ttc faire :  
Si jour en cours est un jour bleu / blanc / rouge =\> trouver la variable à tester dans input\_number.tarif\_tempo\_heures\_xxxxx (en fonction de la couleur et HP / HC).

Si la variable correspondante est à 0 =\> Setter (est-ce que l’on peut ?) la variable avec le bon tarif  
Sinon, mettre toutes les variables (HP / HC en fonction de la couleur) avec le bon tarif et mettre toutes les autres à 0 (les tarifs ont changés).

C’est quand même pas compliqué vu comme ça sauf que …  
J’ai tenté et on ne peut pas comparer l’égalité entre deux entrées.  
Et je n’ai pas encore tenté d’initialiser une variable avec une autre…

Bref c’est facile sur le papier.  
Ça permettrait d’avoir les tarifs à jours SAUF le tarif du lendemain (la première fois après un changement de tarif).

Et j’ai d’autres questions : imaginons que sensor.tarif\_tempo\_heures\_creuses\_ttc change, est-ce que tarif\_tempo\_heures\_pleines\_ttc change en même temps ? Il ne faudrait pas que si tarif\_tempo\_heures\_pleines\_ttc je sois notifié, que je fasse des traitements et que j’assigne à input\_number.tarif\_tempo\_heures\_pleines\_ttc\_ avec un prix qui n’est pas bon.

Sauf à faire 6 automatisations différentes.  
Et idem pour la couleur, ou alors ne le faire qu’a 6h00 du matin ou 6h10 pour être sur que la couleur est OK.

Bref j’ai pas mal de questions

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 27, 2024, 9:03 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/16 "2024-11-27T09:03:00Z")

</div>

Bon, j'ai fini la carte et certaines automatisations :  
Il faut se baser sur ce message : [RTE Tempo couleur demain - #67 par Feneck91](https://forum.hacf.fr/t/rte-tempo-couleur-demain/36876/67)  
Mais j'ai changé 2 choses depuis ce message : la carte et l'automatisation.

La carte (un des message ne prenait pas en compte l'année courante), on peut le voir sur la capture ici (jour restant jusque Août 2024), mais c'est corrigé + ajout du jour de la semaine (mer / jeu /etc) :

 ![image](https://forum.hacf.fr/uploads/default/original/3X/8/7/8797915a0d104b750b24ad9891a8db14a0f30af5.png)

```auto
square: false
type: grid
cards:
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: sensor.rte_tempo_couleur_actuelle
        name: Aujourd'hui
        show_label: true
        label: |
          [[[
            var date = new Date();
            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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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: Demain
        show_label: true
        label: |
          [[[
            var date = new Date();
            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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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: glance
    show_name: true
    show_icon: true
    show_state: true
    entities:
      - entity: sensor.tarif_tempo_heures_creuses_ttc
        name: Tarif HC
        icon: mdi:cash
        card_mod:
          style: |
            :host {
              {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'on') %}
                border-style: solid;
                border-radius: 12px;
                border-color: #ADD6FF;
                background: #ADD6FF;
              {% endif %}
            }
      - entity: sensor.rte_tempo_heures_creuses_changement
        name: Changement
      - entity: sensor.tarif_tempo_heures_pleines_ttc
        name: Tarif HP
        icon: mdi:cash
        card_mod:
          style: |
            :host {
              {% if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
                border-style: solid;
                border-radius: 12px;
                border-color: #FFB6AD;
                background: #FFB6AD;
              {% endif %}
            }
  - 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

```

L'automatisation : je gère désormais le fait que le tarif se met à jour n'importe quand (non testé) : Mise à jour ce jour du tarif blanc à 20h00 passé et ça marche !

```auto
alias: Update Tarif Tempo
description: Mise à jour des tarifs tempo HP / HC :Bleu / Blanc / Rouge
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.rte_tempo_heures_creuses
    from: "on"
    to: "off"
    for:
      hours: 0
      minutes: 0
      seconds: 30
  - trigger: state
    entity_id:
      - sensor.tarif_tempo_heures_creuses_ttc
      - sensor.tarif_tempo_heures_pleines_ttc
    for:
      hours: 0
      minutes: 1
      seconds: 30
conditions:
  - condition: or
    conditions:
      - condition: state
        entity_id: sensor.rte_tempo_couleur_actuelle
        state: Bleu
      - condition: state
        entity_id: sensor.rte_tempo_couleur_actuelle
        state: Blanc
      - condition: state
        entity_id: sensor.rte_tempo_couleur_actuelle
        state: Rouge
  - condition: template
    value_template: >-
      {% set color = states('sensor.rte_tempo_couleur_actuelle').lower() %}

      {% set nameHP = 'input_number.tarif_tempo_heures_pleines_ttc_' ~ color %}

      {% set nameHC = 'input_number.tarif_tempo_heures_creuses_ttc_' ~ color %}

      {% set lastUpdateHCMin = ((as_timestamp(now()) -
      as_timestamp(states['sensor.tarif_tempo_heures_creuses_ttc'].last_updated))
      / 60 | int) %}

      {% set lastUpdateHPMin = ((as_timestamp(now()) -
      as_timestamp(states['sensor.tarif_tempo_heures_pleines_ttc'].last_updated))
      / 60 | int) %}

      {% set isOneValueIsNotSame = (not is_state(nameHP,
      states['sensor.tarif_tempo_heures_pleines_ttc'].state)) or (not
      is_state(nameHC, states['sensor.tarif_tempo_heures_creuses_ttc'].state))
      %}

      {# Si une des deux valeurs (tarif HP et HC) est différente de celle de
      référence ET si les deux dernière mise à jour du tarif datent de moins de
      6h00 #}

      {# Permet de gérer le fait que la mise à jour du tarif peut arriver plus
      tard dans la journée #}

      {{ isOneValueIsNotSame and lastUpdateHCMin < 360 and lastUpdateHPMin < 360
      }}
actions:
  - sequence:
      - if:
          - condition: template
            value_template: >-
              {% set color = states('sensor.rte_tempo_couleur_actuelle').lower()
              %}

              {% set nameHP = 'input_number.tarif_tempo_heures_pleines_ttc_' ~
              color %}

              {% set nameHC = 'input_number.tarif_tempo_heures_creuses_ttc_' ~
              color %}

              {# Si on arrive ici c'est que les tarifs ne correspondent pas #}

              {# Si le tarif en cours n'est pas à 0 c'est que les tarifs ont
              changés, il faut mettre tous les tarifs à 0 #}

              {{ states(nameHP)|float != 0.0 or states(nameHC)|float != 0.0 }}
        then:
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_creuses_ttc_bleu
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_pleines_ttc_bleu
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_creuses_ttc_blanc
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_pleines_ttc_blanc
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_creuses_ttc_rouge
          - action: input_number.set_value
            metadata: {}
            data:
              value: 0
            target:
              entity_id: input_number.tarif_tempo_heures_pleines_ttc_rouge
      - action: input_number.set_value
        metadata: {}
        data:
          value: |
            {{ states['sensor.tarif_tempo_heures_creuses_ttc'].state }}
        target:
          entity_id: >
            {% set color = states('sensor.rte_tempo_couleur_actuelle').lower()
            %} {{ 'input_number.tarif_tempo_heures_creuses_ttc_' ~ color }}
      - action: input_number.set_value
        metadata: {}
        data:
          value: |
            {{ states['sensor.tarif_tempo_heures_pleines_ttc'].state }}
        target:
          entity_id: >
            {% set color = states('sensor.rte_tempo_couleur_actuelle').lower()
            %} {{ 'input_number.tarif_tempo_heures_pleines_ttc_' ~ color }}
mode: single

```

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 28, 2024, 5:14 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/17 "2024-11-28T05:14:03Z")

</div>

Encore un bug !  
Il va falloir corriger ça !!  
Entre minuit et 6:00 la date est fausse, il faudrait mettre hier et aujourd’hui.  
Et à 6:00 les tarifs no sont pas mis à jour donc il faudrait mettre indisponible.  
Ça fait parti des cartes que j’avais récupéré

 ![image](https://forum.hacf.fr/uploads/default/original/3X/6/4/641e33e1dca6e4293346986fc3289063a6c6fc21.png)

 ![image](https://forum.hacf.fr/uploads/default/original/3X/f/2/f204a3436c6a293a7d604239bab7376b5a98e4e4.png)

Edit : Voilà une première correction !  
Mais j'ai perdu le fond bleu / rouge des HC / HP  
Je n'arrive pas à changer les titres pour les centrer ainsi que l'image de la petite horloge.  
La gestion du temps restant n'est plus automatique, il y a du code pour ça, du coup c'est un poil mieux fait.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/e/6/e6f92006a5cc0517374b9c6ff6fed1e7c66f9758.png)

Par exemple, on voit les minutes, ce qui n'était pas le cas avant :

 ![image](https://forum.hacf.fr/uploads/default/original/3X/1/2/12be6d5418db09de4e3841fbee70801b07528217.png)

```auto
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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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
            content: >-
              {# Calcul HC Bleu #}

              {% set tarifs_hc_bleu = 'Indisponible' %}

              {% set tarifs_hc_val_bleu =
              states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].state
              %}

              {% if tarifs_hc_val_bleu != '0.0' %}

              {% set tarifs_hc_bleu = tarifs_hc_val_bleu.replace('.', ',') + " "
              +
              states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].attributes['unit_of_measurement']
              %}

              {% endif %}

              {% set tarifs_hc_blanc = 'Indisponible' %}

              {% set tarifs_hc_val_blanc =
              states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].state
              %}

              {% if tarifs_hc_val_blanc != '0.0' %}

              {% set tarifs_hc_blanc = tarifs_hc_val_blanc.replace('.', ',') + "
              " +
              states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].attributes['unit_of_measurement']
              %}

              {% endif %}

              {% set tarifs_hc_rouge = 'Indisponible' %}

              {% set tarifs_hc_val_rouge =
              states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].state
              %}

              {% if tarifs_hc_val_rouge != '0.0' %}

              {% set tarifs_hc_rouge = tarifs_hc_val_rouge.replace('.', ',') + "
              " +
              states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].attributes['unit_of_measurement']
              %}

              {% endif %}

              **<p style="text-align:center;">Tarif HC</p>**

              🔵 {{ tarifs_hc_bleu }}

              ⚪️ {{ tarifs_hc_blanc }}

              🔴 {{ tarifs_hc_rouge }}
          - 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 %}

              **<p style="text-align:center;">Changement</p>**

              <ha-icon icon="mdi:clock"></ha-icon><br/>

              {{ duration }}
          - type: markdown
            content: >-
              {# Calcul HC Bleu #}

              {% set tarifs_hp_bleu = 'Indisponible' %}

              {% set tarifs_hp_val_bleu =
              states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].state
              %}

              {% if tarifs_hp_val_bleu != '0.0' %}

              {% set tarifs_hp_bleu = tarifs_hp_val_bleu.replace('.', ',') + " "
              +
              states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].attributes['unit_of_measurement']
              %}

              {% endif %}

              {% set tarifs_hp_blanc = 'Indisponible' %}

              {% set tarifs_hp_val_blanc =
              states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].state
              %}

              {% if tarifs_hp_val_blanc != '0.0' %}

              {% set tarifs_hp_blanc = tarifs_hp_val_blanc.replace('.', ',') + "
              " +
              states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].attributes['unit_of_measurement']
              %}

              {% endif %}

              {% set tarifs_hp_rouge = 'Indisponible' %}

              {% set tarifs_hp_val_rouge =
              states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].state
              %}

              {% if tarifs_hp_val_rouge != '0.0' %}

              {% set tarifs_hp_rouge = tarifs_hp_val_rouge.replace('.', ',') + "
              " +
              states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].attributes['unit_of_measurement']
              %}

              {% endif %}

              **<p style="text-align:center;">Tarif HP</p>**

              🔵 {{ tarifs_hp_bleu }}

              ⚪️ {{ tarifs_hp_blanc }}

              🔴 {{ tarifs_hp_rouge }}
  - 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

```

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 28, 2024, 9:32 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/18 "2024-11-28T21:32:01Z")

</div>

Bon, voilà la dernière version de la carte.  
Elle comporte les tarifs HP / HC des jours bleu / blanc / rouge.  
Elle a les titres correctement centrée.  
Les bonnes couleurs des icônes (image de la petite horloge).  
La gestion du temps restant n’est plus automatique, il y a du code pour ça, du coup c’est bien mieux.  
On pourra voir au passage que le tarif blanc s'est correctement mis à jour (tard dans la soirée).  
Les informations de journée (1ère ligne) sont corrigés lorsque l'heure est entre 0:00 et 6h00 du matin.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/8/e/8e12dfe48b83aef4e028073d6c68a462c90c893f.png)

Et voilà le code :

```auto
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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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 tarifs_hc_val_bleu =
              states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].state %}
              {% if tarifs_hc_val_bleu != '0.0' %}
              {% set tarifs_hc_bleu = tarifs_hc_val_bleu.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].attributes['unit_of_measurement'] %}
              {% endif %}
              {% set tarifs_hc_blanc = 'Indisponible' %}
              {% set tarifs_hc_val_blanc = states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].state %}
              {% if tarifs_hc_val_blanc != '0.0' %}
              {% set tarifs_hc_blanc = tarifs_hc_val_blanc.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].attributes['unit_of_measurement'] %}
              {% endif %}
              {% set tarifs_hc_rouge = 'Indisponible' %}
              {% set tarifs_hc_val_rouge = states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].state %}
              {% if tarifs_hc_val_rouge != '0.0' %}
              {% set tarifs_hc_rouge = tarifs_hc_val_rouge.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].attributes['unit_of_measurement'] %}
              {% endif %}

              **<center>Tarif HC</center>**
              <br/>
              🔵 {{ tarifs_hc_bleu }}<br/>
              ⚪️ {{ tarifs_hc_blanc }}<br/>
              🔴 {{ tarifs_hc_rouge }}<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 tarifs_hp_val_bleu = states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].state %}
              {% if tarifs_hp_val_bleu != '0.0' %}
              {% set tarifs_hp_bleu = tarifs_hp_val_bleu.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].attributes['unit_of_measurement'] %}
              {% endif %}
              {% set tarifs_hp_blanc = 'Indisponible' %}
              {% set tarifs_hp_val_blanc = states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].state %}
              {% if tarifs_hp_val_blanc != '0.0' %}
              {% set tarifs_hp_blanc = tarifs_hp_val_blanc.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].attributes['unit_of_measurement'] %}
              {% endif %}
              {% set tarifs_hp_rouge = 'Indisponible' %}
              {% set tarifs_hp_val_rouge = states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].state %}
              {% if tarifs_hp_val_rouge != '0.0' %}
              {% set tarifs_hp_rouge = tarifs_hp_val_rouge.replace('.', ',') + " " + states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].attributes['unit_of_measurement'] %}
              {% endif %}

              **<center>Tarif HP</center>**
              <br/>
              🔵 {{ tarifs_hp_bleu }}<br/>
              ⚪️ {{ tarifs_hp_blanc }}<br/>
              🔴 {{ tarifs_hp_rouge }}<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

```

---

<div class="post-metadata">

**Author:** ![Feneck91](https://forum.hacf.fr/user_avatar/forum.hacf.fr/feneck91/32/76530_2.png) [@Feneck91](https://forum.hacf.fr/u/Feneck91)\
**Post date:** [Novembre 29, 2024, 9:54 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/19 "2024-11-29T09:54:00Z")

</div>

Autre carte.  
J'ai retiré les unités des prix, mis sous le titre.  
En effet, sinon sur un tel portable c'est trop large. Voilà ce que ça donne :

 ![image](https://forum.hacf.fr/uploads/default/original/3X/6/7/674ad05edac8e3520b8255385d0af88e95bb1949.png)

```auto
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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].state);
               if (tarifs_hc_val != 0.0)
               {
                  tarifs_hc_unit = states['input_number.tarif_tempo_heures_creuses_ttc_' + color.toLowerCase()].attributes['unit_of_measurement'];
                  tarifs_hc = tarifs_hc_val.replace('.', ',');
               }
               var tarifs_hp_val = (states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].state);
               if (tarifs_hp_val != 0.0)
               {
                  tarifs_hp_unit = states['input_number.tarif_tempo_heures_pleines_ttc_' + color.toLowerCase()].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['input_number.tarif_tempo_heures_creuses_ttc_bleu'].state %}
              {% if tarifs_hc_val_bleu != '0.0' %}
              {% set tarifs_hc_bleu = tarifs_hc_val_bleu.replace('.', ',') %}
              {# {% set unit_hc_bleu = states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].attributes['unit_of_measurement'] %} #}
              {% endif %}
              {# Calcul HC Blanc #}
              {% set tarifs_hc_blanc = 'Indisponible' %}
              {% set unit_hc_blanc = '' %}
              {% set tarifs_hc_val_blanc = states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].state %}
              {% if tarifs_hc_val_blanc != '0.0' %}
              {% set tarifs_hc_blanc = tarifs_hc_val_blanc.replace('.', ',') %}
              {# {% set unit_hc_blanc = states['input_number.tarif_tempo_heures_creuses_ttc_blanc'].attributes['unit_of_measurement'] %} #}
              {% endif %}
              {# Calcul HC Rouge #}
              {% set tarifs_hc_rouge = 'Indisponible' %}
              {% set unit_hc_rouge = '' %}
              {% set tarifs_hc_val_rouge = states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].state %}
              {% if tarifs_hc_val_rouge != '0.0' %}
              {% set tarifs_hc_rouge = tarifs_hc_val_rouge.replace('.', ',') %}
              {# {% set unit_hc_rouge = states['input_number.tarif_tempo_heures_creuses_ttc_rouge'].attributes['unit_of_measurement'] %} #}
              {% endif %}

              **<center>Tarif HC</center>**
              <center>({{ states['input_number.tarif_tempo_heures_creuses_ttc_bleu'].attributes['unit_of_measurement'] }})</center>
              <br/>
              🔵 {{ tarifs_hc_bleu }} {{ unit_hc_bleu }}<br/>
              ⚪️ {{ tarifs_hc_blanc }} {{ unit_hc_blanc }}<br/>
              🔴 {{ tarifs_hc_rouge }} {{ unit_hc_rouge }}<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['input_number.tarif_tempo_heures_pleines_ttc_bleu'].state %}
              {% if tarifs_hp_val_bleu != '0.0' %}
              {% set tarifs_hp_bleu = tarifs_hp_val_bleu.replace('.', ',') %}
              {# {% set unit_hp_bleu = states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].attributes['unit_of_measurement'] %} #}
              {% endif %}
              {% set tarifs_hp_blanc = 'Indisponible' %}
              {# Calcul HP Blanc #}
              {% set unit_hp_blanc = '' %}
              {% set tarifs_hp_val_blanc = states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].state %}
              {% if tarifs_hp_val_blanc != '0.0' %}
              {% set tarifs_hp_blanc = tarifs_hp_val_blanc.replace('.', ',') %}
              {# {% set unit_hp_blanc = states['input_number.tarif_tempo_heures_pleines_ttc_blanc'].attributes['unit_of_measurement'] %} #}
              {% endif %}
              {% set tarifs_hp_rouge = 'Indisponible' %}
              {# Calcul HP Rouge #}
              {% set unit_hp_rouge = '' %}
              {% set tarifs_hp_val_rouge = states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].state %}
              {% if tarifs_hp_val_rouge != '0.0' %}
              {% set tarifs_hp_rouge = tarifs_hp_val_rouge.replace('.', ',') %}
              {# {% set unit_hp_rouge = states['input_number.tarif_tempo_heures_pleines_ttc_rouge'].attributes['unit_of_measurement'] %} #}
              {% endif %}

              **<center>Tarif HP</center>**
              <center>({{ states['input_number.tarif_tempo_heures_pleines_ttc_bleu'].attributes['unit_of_measurement'] }})</center>
              <br/>
              🔵 {{ tarifs_hp_bleu }} {{ unit_hp_bleu }}<br/>
              ⚪️ {{ tarifs_hp_blanc }} {{ unit_hp_blanc }}<br/>
              🔴 {{ tarifs_hp_rouge }} {{ unit_hp_rouge }}<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

```

---

<div class="post-metadata">

**Author:** ![pascal\_ha](https://forum.hacf.fr/user_avatar/forum.hacf.fr/pascal_ha/32/10823_2.png) [@pascal\_ha](https://forum.hacf.fr/u/pascal_ha)\
**Post date:** [Novembre 29, 2024, 10:53 UTC](https://forum.hacf.fr/t/rte-tempo-carte/51570/20 "2024-11-29T10:53:37Z")

</div>

Salut

Pour ma part, j'ai opter pour une version simplifié.

Apres 06h00 avant 00h00:

 ![IMG_0078](https://forum.hacf.fr/uploads/default/original/3X/3/7/371fb7c0165368ee35fa4c92b09b0c580a7c7831.jpeg)  
De 00h00 a 06h00:  
 ![IMG_0079](https://forum.hacf.fr/uploads/default/original/3X/d/a/da820929c622e27bd0560233c6118498f51ad88d.jpeg)

> **Code**
>
> ```auto
> 
> type: horizontal-stack
> cards:
> - type: custom:button-card
> entity: sensor.rte_tempo_couleur_actuelle
> name: |
> [[[
> var firstDay = "Aujourd'hui";
> if (new Date().getHours() < 8 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
> { 
> // Gestion des jours, entre 0h00 et 6h00 
> firstDay = "Hier";
> }
> return firstDay;
> ]]]
> show_label: true
> label: |
> [[[
> var date = new Date();
> if (date.getHours() < 8 && states['binary_sensor.rte_tempo_heures_creuses'].state === 'on')
> { 
> // Gestion des jours, entre 0h00 et 6h00 
>                   
> date.setDate(date.getDate() - 1);
> }
> var day = date.toLocaleString('fr-FR', { weekday: 'short' }).slice(0, 3);
> var dayOfMonth = ('0' + date.getDate()).slice(-2);
> var month = date.toLocaleString('fr-FR', { month: 'short' }).replace('.', '');
> 
> date.setDate(date.getDate() + 1);
> var daydemain = date.toLocaleString('fr-FR', { weekday: 'short' }).slice(0, 3);
> var dayOfMonthdemain = ('0' + date.getDate()).slice(-2);
> var monthdemain = date.toLocaleString('fr-FR', { month: 'short' }).replace('.', '');
>         
> 
> var hc = states['binary_sensor.rte_tempo_heures_creuses'].state;
> var couleurActuelle = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
> 
> var heuresPleinesActuelles = states['binary_sensor.rte_tempo_heures_creuses'].state;
> var heuresCreusesActuelles = states['binary_sensor.rte_tempo_heures_creuses'].state;
> 
> var hpprixLabel;
> if (couleurActuelle === 'bleu' && heuresPleinesActuelles)
> {hpprixLabel = (Math.round(states['input_number.tarif_edf_tempo_bleu_hp'].state *10000)/100).toString();}
> else if (couleurActuelle === 'blanc' && heuresPleinesActuelles)
> {hpprixLabel = (Math.round(states['input_number.tarif_edf_tempo_blanc_hp'].state *10000)/100).toString();}
> else if (couleurActuelle === 'rouge' && heuresPleinesActuelles)
> {hpprixLabel = (Math.round(states['input_number.tarif_edf_tempo_rouge_hp'].state *10000)/100).toString();} 
> else
> {hpprixLabel = 'Indisponible'};
> 
> var hcprixLabel;
> if (couleurActuelle === 'bleu' && heuresCreusesActuelles)
> {hcprixLabel = (Math.round(states['input_number.tarif_edf_tempo_bleu_hc'].state *10000)/100).toString();}
> else if (couleurActuelle === 'blanc' && heuresCreusesActuelles)
> {hcprixLabel = (Math.round(states['input_number.tarif_edf_tempo_blanc_hc'].state *10000)/100).toString();}
> else if (couleurActuelle === 'rouge' && heuresCreusesActuelles)
> {hcprixLabel = (Math.round(states['input_number.tarif_edf_tempo_rouge_hc'].state *10000)/100).toString();}
> else 
> {hcprixLabel = 'Indisponible'};
> 
> var currentHour = new Date().getHours();
> var isCheckedhp = currentHour >= 6 && currentHour < 22; // Check if the current hour is between 06:00 and 22:00
> var isCheckedhc = currentHour < 6 || currentHour >= 22; // Check if the current hour is before 06:00 or after 22:00
> 
> return `<br><span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span>
> <br><span style="font-size: 0.9em; margin: 5px 0;
> ">Au ${daydemain} ${dayOfMonthdemain} ${monthdemain} à 06h00</span>
> <hr style="margin: 1px 0 8px;"
> "> HP ${hpprixLabel} c€/kWh &nbsp;${isCheckedhp ? '✔' : ''}
> <br>HC ${hcprixLabel} c€/kWh &nbsp;${isCheckedhc ? '✔' : ''}
> <br>Heures creuses ${hc}
> <br>Année 2024/2025<br><br>`;
> ]]]
> styles:
> card:
> - height: 200px
> - background-color: |
> [[[
> var color = states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase();
> return (color === 'rouge') ? '#c62828' : 
> (color === 'blanc') ? 'white' : 
> (color === 'bleu') ? '#1565c0' : 
> 'var(--card-background-color)';
> ]]]
> - color: |
> [[[
> return (states['sensor.rte_tempo_couleur_actuelle'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
> ]]]
> - border-radius: 20px
> - padding: 2px
> - 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
> - type: custom:button-card
> entity: sensor.rte_tempo_prochaine_couleur
> name: |
> [[[
> var secondDay = "Demain";
> if (new Date().getHours() < 8 && 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() < 8 && 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 day = date.toLocaleString('fr-FR', { weekday: 'short' }).slice(0, 3);
> var dayOfMonth = ('0' + date.getDate()).slice(-2);
> var month = date.toLocaleString('fr-FR', { month: 'short' }).replace('.', '');
> var pcolor = states['sensor.rte_tempo_prochaine_couleur'].state;
> 
> var tprice;
> if (pcolor === 'Bleu')
> {tprice = (Math.round(states['input_number.tarif_edf_tempo_bleu_hp'].state *10000)/100).toString();}
> else if (pcolor === 'Blanc')
> {tprice = (Math.round(states['input_number.tarif_edf_tempo_blanc_hp'].state *10000)/100).toString();}
> else if (pcolor === 'Rouge')
> {tprice = (Math.round(states['input_number.tarif_edf_tempo_rouge_hp'].state *10000)/100).toString();} 
> else
> {tprice = 'Indisponible'};    
>         
>         
> var blrest = states['sensor.rte_tempo_cycle_jours_restants_bleu'].state;
> var bcrest = states['sensor.rte_tempo_cycle_jours_restants_blanc'].state;
> var rgrest = states['sensor.rte_tempo_cycle_jours_restants_rouge'].state;
>         
> return `<br><span style="font-size: 1.2em; margin: 10px 0;">${day} ${dayOfMonth} ${month}</span>
> <br><span style="font-size: 0.9em; margin: 5px 0;
> ">A partir de 06h00</span>
> <br><hr style="margin: 1px 0 8px;"
> ">Prix ${tprice} c€/kWh</span>
> <br>🔵 ${blrest} restant 
> <br>⚪️ ${bcrest} restant
> <br>🔴 ${rgrest} restant
>        
> <br><br>`;
> ]]]
> styles:
> card:
> - height: 200px
> - background-color: |
> [[[
> var color = states['sensor.rte_tempo_prochaine_couleur'].state.toLowerCase();
> return (color === 'rouge') ? '#c62828' : 
> (color === 'blanc') ? 'white' : 
> (color === 'bleu') ? '#1565c0' : 
> 'var(--card-background-color)';
> ]]]
> - color: |
> [[[
> return (states['sensor.rte_tempo_prochaine_couleur'].state.toLowerCase() === 'blanc') ? 'black' : 'white';
> ]]]
> - border-radius: 20px
> - padding: 2px
> - 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
> 
> ```

Surtout pour la partie Tarifs, ou je n'ai pas bien compris pourquoi tu as "indisponible", alors que l'on connait les prix au moins pour plusieurs mois ?

[Page suivante](https://forum.hacf.fr/t/rte-tempo-carte/51570.md?page=2)
