API pour récupérer TEMPO EDF

Mon problème

Bonjour

jusqu’à il y a peu de temps j’utilisais le config donnée par Canaletto : My Canaletto | Home Assistant, EJP & Tempo

Mais depuis quelques temps cela ne marche plus. Je suis donc partie a la recherche d’une autre solution.
J’ai trouvé cette API RTE qui permet d’avoir la couleur du jour, du lendemain ainsi que le nombre de jours restant pour chaque couleur (bleue blanc rouge)

API Catalog - API Data RTE ](API Catalog - API Data RTE

manuel :

Mais je ne sais pas comment l’intégrer car il faut une connexion OAuth.

Qui est capable de m’aider
merci

Salut,

je ne sais pas si tu as avancé sur le sujet mais je suis aussi en train d’essayer de voir comment faire cela :slight_smile:

Nico

@coroebus

Non j’ai pas avancé j’ai trouvé d’autres ligne https vers edf qui fonctionnent pour le moment mais c’est vrai que de pouvoir intégrer l’api de Rte serait plus sécurisant malheureusement je ne suis pas doué en programmation !

Si tu y arrive se serai cool.
A+
Seb

Bonjour
Avez vous reussi l’integration API?

Quelle est la nouvelle url pour l’autre methode?

Merci

Bonjour, j’ai réussi à utiliser l’API via curl. Il me reste à comprendre comment mettre ça dans Home Assistant. Je suppose que je devrai utiliser un RESTful Sensor.

Il faut demander sur data rte-france com (merci pour le lien) l’accès en mode web/serveur à « Tempo Like Supply Contract ». On obtient dans « Mes applications » un ID Client et ID Secret. Il y a un bouton « Copier en base 64 », l’utiliser. C’est cette chaîne de caractères qui est utilisée dans la première requête curl.

Mes notes pour ceux qui veulent tester avec curl:

# Demander le token:
curl -H "Authorization: Basic JaiToutChangéIciCeSontLesCredentialsEnBase64==" -H "Content-Type: application/x-www-form-urlencoded" -X POST https://digital.iservices.rte-france.com/token/oauth/

Dans la réponse, il y a l’« access_token » qui nous intéresse. Apparement valide 3h donc il faudra refaire la requête chaque jour j’imagine.

# Demande du jour tempo
curl -H "Authorization: Bearer CollerAccessTokenIci" -i https://digital.iservices.rte-france.com/open_api/tempo_like_supply_contract/v1/tempo_like_calendars

Et on obtient une belle réponse qui nous intéresse.

{"tempo_like_calendars":{"start_date":"2022-10-14T00:00:00+02:00","end_date":"2022-10-15T00:00:00+02:00","values":[{"start_date":"2022-10-14T00:00:00+02:00","end_date":"2022-10-15T00:00:00+02:00","value":"BLUE","updated_date":"2022-10-13T10:20:00+02:00"}]}}
1 « J'aime »
{
   "tempo_like_calendars":{
      "start_date":"2022-10-14T00:00:00+02:00",
      "end_date":"2022-10-15T00:00:00+02:00",
      "values":[
         {
            "start_date":"2022-10-14T00:00:00+02:00",
            "end_date":"2022-10-15T00:00:00+02:00",
            "value":"BLUE",
            "updated_date":"2022-10-13T10:20:00+02:00"
         }
      ]
   }
}

Vous savez comment extraire la valeur « BLEU » de ce bazar de JSON via un RESTful Sensor ?

J’ai trouvé cette bidouille/usine à gaz pour faire marcher l’Oauth2 (je ne peux pas mettre le lien).

mais avant de me lancer j’aimerais déjà faire marcher la requête finale en codant le token en dur juste pour tester.

dans un sensor rest

value_template: "{{ value_json.tempo_like_calendars.values[0].value }}"

Super nouvelle snk4ever et bravo :slight_smile:

je pressé de lire la suite.

seb

Bonjour,
je récupère les infos sur le site edf ( réalisé par Coroebus du Forum Construire https://www.forumconstruire.com/ )
Donc pour les jours tempo:
Tu met dans le fichier configuration YAML :

rest: !include rest.yaml 

Tu créé un fichier rest.yaml et tu y colle :

##########################
# récupération Tempo EDF #
########################## 
- 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 }}"
    - name: "Tempo Aujourd'hui"
      value_template: "{{ value_json.couleurJourJ }}"
- 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 }}"

voilà le résultat:
Capture d’écran du 2022-11-03 10-52-21

merci encore a Coroebus
en espèrant vous avoir aidé

2 « J'aime »

Sur ce lien, tu trouvera l’historique de ce sujet avec differente solution d’affichage. A l’époque je n’avais publié que sur sur community.home-assistant.io car je ne conaissais pas encore HACF et @mycanaletto l’avait republié sur son site https://www.canaletto.fr/ que je vous recommande de visiter.
[ Get EDF Tempo information](Get EDF Tempo information - #43 by Archimede2 - Configuration - Home Assistant Community)
Les liens EDF ont changé en début d’année et il ne semble plus possible de récupérer les prévisions pour EJP.
Si vous trouvez une solution, n’hesitez pas à partager !

Bonjour
Merci pour la méthode.
Comment modifier le code pour que l’état du sensor Tempo_Aujourd’hui soit mis à jour à minuit pile ?
C’est en effet lui qui détermine le calcul du cout des kwh consommés.
Merci d’avance

Hello Alexandre

Le heure creuse tempo sont de 22h à 6h donc le tarif tempo doit changer à 6h! De minut à 6h tu est sur le tempo de la veille.
A+

1 « J'aime »

je te conseil de ne pas utiliser cette façon de faire
car de 0h a 6h, la valeur est fausse et ca génère des requetes inutiles sur le site d’edf (pas besoin de faire ça toutes les heures)

Je te conseil de passer par multiscrape, j’ai fait un tuto et plein d’info a ce sujet là : Api Tempo probléme application - #9 par roumano

(ou mieux d’installer myelectricaldata qui te récupérer ces infos et des données de consommation sur le site d’enefis

Sinon l’intégration de RTE est top:

Pour info, le(s) serveur(s) d’EDF, ne reponds plus depuis hier pour l’api :
ca retourne ce message d’erreur :

RESTEASY003210: Could not find resource for full path: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant=2024-08-29

J’espère que c’est provisoire , …

2 « J'aime »

Bonjour,
Oui depuis hier 18 h.

1 « J'aime »

Dans le même genre avec le module tempo de teleinfo2mqtt
10:15:46.289 ERROR teleinfo2mqtt: Error when fetching tempo data (Request failed with status code 404)

tout à fait, même pb:

L’API semble avoir changé, car sur le site web ce n’est plus la même

https://api-commerce.edf.fr/commerce/activet/v1/saisons/search?option=TEMPO&dateReference=2024-08-29

https://api-commerce.edf.fr/commerce/activet/v1/calendrier-jours-effacement?option=TEMPO&dateApplicationBorneInf=2024-8-29&dateApplicationBorneSup=2024-8-30&identifiantConsommateur=src

sinon, ce qui fonctionne aussi est https://www.api-couleur-tempo.fr/api.
Voici mon rest.yaml pour recuperer la couleur:

# récupération Tempo EDF #

  - resource: https://www.api-couleur-tempo.fr/api/jourTempo/today
    scan_interval: 3600
    sensor:
      - name: "Tempo Aujourd'hui"
        value_template: >
          {% set code = value_json.codeJour %}
          {% if code == 1 %}
            Jour Bleu
          {% elif code == 2 %}
            Jour Blanc
          {% elif code == 3 %}
            Jour Rouge
          {% else %}
            Unknown
          {% endif %}
      - name: "Date Aujourd'hui"
        value_template: "{{ value_json.dateJour }}"
      - name: "Période Aujourd'hui"
        value_template: "{{ value_json.periode }}"

  - resource: https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow
    scan_interval: 3600
    sensor:
      - name: "Tempo Demain"
        value_template: >
          {% set code = value_json.codeJour %}
          {% if code == 1 %}
            Jour Bleu
          {% elif code == 2 %}
            Jour Blanc
          {% elif code == 3 %}
            Jour Rouge
          {% else %}
            Unknown
          {% endif %}
      - name: "Date Demain"
        value_template: "{{ value_json.dateJour }}"
      - name: "Période Demain"
        value_template: "{{ value_json.periode }}"