Get EDF Tempo information

Merci pour le boulot ça fonctionne bien chez moi.

Pourquoi interroger toutes les heures ? Est-ce qu’une ou 2 fois par jour ne suffirait pas ? Cela limitera le risque de ban.
Petit détail, est-ce qu’on pourrait faire un affichage de la couleur du jour un peu plus sexy avec une image de la couleur par exemple ?

ça fonctionne bien pour moi avec la dernière proposition de TangiX et rest.yaml
Merci!

Bonjour à tous.

J’ai testé la méthode de TangiX mais rien n’y fait. Mes sensors restent silencieux.

Leurs valeurs restent « inconnu »

L’adresse est elle toujours bonne ?

Merci à vous et merci pour le partage.

Bonjour Archimède,
Pour moi ça fonctionne parfaitement. Laseule modification que j’ai faite est purement estétique, j’ai ajouté un regex pour supprimer le texte TEMPO_.
Voici ce que ça donne

- resource_template: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant={{now().strftime("%Y-%m-%d")}}
  scan_interval: 3600
  sensor:
    - name: "Tempo Demain"
      value_template: "{{ value_json['couleurJourJ1']|regex_replace(find='^TEMPO_', replace='') }}"
    - name: "Tempo Aujourd'hui"
      value_template: "{{ value_json['couleurJourJ']|regex_replace(find='^TEMPO_', replace='') }}"
- resource: https://particulier.edf.fr/services/rest/referentiel/getNbTempoDays?TypeAlerte=TEMPO
  scan_interval: 3600
  sensor:
    - name: "Jours Rouge restants"
      value_template: "{{ value_json.PARAM_NB_J_ROUGE }}"
    - name: "Jours Blanc restants"
      value_template: "{{ value_json.PARAM_NB_J_BLANC }}"
    - name: "Jours Bleu restants"
      value_template: "{{ value_json.PARAM_NB_J_BLEU }}"

As-tu bien inclus le fichier rest.yaml dans configuration.yaml?

2 Likes

Merci beaucoup Patrice pour ta réponse.

Je pense avoir trouver le problème. Je me suis fait bloqué par les serveurs EDF.
Ca fait donc deux jours.
Je vais voir si je peu les contacter demain pour débloquer la situation.
je vous tiendrais au courant.

Bonjours à tous.
Petit retour sur mon expérience. En essayant plusieurs code différents pour ajouter Tempo à mon assistance je me suis fais black-listé par le site d’EDF (sans doute trop de raquettes en trop peu de temps). Il m’a donc fallu attendre un peu plus de 48h pour pouvoir de nouveau envoyer des requêtes au serveur.
Du coup maintenant tout marche correctement.
J’ai même pu utiliser le dernier code de PatriceL qui intègre un regex utile pour la mise en page dans Lovelace.
Merci à tous pour le partage.

1 Like

Hi,
I would like to create an automation with this sensor. When it change from NON_DEFINI to BLEU or BLANC, I would do an action. The issue is I can’t put NON_DEFINI in the « FROM » box. Do you know why and what can I do ?

Thanks in advance

Hello Nouch77
I did this automation and it works fine for me. I received an alert on my mobile phone when the state moved from NON_DEFINI to BLEU.
Funilly enough, I forgot to put BLEU in the To: field, and I received the message, so you can do that if you just want to detect when the value change.
BR

Voici la carte que j’utilise à base de ‘multiple-entity-row’ installable via HACS :
image
C’est pas extraordinaire mais c’est compact et facilement lisible

type: entities
entities:
  - entity: sensor.tempo_aujourd_hui
    type: custom:multiple-entity-row
    icon: mdi:currency-eur
    name: Aujourd'hui
    show_state: false
    entities:
      - name: false
        icon: mdi:radiobox-blank
        icon_color: blue
        hide_if: TEMPO_BLEU
      - name: false
        icon: mdi:radiobox-marked
        icon_color: blue
        hide_if:
          - TEMPO_BLANC
          - TEMPO_ROUGE
          - ND
          - NON_DEFINI
          - unknown
      - name: false
        icon: mdi:radiobox-blank
        icon_color: light_grey
        hide_if: TEMPO_BLANC
      - name: false
        icon: mdi:radiobox-marked
        icon_color: light_grey
        hide_if:
          - TEMPO_BLEU
          - TEMPO_ROUGE
          - ND
          - NON_DEFINI
          - unknown
      - name: false
        icon: mdi:radiobox-blank
        icon_color: red
        hide_if: TEMPO_ROUGE
      - name: false
        icon: mdi:radiobox-marked
        icon_color: light_grey
        hide_if:
          - TEMPO_BLEU
          - TEMPO_BLANC
          - ND
          - NON_DEFINI
          - unknown
  - entity: sensor.tempo_demain
    type: custom:multiple-entity-row
    icon: mdi:currency-eur
    name: Demain
    show_state: false
    entities:
      - name: false
        icon: mdi:radiobox-blank
        icon_color: blue
        hide_if: TEMPO_BLEU
      - name: false
        icon: mdi:radiobox-marked
        icon_color: blue
        hide_if:
          - TEMPO_BLANC
          - TEMPO_ROUGE
          - ND
          - NON_DEFINI
          - unknown
      - name: false
        icon: mdi:radiobox-blank
        icon_color: light_grey
        hide_if: TEMPO_BLANC
      - name: false
        icon: mdi:radiobox-marked
        icon_color: light_grey
        hide_if:
          - TEMPO_BLEU
          - TEMPO_ROUGE
          - ND
          - NON_DEFINI
          - unknown
      - name: false
        icon: mdi:radiobox-blank
        icon_color: red
        hide_if: TEMPO_ROUGE
      - name: false
        icon: mdi:radiobox-marked
        icon_color: light_grey
        hide_if:
          - TEMPO_BLEU
          - TEMPO_BLANC
          - ND
          - NON_DEFINI
          - unknown
  - entity: sensor.jours_rouge_restants
    type: custom:multiple-entity-row
    icon: mdi:calendar-today
    name: Jours restants
    show_state: false
    entities:
      - entity: sensor.jours_bleu_restants
        name: false
      - entity: sensor.jours_blanc_restants
        name: false
      - entity: sensor.jours_rouge_restants
        name: false
