Last active
November 13, 2025 14:34
-
-
Save Rebolon/d1199e5f8934c6ad8e3651e8d5df2b7a to your computer and use it in GitHub Desktop.
Télécharger les 2 dernières années de consommation électrique par heure depuis le site enedis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 0. Il faut avoir activé la remontée d'info sur le site d'enedis | |
| 1. Aller sur le site d'enedis, page de visualisation des mesures : https://mon-compte-particulier.enedis.fr/visualiser-vos-mesures-production | |
| 2. Ourvir le devtools de votre navigateur : touche F12 | |
| 3. Coller le script dans la console du devTools | |
| 4. Faire un clique droit sur le tableau affiché à la fin du script et choisir Copier Objet | |
| 5. Coller le contenu dans un fichier texte/js/json | |
| Faites en ce que vous voulez pour analyser | |
| Script : | |
| ``` | |
| const apiVersion = "2"; | |
| const personId = "YOUR_PERSONID"; // find it in enedis.fr | |
| const prms = "YOUR_PRMS"; // find it in enedis.fr | |
| const startDate = "YYYY-MM-DD"; // can be null to take 2 years of data | |
| // build dates for last 2 years | |
| let dates = []; | |
| let today = new Date(); | |
| if (startDate === null) { | |
| today.setFullYear(today.getFullYear()-2); | |
| } else { | |
| today = new Date(startDate); | |
| } | |
| while (today < new Date()) { | |
| dates.push(today.toISOString().split('T').shift()); | |
| today.setDate(today.getDate()+7); | |
| } | |
| const sleep = ms => new Promise(res => setTimeout(res, ms)); | |
| const getJsonByHours = async (dates, personId, prms) => { | |
| const jsons = []; | |
| for (const date of dates) { | |
| const uriForCurrentDate = `https://alex.microapplications.enedis.fr/mes-mesures-prm/api/private/v${apiVersion}/personnes/${personId}/prms/${prms}/donnees-energetiques?mesuresTypeCode=COURBE&mesuresCorrigees=false&typeDonnees=CONS&dateDebut=${date}&segments=C5`; | |
| const data = await fetch(uriForCurrentDate, { | |
| "headers": { | |
| "accept": "application/json", | |
| "accept-language": "en,fr;q=0.9,fr-FR;q=0.8,en-GB;q=0.7,en-US;q=0.6", | |
| "sec-fetch-mode": "cors", | |
| "sec-fetch-site": "same-site" | |
| }, | |
| "referrer": "https://frontend-mes-mesures-prm-cloud.enedis.fr/", | |
| "referrerPolicy": "strict-origin-when-cross-origin", | |
| "body": null, | |
| "method": "GET", | |
| "mode": "cors", | |
| "credentials": "include" | |
| }); | |
| const json = await data.json(); | |
| jsons.push(json); | |
| await sleep(3000); | |
| } | |
| console.log(jsons); | |
| return jsons; | |
| } | |
| // build hours stack | |
| const getDataByHours = async (jsons) => { | |
| const hours = []; | |
| jsons.forEach((week) => { | |
| if (week.cons.aggregats.heure.unite !== "kW") { | |
| console.warn("Probleme d'unite"); | |
| return; | |
| } | |
| hours.push(...week.cons.aggregats.heure.donnees) | |
| }) | |
| console.log(hours); | |
| return hours; | |
| } | |
| // Execute functions with proper async/await | |
| (async () => { | |
| const jsons = await getJsonByHours(dates, personId, prms); | |
| const hours = await getDataByHours(jsons); | |
| console.log(hours); | |
| })(); | |
| ``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment