Skip to content
This repository has been archived by the owner on Jan 5, 2023. It is now read-only.

Pilea can't crawl data from new Enedis website ! #29

Closed
SimonMellerin opened this issue Apr 15, 2020 · 13 comments
Closed

Pilea can't crawl data from new Enedis website ! #29

SimonMellerin opened this issue Apr 15, 2020 · 13 comments
Labels
help wanted Extra attention is needed

Comments

@SimonMellerin
Copy link
Member

SimonMellerin commented Apr 15, 2020

Bon, eh bien ça devait arriver, Enedis a un nouveau site… ce qui signifie que la manière dont Pilea crawl leur site ne va plus fonctionner.

Il semble cependant que les comptes enedis ouvert avec l’ancienne version continue de foncitonner, mais pour combien de temps ?

ça va pas être facile de faire une nouvelle version, il y a un captcha à l’entré du nouveau site…

j’ai commencé à regarder mais je m’y connais pas trop en front et c’est bizarre en analysant les requêtes sortantes du site, y’a rien qui renvoie des json avec des données, je sais pas comment ça fonctionne, bref à suivre…

Toute aide est la bienvenue : https://gitlab.com/aeneria/aeneria-app/-/issues/1

@SimonMellerin SimonMellerin added the help wanted Extra attention is needed label Apr 15, 2020
@eeaiou
Copy link

eeaiou commented Apr 15, 2020

Bonjour Simon,
Merci pour ces infos. J'en suis vraiment navré. J'avais enfin trouvé un intérêt au compteur Linky.
Je suis bien incapable de t'aider, mes compétences sont bien trop limitées (voire inexistantes à ce niveau-là).
A très bientôt,
Hervé
Edit: je viens d'aller faire un tour sur leur nouveau site, ce serait vraiment top de récupérer les données persos pour pouvoir les réinjecter dans Pilea/aeneia...
En tout cas, je suis prêt à t'aider (testing ou autre) dès que tu en as besoin.

@gaeVG
Copy link

gaeVG commented Apr 16, 2020

@eeaiou, c'est exactement ce que je pensais, n'y aurait-il pas moyen, comme il est possible de le faire avec des données false, d'injecter manuellement ses propres données ?

@SimonMellerin
Copy link
Member Author

SimonMellerin commented Apr 16, 2020

Ouais c'est une possibilité, il y a moyens d'extraire ses données du site Enedis, ils te les envoient par mail au bout de quelques heures (la dernière que j'ai regardé au moins)

Après, ça va vite devenir pénible si toutes les semaines faut réintégrer ses données..

Il y a une autre piste (voir ici guillaumezin/DomoticzLinky#29 (comment)) : Utiliser l'API Enedis

Mais cette API nécessite une clé, pour l'avoir il faut signer un contrat avec Enedis, donc pour l'autohébergement, ça devient un peu lourd à mettre en place... Pour contourner, il pourrait y avoir un serveur qui aurait lui accès à l'API d'Enedis et qui ferait proxy.
Les moins de cette solution :

  • Il faut un serveur pour faire ce proxy, et donc le payer
  • toutes les données passeront par ce serveur, même si le code du serveur est ouvert, ça casse un peu le côté "je reste maître de mes données"

@simon511000
Copy link

En tout cas ça n'a pas l'air d'être facile tout ça
J'espère qu'un jour ils feront une api disponible pour n'importe qui

@inrepublica
Copy link

Est-ce qu'utiliser le serveur de domoticzLinky est envisageable?

@SimonMellerin
Copy link
Member Author

c'est techniquement possible mais dans ce cas, ça veut dire déléguer la connexion à l'API d'Enedis à domoticzLinky, ajouter du trafic sur leur serveur et être dépendant d'eux.

Je préfère avoir la main sur une partie aussi cruciale (sans les données d'enedis l'appli est inutile)

@inrepublica
Copy link

Oui évidemment, peut-être monter un serveur "open source" en commun?
Sinon est-ce possible d'utiliser les données du fournisseur? EDF par exemple semble proposer un suivi de consommation sur son site aussi.

@SimonMellerin
Copy link
Member Author

Le problème avec les données des fournisseurs, c'est

  • il va falloir faire un connecteur pour chaque fournisseur
  • ça oblige les gens a donné l'accès à son historique de consommation horaire à son fournisseur (ce que tout le monde n'a pas envie de faire

Et puis, je pense qu'utiliser l'API d'Enedis est sans doute la solution qui sera la plus stable dans le temps !

@guillaumezin
Copy link

Bonjour, je propose une solution open source que vous pouvez héberger où bon vous semble: https://github.com/guillaumezin/Device-Flow-Proxy-Server

C'est hébergeable gratuitement par exemple par https://www.alwaysdata.com, par contre il vous faut une structure d'entreprise pour signer un contrat avec Enedis et obtenir votre clé privée.

@SimonMellerin
Copy link
Member Author

SimonMellerin commented Apr 28, 2020

bonjour,

Merci pour ta solution @guillaumezin

Si je ne me trompe pas, celle-ci sert uniquement pour les requêtes vers l'API Enedis qui permette d'obtenir l'AccessToken et ensuite, c'est le plugin qui requête directement vers l'API d'Enedis c'est bien ça ?

Si c'est le cas, je pense que je vais essayer autre chose car je voudrais avoir la main sur toutes les requêtes qui sont faites avec mon ClientID : je veux être sûr que personne ne floode Enedis avec mes identifiants d'API. En fait, je voudrais ne pas exposer du tout mon ClientID.
Du coup je pensais faire un serveur sur le principe oauth2 qui sera le point d'entré pour toutes requêtes.

@guillaumezin
Copy link

guillaumezin commented Apr 28, 2020

Le client ID n'est plus utilisé une fois que le token est obtenu ou rafraîchi, donc le Device-Flow-Proxy-Server ne sert que pour obtenir le token. Ensuite, les API Enedis peuvent être appelées directement sans passer par un serveur intermédiaire et risquer de le surcharger.

L'intérêt pour mon plugin Domoticz du Device-Flow-Proxy-Server est aussi d'implémenter comme son nom l'indique la connexion oAuth depuis un serveur ou un périphérique sans écran. Enedis ne propose pas ce mode oAuth. Ca permet de s'identifier avec un serveur "headless", c'est à dire incapable d'ouvrir un navigateur Internet pour lancer l'authentification, ce n'est peut-être pas utile pour votre application, auquel cas vous pourriez simplifier en n'utilisant que la partie "proxy" pour cacher le client ID.

@SimonMellerin
Copy link
Member Author

SimonMellerin commented Apr 28, 2020

Ah oui ! effectivement n'importe quoi, le clientID n'est plus utilisé après.

Je n'avais pas saisi que ton serveur permettait la connexion sans écran. Pour mon application, cela ne sera pas nécessaire, et même, comme elle se destine à être plus "grand public" je préfère que ça soit fait via l'UI.

Merci pour ces précisions !

@SimonMellerin
Copy link
Member Author

æneria package is almost ready to be used, it has been added to Yunohost apps list.

I'm just waiting CI passes to remove the "Work in progress" message.

The package should appear soon in Yunohost apps catalog.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

6 participants