title: Tempo

Bonjour,
quelqu’un aurait le code pour EJP au lieu de Tempo ? J’arrive toujours à récupérer le nombre de jours EJP restants mais plus EJP aujourd’hui ni EJP demain …
Merci

Bonjour,
idem pour moi, impossible de trouver le serveur qui fournit les données EJP du jour et du lendemain.
seul le nombre de jours est accessible.

si quelqu’un à la bonne adresse

merci

Salut,

désolé pour la réponse tardive.

Voici ce que j’ai fait pour utiliser l’API RTE (qui fonctionne de nouveau seulement depuis quelques jours, down depuis avril).

Il faut déjà que tu te crées une apiKey sur le site de l’API RTE Tempo-Like-Supply-Contract : API Catalog - API Data RTE
→ Abonnez-vous à l’API

Ensuite voilà ce que j’ai dans mon sensors.yaml (ancienne version, je n’ai pas mis à jour depuis)

  - platform: rest
    name: rte_token
    resource: https://digital.iservices.rte-france.com/token/oauth
    method: GET
    scan_interval: 7000
    headers:
      Authorization: Basic <ici_tu_mets_ton_apiKey_rte>
      Content-Type: application/x-www-form-urlencoded
    value_template: >
      {% if value_json.access_token %}
        {{value_json.access_token}}
      {% else %}
        KO
      {% endif %}
      
  - platform: command_line
    name: color_2days
    command: "curl -X GET 'https://digital.iservices.rte-france.com/open_api/tempo_like_supply_contract/v1/tempo_like_calendars?start_date={{now().strftime(states('input_text.date_format_rte'))}}&end_date={{(now()+timedelta(days=2)).strftime(states('input_text.date_format_rte'))}}' -H 'Authorization: Bearer {{ states('sensor.rte_token') }}'"
    scan_interval: 1800
    value_template: 'OK'
    json_attributes:
      - tempo_like_calendars

  - platform: template
    sensors:
      rte_today_color:
        friendly_name: Aujourd'hui
        value_template: >
          {% set today = now().strftime(states('input_text.date_format_rte')) %}
          {% set today_item = states.sensor.color_2days.attributes['tempo_like_calendars']['values'] | selectattr('start_date', 'eq', today) | list | first %}
          {{ today_item.value }}
      rte_tomorrow_color:
        friendly_name: Demain
        value_template: >
          {% set tomorrow = (now()+timedelta(days=1)).strftime(states('input_text.date_format_rte')) %}
          {% set tomorrow_item = states.sensor.color_2days.attributes['tempo_like_calendars']['values'] | selectattr('start_date', 'eq', tomorrow) | list | first %}
          {{ tomorrow_item.value }}

le premier appel rest te permet de te générer un token d’authentification pour appeler l’api tempo.
le deuxième appel rest te permet de récupérer les infos tempo dans un json et de ne récupérer que ‘tempo_like_calendar’
le template te permet de faire 2 sensors ‘today’ et ‘tomorrow’

(vous pouvez voir 2 façons de faire des appels Rest, soit par la platform ‘rest’ soit par la platform ‘commande line’ en faisant un ‘curl’, je ne suis pas arrivé à utiliser la platform ‘rest’ pour le 2ème appel mais ça fonctionne très bien)

vous remarquerez que j’ai mis le format de la date dans une variable (une entrée texte) ‘input_text.date_format_rte’, ça m’évitait à l’époque de redémarrer pour tester le format de cette foutue date.

Ensuite côté HA et Lovelace j’ai ça :
image

Avec le code suivant :

type: entities
entities:
  - entity: input_text.date_format_rte
  - entity: sensor.rte_token
    name: token
    secondary_info: last-updated
  - entity: sensor.color_2days
    secondary_info: last-updated
  - entity: sensor.rte_today_color
  - entity: sensor.rte_tomorrow_color
