Home Assistant, EJP & Tempo

En France EDF nous propose différents contrats associés à différents types de facturation. La gestion du plus classique avec les heures pleines et les heures creuses est facile, il suffit de faire tourner la nuit les appareils les plus énergivores et on connait d'avance les bonnes heures Par contre pour EJP et Tempo, la couleur est annoncée la veille et il peut être intéressant d'adapter le fonctionnement de certains appareils quand le cout de l'électricité est surtaxé, par exemple en baissant le chauffage électrique de 1 ou deux degrés ou en verrouillant l'usage de certains appareils...

Mais encore faut t'il sous Home Assistant disposer de cet état que l'on reçoit généralement par SMS la veille. Ces informations sont disponibles sur le site Web du fournisseur au format JSON et voici comment faire pour en disposer sous Home Assistant

Tempo

On crée quelques sensor:

  - platform: rest
    name: 'Tempo Demain'
    resource_template: https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter={{now().strftime("%Y-%m-%d")}}&TypeAlerte=TEMPO
    value_template: '{{ value_json.JourJ1.Tempo }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: "Tempo Aujourd'hui"
    resource_template: https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter={{now().strftime("%Y-%m-%d")}}&TypeAlerte=TEMPO
    value_template: "{{ value_json['JourJ'].Tempo }}"
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Rouge restants'
    resource: https://particulier.edf.fr/bin/edf_rc/servlets/ejptempodaysnew?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_ROUGE }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Blanc restants'
    resource: https://particulier.edf.fr/bin/edf_rc/servlets/ejptempodaysnew?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_BLANC }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
  - platform: rest
    name: 'Jours Bleu restants'
    resource: https://particulier.edf.fr/bin/edf_rc/servlets/ejptempodaysnew?TypeAlerte=TEMPO
    value_template: '{{ value_json.PARAM_NB_J_BLEU }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)

Et après un redémarrage on doit obtenir ça :

EJP

Ici aussi on crée quelques sensor:

  - platform: rest
    name: "EJP Aujourd'hui"
    resource_template: https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter={{now().strftime("%Y-%m-%d")}}&TypeAlerte=EJP
    value_template: '{{ value_json.JourJ.EjpSud }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
      
  - platform: rest
    name: 'EJP Demain'
    resource_template: https://particulier.edf.fr/bin/edf_rc/servlets/ejptemponew?Date_a_remonter={{now().strftime("%Y-%m-%d")}}&TypeAlerte=EJP
    value_template: "{{ value_json['JourJ1'].EjpSud }}"
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)
      
  - platform: rest
    name: 'Jours restants'
    resource: https://particulier.edf.fr/services/rest/referentiel/historicEJPStore?searchType=ejp
    value_template: '{{ 22 - value_json.SUD.TotalCurrentPeriod }}'
    headers:
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
      Content-Type: application/json
      User-Agent: Wget/1.20.3 (linux-gnu)

Et on obtient :

Exploitation

Pour exploiter ces information dans Home Assistant il sera souvent plus facile d'utiliser un binary_sensor:, voici donc l'exemple pour le tarif EJP :

- platform: template
  sensors:
    ejp_on:
      friendly_name: "Edf : EJP"
      value_template: "{{ is_state('sensor.ejp_aujourd_hui', 'EST_EJP') }}"
      device_class: power   

- platform: template
  sensors:
    ejp_on_demain:
      friendly_name: "EdF : EJP Demain"
      value_template: "{{ is_state('sensor.ejp_demain', 'EST_EJP') }}"
      device_class: power

Ce qui donne :

Chacun pourra fignoler à sa guise, en modifiant la couleur des icônes en fonction de l'état ou en envoyant les notifications idoines... Merci à Patrice pour son aide !

Sources

 

 

Commentaires (13) -

  • Bonjour et merci pour ce partage.

    Etant nouvel utilisateur de Home assistant, et client Tempo, j'ai été ravi de trouver votre étude sur le sujet.
    toutefois je rencontre 2 problèmes :
    1°) HA me signale : Cette entité ("sensor.jours_blanc_restants") n'a pas d'ID unique, par conséquent ses paramètres ne peuvent pas être gérés à partir de l'interface utilisateur.
    Or si j'ajoute un unique-id dans la config, lors de la vérification de syntaxe, j'obtiens un :  [unique_id] is an invalid option for [sensor.rest], indiquant que l'api rest ne prévoit pas ce mot clé. Etant trop novice sur le sujet, je ne sait plus quoi envisager. Auriez vous rencontrer ce PB ?
    2°) dans votre script quel est la fréquence de consultation auprès du site https://particulier.edf.fr ?
    Car si je pose cette question c'est que la carte générée à partir des entités produites, retourne une valeur "inconu"
    Suites à quelques analyse je me suis rendu compte que le sensor a fonctionné correctement durant environ 6 heures et depuis plus d'informations. J'ai donc gratté encore un peu plus loin et j'ai découvert que j'ai été blacklisté par https://particulier.edf.fr. d'ou ma question et serait -il possible de provoquer une consultation du site uniquement à 12:05 et 00:05 largement suffisant pour ce type d'info, afin d'éviter ce genre de situation ?
    Je vous remercie d'avance pour votre analyse.
    • J'ai résolu le problème différemment en supprimant ces tarifs fantaisistes qui apportent plus de contraintes et d'inconfort qu'ils ne font réaliser des économies. Je n'ai donc plus qu'un seul tarif et c'est bien plus simple.
      • Ok Merci.
        C'est en effet une autre manière de faire ;)
    • OK pour le PB de bannissement, j'ai ajouter un "scan_interval: 3600" ce qui devrait résoudre le PB.
      Je reste en attente d'un dé-bannissement pour vérifier.
  • Bonjour,
    vieux sujet ...
    je me lance dans cette intégration pour l'EJP.
    Mais je n'arrive à obtenir que les jours restants. Les Urls pour obtenir les sensors 'EJP aujourd'hui' et 'EJP demain' ne fonctionnent plus ... EDF a du encore modifier des choses ...
    Avez vous les nouveaux ?
    Merci
    • J'ai lâché le sujet. Au final EJP/Tempo et HC/HP présentent plus d'inconvénients et d'inconfort qu'ils ne font réaliser des économies. Je suis donc sur deux installations passé à un tarif unique, et ça simplifie les calculs.
      • Si TEMPO permet de réaliser des économies et notamment depuis les nouveaux tarifs extrêmement à la baisse vs les autres tarifs (moyenne à 13cts/kwh)
        • Si tu y trouve ton compte pour ton usage c'est bien. Pour moi c'est du vent et je ne vais pas contraindre mon confort d'usage pour d'hypothétiques minuscules économies. Après il faut voir pour ton usage.
  • Bonjour, je rencontre un problème sur l'intégration de ton code (je suis débutant sur HA mais habitué de jeedom).
    J'ai donc modifié mon config.yaml pour y faire appel a rest.yaml et dans le rest.yaml j'ai copié ton code.
    Hors quand je redémarre j'ai une erreur en ligne 3 la ligne ou il y a 'Tempo demain' comme si je ne l'avais pas déclaré correctement.
    Comme je te l'ai dit je débute, j'ai lu des dizaine de pages depuis ce matin, j'ai fait un test avec un sensor type monitor cpu ram etc et ça fonctionne.
    Merci à toi
    • Ce code est vieux et je ne suis pas certain que ça fonctionne encore cité EDF.
  • Le problème de Florent vient de l'indentation du code quand on le copie depuis ce site.
    • Merci pour lui, cet article date et je débutais...

Ajouter un commentaire

Loading