Enedis Gateway

Bien le bonjour :slight_smile:

Enedis Gateway, kesako ?

C’est une API que j’ai développer sous Node-RED pour me permettre de récupérer ma consommation électrique depuis le API d’Enedis.

Initialement, c’était juste un POC que j’ai fait sous Node-RED, mais avec le temps c’est devenu un peu plus :stuck_out_tongue:

Pourquoi ne pas avoir tout simplement utilisé les plugins Existant ?

La réponse est assez simple, il vont devenir obsolète d’ici très peu de temps et le sont déjà pour certaines personnes.
En gros l’ancien et le nouveau système fonctionne en parallèle et les comptes qui ont était migrer vers le nouveau système voit leur plugin actuel inutilisable.

Puis-je appeler directement les API d’Enedis ?

Oui et non :smiley:

Non si vous êtes un particulier.

Oui, si vous êtes un professionnel car vous possédez une entité Juridique afin de passer un contrat avec Enedis.

Comment puis-je accéder à mes données ?

Tout est expliqué ici : https://enedisgateway.tech/

Initialement, je voulais mettre en place un « passe plat » sans y stocker aucune données utilisateur, sauf que ceci est impossible dans le sens où pour que vous puissiez appeler les API d’Enedis il faut vous identifier avec un compte Juridique.
Vous trouverez plus d’explication sur ma page d’accueil :slight_smile:

Comment intégré mes données à Home Assistant / Grafana ?

Directement depuis Home Assistant :

@saniho est en train de dev un plugin qui va vous permettre de query mes API directement depuis HA
=> https://forum.hacf.fr/t/sensor-pour-enedis-apienedis/935

Depuis Node-RED vers InfluxDB & MQTT :

J’ai crée un flow Node-RED qui, je le précise, correspond à mon besoin !
Il est largement perfectible :wink:

https://raw.githubusercontent.com/m4dm4rtig4n/node-red-enedis-gateway/main/import.json

Vos informations de connexions sont à définir dans le flow credential en début de chaîne, ainsi que l’url de mon API à savoir :

  • token : Votre token fournis lors de l’inscription à mon service.
  • usage_point_id : Votre point de livraison du compteur.
  • url : https://enedisgateway.tech/api

Il faut également installer les palettes :

  • ajouter la node node-red-contrib-credentials
  • ajouter la node node-red-contrib-unit-converter
  • ajouter la node node-red-contrib-simple-message-queue
  • ajouter la node node-red-contrib-influxdb

Et adapter la configuration du :

  • mqtt-broker pour pointer sur votre serveur mqtt
  • influxdb pour pointer sur votre serveur influx

La partie haute du flow est le coeur du moteur de récupération de données, Les injects permettent de définir sur combien de temps vous désirez récupérer l’historique et split par semaine cette historique car Enedis n’accepte pas de demande supérieurs à 1 semaines !!

MERCI DE NE PAS SATURER LE SERVICE DE DEMANDE !!
Enedis accepte uniquement 5 demandes par secondes et j’ai mit en place un système de queue, si des petits malin s’amuse à saturer le service, ceci impactera tout le monde et ne fera qu’augmenter le temps de récupération de données !
Merci également de laisser les « rates-limit », les retirer ne va pas accélérer votre temps de récupération (au contraire).
Ils sont justement la pour éviter de saturer le service de demande inutile !
=> Je vais d’ailleurs mettre en place un système de ban.

La partie base ne fait qu’exporter des données supplémentaire dans InfluxDB + MQTT pour ma card HA.

Une fois les consentements valider sur ma page d’accueil, il ne vous reste plus qu’a utiliser le service !

Dans mon cas, j’ai utiliser Node-RED pour requêter mes API et importer de la données dans un InfluxDB + MQTT.

Voici un exemple de ma dashboard Grafana :

Pour utiliser correctement la dashboard, il faut :

  • Ajouter les plugins:
    • grafana-piechart-panel
    • farski-blendstat-panel
    • blackmirror1-singlestat-math-panel
  • Ajouter la datasource HASS (qui pointe sur influx)
  • Modifier la dashboard variable PDL
  • Changer le nombre de m2 de votre domicile pour le calcul de norme RTXXXX.

Mon intégration dans HA :

Dans mon cas, j’ai juste crée des sensors qui écoute sur les queues MQTT exporter via mon flow et affiché le tout dans un champ Markdown.