state_color: false
title: Paramètres globaux

Malheureusement je n’ai pas assez de temps à consacrer à tout ça pour l’optimiser mais ça fait une bonne base pour ceux qui veulent l’utiliser :wink:

3 Likes

Merci pour ce partage, c’est effectivement la manière la plus compacte.
Chez moi pas de couleurs affichées, on verra plus tard :slight_smile:

great job, please can you share your template code? steplait, steplait…

Je n’ai pas le template de cette présentation, c’est ce qu’il y a sur le site de rte-france.

J’avoue ne pas avoir de temps à consacrer à ça, dommage. :cry:

Voici mon oeuvre :slight_smile:

tempo HA
J’utilise une pile verticale de Lovelace et card_mod pour gérer l’affichage

Tuile N°1

show_name: true
show_icon: false
show_state: true
type: glance
entities:
  - entity: sensor.tempo_aujourd_hui
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
           }
        :host {
          color: black;font-weight: bold;
          border-style: solid;
          border-radius: 15px;
          background: {% if is_state('sensor.tempo_aujourd_hui', 'ROUGE') %} 
                        red 
                      {% endif %}
                      {% if is_state('sensor.tempo_aujourd_hui', 'BLANC') %} 
                        white
                      {% endif %}
                      {% if is_state('sensor.tempo_aujourd_hui', 'BLEU') %} 
                        DodgerBlue
                      {% endif %}
                      {% if is_state('sensor.tempo_aujourd_hui', 'NON_DEFINI') %} 
                        lightgrey
                      {% endif %};
           color: {% if is_state('sensor.tempo_aujourd_hui', 'BLANC') %} 
                   black 
                  {% else %}
                   white 
                  {% endif %};
          }
  - entity: sensor.tempo_demain
    card_mod:
      style: |
        :host .name {
          font-weight: normal;
          font-size: 80%;
           }
        :host {
          color: black;font-weight: bold;
          border-style: double;
          border-radius: 15px;
          background: {% if is_state('sensor.tempo_demain', 'ROUGE') %} 
                        red 
                      {% endif %}
                      {% if is_state('sensor.tempo_demain', 'BLANC') %} 
                        white
                      {% endif %}
                      {% if is_state('sensor.tempo_demain', 'BLEU') %} 
                        DodgerBlue
                      {% endif %}
                      {% if is_state('sensor.tempo_demain', 'NON_DEFINI') %} 
                        lightgrey
                      {% endif %};
           color: {% if is_state('sensor.tempo_demain', 'BLANC') %} 
                   black 
                  {% else %}
                   white 
                  {% endif %};
          }
title: Couleur Tempo

Tuile N°2

show_name: true
show_icon: false
show_state: true
type: glance
entities:
  - entity: sensor.jours_bleu_restants
    card_mod:
      style: |
        :host {
          color: DodgerBlue;font-weight: bold;font-size: 24px;
           }
        :host .name {
          font-weight: normal;
          font-size: 12px;
           }
  - entity: sensor.jours_blanc_restants
    card_mod: null
    style: |
      :host {
        color: grey;font-weight: bold;font-size: 24px;
           }
      :host .name {
          font-weight: normal;
          font-size: 12px;
           }
  - entity: sensor.jours_rouge_restants
    card_mod: null
    style: |
      :host {
        color: tomato;font-weight: bold;font-size: 24px;
           }
      :host .name {
          font-weight: normal;
          font-size: 12px;
           }
7 Likes

Merci, c’est pas mal affiché comme ça !

Par contre pour la 1ère tuile, auj et demain sont blancs, ça donne du texte blanc sur fond blanc, du coup ça n’affiche rien :d

Il y a une condition qui teste si la couleur est BLANC et si c’est le cas, elle passe le texte en noir

Juste par curiosité, du coup vous faites quoi avec l’info de la couleur du lendemain à part l’afficher sur l’UI ? Y a aussi des choses automatisées en fonction du prochain tarif ? Ou des notifications du genre aujourd’hui c’est bleu, demain c’est rouge, tu devrais faire tourner une machine avant que ça bascule ?

Si j’ai bien capté le Tempo (moi j’suis en jour/nuit classique), la distribution des jours rouge est assez aléatoire et parfois il y a cinq jours rouges à la suite. Ça doit être assez galère à automatiser qq chose autour de ça ?

Le premier besoin est d’avoir l’information le plus tôt possible car en effet, la distribution des jours rouges est aléatoire et demande de l’organisation.
EDF nous préviens maintenant via son application la veille, mais l’avoir sur son Dashboard est un plus.
Côté automatisation:

  • je diminue la température de la maison à 16°, juste au cas on nous soyons absent car j’utilise une autre source de chauffage.
  • Le chauffe eau ne fonctionne que deux heures les jours rouges creux.
  • Le matin des jours blanc et rouge, le chauffage démarre plus tôt pour être coupé plus tôt
  • une alerte est envoyée à tous les membres de ma famille pour que tout le monde soit conscient du coût de la consommation

Je me suis arrêté là pour le moment mais il y a sûrement d’autres bonnes idées