Skip to content

Instantly share code, notes, and snippets.

@Rebolon
Last active November 13, 2025 14:34
Show Gist options
  • Select an option

  • Save Rebolon/d1199e5f8934c6ad8e3651e8d5df2b7a to your computer and use it in GitHub Desktop.

Select an option

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
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