Une documentation est également accessible ici (merci @evenisse) :
https://enedisgateway.tech/doc

Bref, voila mon API est en production et je vous laisse faire joujou avec :wink:
#Enjoy

9 « J'aime »

Merci beaucoup pour le partage ! :+1:

Bonjour,

Je test depuis ce matin mais j’ai l’erreur ci-dessous dans node-red. Je récupère bien via MQTT contrat mais après rien. Chose étonnante normalement je n’ai pas d’heure creuse mais la j’ai l’impression qu’il en défini 1H04-7H04 / 14H04-16H04.

Error: getaddrinfo EAI_AGAIN http

C’est top. Merci du partage ici.

Quelqu’un pour développer un custom component pour interroger l’API sans passer par Node Red et MQTT?

2 « J'aime »

Excellent.

Superbe merci

Je teste aussi. Erreur 404 pour moi avec la commande curl donnée après la validation.
→ pas de données :frowning:

Umh bizarre il te remonte quoi comme erreur ?

Normal, il te remonte l’info liée à ton contrat même si tu ne les utilises pas

A tu bien activer l’historisation des données sur le site d’Enedis ?

Si besoin de debug, je suis dispo sur Discord :wink:

La partie NodeRED fonctionne sans problème.

Pour info, j’ai dû:

  • ajouter la node node-red-contrib-credentials
  • ajouter la node node-red-contrib-unit-converter
  • modifier la config mqtt-broker pour pointer sur mon serveur mqtt
  • modifier la config influxdb pour pointer sur mon serveur influx

La partie Grafana:

  • Ajouter les plugins:
    • grafana-piechart-panel
    • farski-blendstat-panel
    • blackmirror1-singlestat-math-panel
  • Ajouter la datasource HASS (qui pointe sur influx)
  • Modifier la dashboard variable PDL

Encore merci pour la contribution :+1:

L’erreur vient de la fonction field.

07/11/2020 à 17:22:53[node: Fields]function : (error)

« TypeError: Cannot read property ‹ reading_type › of undefined »

J’ai cliqué sur le delete de la partie NodeRED: ça supprime le compte auprès de Enedis Gateway ?

Il me semble que les Linky upload les données toutes les demi-heures …
Donc je peux raisonnablement demander un update de la dernière journée toutes les heures ?

Non, il faut faire une seule demande par jour car tu récupère le jour n-1, donc si tu fait 20x demandes, tu surcharge l’api inutilement car tu reçois les mêmes données.

Ok donc on est obligé de passer par un montage (consommateur d’énergie) pour connaitre sa consommation instantané … :unamused: :cry:

Oui tout à fait.


Merci j’ajoute tt ca dans le tuto :slight_smile:

En gros tu peut récupérer autant d’historique que tu veut, mais demander 1 ans d’historique va te généré environ 50 appel et 50 000 entrée dans ton influxdb (environ) et donc 50 message en queue…

Dans mon cas, je demande tjr 1 semaine d’historique tt les jours, pourquoi 1 semaines et pas une seulement une journée ?
Parce-ce qu’il y arrive qu’il y ai des trou dans les réponses d’Enedis, ca permet de les éviter :slight_smile:
Et demander 1 semaines ne surcharge pas le système dans le sens où c’est une seul demande.

Enedis met à disposition les informations en N-1, c’est à dire que si tu veut les données du 29/10, il faut attendre le 30/10.
=> Il est donc complètement inutile de demander l’informations toutes les 30mins, car il seront tjr strictement identique :slight_smile:

Ma réponse portait sur le fait que @1300371 voulait faire une requête toutes les heures.

Bonjour,
Je dirais plutôt oui j’ai bien l’historique de visible sur le site enedis :+)

J’ai essayé le discord mais message d’erreur concernant l’invitation.

Pepite

Merci beaucoup !! Marche impeccablement.

Je note d’ailleurs la différence de retour entre le forum Jeedom et ici pour la même annonce. Aurait-on, par bonheur, laissé (tous) les râleurs franco-français là-bas :grinning: ?

Je suis jaloux, rien a faire moi, je n’ai pas de données, je me demande ou je buggue :wink:

Est-ce que la commande curl que tu obtiens une fois que tu as autorisé l’accès a Enedis sur https://enedisgateway.tech/ marche?
Ca, c’est la base pour que la suite marche.