Skip to content

Instantly share code, notes, and snippets.

@hekmon
Last active July 21, 2025 16:01
Show Gist options
  • Select an option

  • Save hekmon/c2f64f22f58b92eae007797eb1a2732e to your computer and use it in GitHub Desktop.

Select an option

Save hekmon/c2f64f22f58b92eae007797eb1a2732e to your computer and use it in GitHub Desktop.
EDF Time based Tempo prices

Simply include the file within your configuration.yaml file like this:

# ...
template: !include templates.yaml
# ...

You will need prices input number from this gist and the RTE Tempo extension.

- unique_id: "tempo_time_prices"
sensor:
- name: "EDF Tempo Prix Actuel"
unique_id: "current"
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") %}
{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
{{ states('input_number.tarif_edf_tempo_bleu_hp') | float | round(4) }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_bleu_hc') | float | round(4) }}
{%- 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 | round(4) }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_blanc_hc') | float | round(4) }}
{%- 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 | round(4) }}
{%- else %}
{{ states('input_number.tarif_edf_tempo_rouge_hc') | float | round(4) }}
{%- endif %}
{%- else %}
0
{%- endif %}
- name: "EDF Tempo Prochain Prix"
unique_id: "next"
device_class: 'monetary'
unit_of_measurement: "€/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', 'off') %}
{%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
{{ states ('input_number.tarif_edf_tempo_bleu_hc') | float | round(4) }}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
{{ states ('input_number.tarif_edf_tempo_blanc_hc') | float | round(4) }}
{%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
{{ states ('input_number.tarif_edf_tempo_rouge_hc') | float | round(4) }}
{%- else %}
0
{%- endif %}
{%- else %}
{%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu") %}
{{ states ('input_number.tarif_edf_tempo_bleu_hp') | float | round(4) }}
{%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc") %}
{{ states ('input_number.tarif_edf_tempo_blanc_hp') | float | round(4) }}
{%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
{{ states ('input_number.tarif_edf_tempo_rouge_hp') | float | round(4) }}
{%- else %}
0
{%- endif %}
{%- endif %}
@hekmon
Copy link
Author

hekmon commented Nov 14, 2024

Mise à jour depuis hekmon/rtetempo#39

@jlfrucot
Copy link

jlfrucot commented Jan 3, 2025

"EDF Tempo Prochain Prix" ne retourne pas la bonne valeur.
La couleur du jour suivant commence à 6 heures du matin et c'est une heure plein tarif HP. Elle sera suivie d'un tarif heures creuses de la même couleur à partir de 22 heures.
"EDF Tempo Prochain Prix" does not return the correct value. The next day's color starts at 6 a.m. and it's a full price time HP. It will be followed by an off-peak rate of the same color from 10 p.m.

Je propose de faire de la façon suivante :
Si nous sommes en heures pleines :
Alors le tarif suivant est de la même couleur mais pour les heures creuses

I propose to do the following: If we are in peak hours: Then the next rate is the same color but for off-peak hours

{%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
          {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
            {{ states ('input_number.tarif_edf_tempo_bleu_hc') | float | round(4) }}
   ...

Sinon
on est en heures creuses, le prochaine tarif est celui de la couleur du prochain jour en heure pleines :

Else we are in off-peak hours,: then the following rate is the same color but for peak hours:

{%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu")  %}
            {{ states ('input_number.tarif_edf_tempo_bleu_hp') | float | round(4) }}
            
            ...

Soit en entier :

- name: "EDF Tempo Prochain Prix"
      unique_id: "next"
      device_class: 'monetary'
      unit_of_measurement: "€/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')
          ]
        }}
      # Modifié par Jean-Louis Frucot le 2025-01-02
      state: >
        {%- if is_state('binary_sensor.rte_tempo_heures_creuses', 'off') %}
          {%- if is_state('sensor.rte_tempo_couleur_actuelle', "Bleu") %}
            {{ states ('input_number.tarif_edf_tempo_bleu_hc') | float | round(4) }}
          {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Blanc") %}
            {{ states ('input_number.tarif_edf_tempo_blanc_hc') | float | round(4) }}
          {%- elif is_state('sensor.rte_tempo_couleur_actuelle', "Rouge") %}
            {{ states ('input_number.tarif_edf_tempo_rouge_hc') | float | round(4) }}
          {%- endif %}
        {%- else %}
          {%- if is_state('sensor.rte_tempo_prochaine_couleur', "Bleu")  %}
            {{ states ('input_number.tarif_edf_tempo_bleu_hp') | float | round(4) }}
          {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Blanc")  %}
            {{ states ('input_number.tarif_edf_tempo_blanc_hp') | float | round(4) }}
          {%- elif is_state('sensor.rte_tempo_prochaine_couleur', "Rouge") %}
            {{ states ('input_number.tarif_edf_tempo_rouge_hp') | float | round(4) }}
          {%- else %}
            0
          {%- endif %}
        {%- endif %}

@hekmon
Copy link
Author

hekmon commented Jan 4, 2025

Effectivement @jlfrucot j'ai beau relire le code je ne retrouve pas la logique. Le votre me parait bien plus juste. Je l'ai adapté et mis à jour, merci !

@Chrisdie59
Copy link

Bonjour les sensors prix actuel et prochain prix ne fonctionne pas malgre la creation des fichiers templates et input_numbers
J'ai bien le calendrier avec les couleurs de RTE
Une idée ?

@stirof596
Copy link

Bonjour les sensors prix actuel et prochain prix ne fonctionne pas malgre la creation des fichiers templates et input_numbers J'ai bien le calendrier avec les couleurs de RTE Une idée ?

As tu bien ajouté les lignes dans ton fichier configuration .yaml: il faut faire appel a ton template et a ton input_number

@Chrisdie59
Copy link

Super merci resolu

@adariovalhalen
Copy link

Bonjour, j'ai le soucis des sensors qui ne renvoient pas les bonnes valeurs:
image
et pourtant:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment