enedis python edf linky

Enedis, Linky, EDF et Python

  • Dernière modification de la publication :27 janvier 2022
  • Temps de lecture :10 min de lecture
  • Commentaires de la publication :5 commentaires

Loading

Pourquoi vais-je parler d’Enedis, de compteur Linky, d’EDF et de Python dans cet article ? Je vais vous raconter ma vie… (enfin, une partie!)

Enedis, compteur Linky, EDF et Python: quand EDF n’affiche plus les consommations

Enedis linky edf python

Tout remonte au mois de décembre. Alors que je m’ennuie, je veux regarder ma consommation d’électricité car j’aime bien les statistiques et cela me permet de maîtriser cette consommation. Bref, je me rends sur mon compte EDF et quelle n’est pas ma surprise lorsque je vois que les données ne sont plus transmises depuis le 7 décembre 2021.

Ni une ni deux, ni trois non plus, je contacte Enedis sur Twitter. On me réponds assez aimablement (sans ironie) que c’est normal car la transmission de données est une option et, a priori, cette option a pris fin le 7 décembre 2021. Pour l’avoir à nouveau, il faut que ej contacte EDF.

Mais comme cette option est, pour moi, une cerise sur le gâteau, dont je peux me passer assez facilement, je ne change rien. Je me dis que cela viens probablement du fait que j’ai changé de contrat…

En effet, après quelques calculs, je me suis aperçu que le contrat « standard » auquel souscrit la plupart des gens (heures pleines/heures creuses) n’est pas du tout avantageux (pour moi comme pour la plupart des gens d’ailleurs, mais ce que font les gens m’importe peu… après tout, ils font ce qu’ils veulent !).

C’est la raison pour laquelle j’ai demandé à EDF ne passer en contrat basique: un tarif unique, quelle que soit l’heure. Après tout, vous en connaissez beaucoup des gens qui consomment de l’énergie la nuit ? À part le chauffe-eau, chez moi, rien ne fonctionne la nuit plus que la journée.

Bref, j’ai décidé de changé de contrat…

maîtrise de la consommation

Je peux me permettre ce genre de choses car je vis seul et que je peux maîtriser ma consommation.

Par exemple, le chauffe-eau qui fonctionne 8 heures de suite, c’est pas obligatoire! Il suffit de l’enclencher manuellement (car en effet, sans le contrat « heure creuse », il ne s’enclenche pas tout seul) 2 heures avant de prendre sa douche et cela suffit: on ne chauffe que la quantité d’eau nécessaire.

Vivant dans une passoire énergétique, je n’allume que rarement le chauffage… Après tout, pourquoi chauffer toute une pièce quand on n’y est pas, surtout si c’est pour que la chaleur s’en aille rapidement ? J’avais des factures énormes à cause de cela (au moins 120 € pour chauffer une pièce de 25 m²… donc beaucoup trop). Du coup, je fais quelques efforts et une bouillotte fais l’affaire pour me chauffer ponctuellement. Résultat: réduction de ma consommation de 20 kwh à moins de 3 kwh.

Bien entendu, il faut avoir le goût de la préhistoire… 🙂

Enedis, compteur Linky, EDF : du Python dans les calculs

Tout ceci ne vous dit pas pourquoi je parle de cela sur mon site… J’y viens !

Sur le site de Enedis, on a la possibilité de visualiser notre consommation énergétique, mais aussi de télécharger au format CSV ces données… Vous me voyez venir hein ?

Oui, j’adore le format CSV car il est exploitable à l’aide Python.

Je télécharge donc le fichier… Bon, il est assez merdique car il ne contient qu’une ligne genre:

"Identifiant PRM";"Type de donnees";"Date de debut";"Date de fin";"Grandeur physique";"Grandeur metier";"Etape metier";"Unite";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
16139507845002;"Index";"01/01/2022";"17/01/2022";"Energie active";"Consommation";"Comptage Brut";"Wh";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
"Horodate";"Type de releve";"EAS F1";"EAS F2";"EAS F3";"EAS F4";"EAS F5";"EAS F6";"EAS F7";"EAS F8";"EAS F9";"EAS F10";"EAS D1";"EAS D2";"EAS D3";"EAS D4";"EAS T";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
"2022-01-02T00:00:00+01:00";"Arrêté quotidien";1143788;;;;;;;;;;1143788;;;;1143788;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Ce qui compte ici est que les consommations sont données de suite après la chaîne « Arrêté quotidien ». Ça, c’est cool… Car je peux écrire un mini-programme Python qui me permet de construire une liste de toutes les consommations afin que je puisse plus tard calculer la différence entre deux consommations consécutives. Ainsi, j’aurai la consommation d’un jour à l’autre.

Allez ! C’est parti !

fichier = 'enedis.csv'

with open('enedis.csv' , 'r' , encoding = 'utf8') as f:
    ligne = f.read().split(';')

conso = []

for i in range( len(ligne) ):
    if ligne[i] == '"Arrêté quotidien"':
        conso.append( int(ligne[i+1]) )

Ici, j’ai supposé que le fichier enedis.csv est le fichier téléchargé.

La liste « conso » contient maintenant toutes les valeurs nécessaires (exprimée en watt-heure).

Consultons la grille tarifaire d’EDF:

Bon, perso, j’ai souscrit un abonnement de 6 kVA donc je n’ai plus qu’à compléter mon programme pour que cela me sorte le prix à payer en fin de mois:

somme = 11.47 # prix de l'abonnement mensuel - 6 kWA

for i in range(1,len(conso)):
    p = (conso[i] - conso[i-1])*0.1558/1000
    somme += p
    print( '{:1.2f} €'.format(p))
    
print ('Somme totale : {:1.2f} €'.format(somme))

Et voilà !

Bon, comme j’ai envie de perfectionner tout ça, j’ai tout de même ajouté quelques fioritures :

fichier = 'enedis.csv'

with open('enedis.csv' , 'r' , encoding = 'utf8') as f:
    ligne = f.read().split(';')

conso , dates = [] , []

for i in range( len(ligne) ):
    if ligne[i] == 'Arrêté quotidien':
        conso.append( int(ligne[i+1]) )
        dates.append( ligne[i-1][2:12] )

somme = 11.47 # prix de l'abonnement mensuel - 6 kWA

for i in range(0,len(conso)):
    if i > 0:
        p = (conso[i] - conso[i-1])*0.1558/1000
        somme += p
    else:
        p = 0
        
    print( '{} : {} Wh - {:1.2f} €'.format(dates[i-1] , conso[i-1] , p) )
    
print ('\nSomme totale : {:1.2f} €'.format(somme))
2022-01-01 : 1360290 Wh - 0.00 €
2022-01-02 : 1143788 Wh - 1.51 €
2022-01-03 : 1153452 Wh - 0.51 €
2022-01-04 : 1156704 Wh - 0.29 €
2022-01-05 : 1158591 Wh - 0.94 €
2022-01-06 : 1164621 Wh - 2.40 €
2022-01-07 : 1180035 Wh - 2.01 €
2022-01-08 : 1192933 Wh - 1.73 €
2022-01-09 : 1204006 Wh - 2.18 €
2022-01-10 : 1218008 Wh - 1.37 €
2022-01-11 : 1226803 Wh - 2.55 €
2022-01-12 : 1243144 Wh - 3.19 €
2022-01-13 : 1263594 Wh - 4.19 €
2022-01-14 : 1290488 Wh - 3.13 €
2022-01-15 : 1310602 Wh - 3.98 €
2022-01-16 : 1336170 Wh - 3.76 €

Somme totale : 45.20 €

Edit du 27/01/2022

Il semblerait que le fichier CSV que l’on peut télécharger sur le site de Enedis ne soit pas toujours structuré de la même façon… Merci !… Le script que j’ai donc écris il y a à peine quelques jours ne fonctionne donc pas toujours… Quelle blague !

En effet, j’ai voulu ajouter un graphique, et je me suis rendu compte de la blague…

A priori, le code fonctionne à condition d’ajouter des points-virgules à la fin de chaque ligne du fichier CSV après les consommations…

2022-01-02T00:00:00+01:00;Arrêté quotidien;1143788;;;;;;;;;;1143788;;;;1143788;
2022-01-03T00:00:00+01:00;Arrêté quotidien;1153452;;;;;;;;;;1153452;;;;1153452;
from matplotlib.pyplot import show, bar, xlabel, ylabel

fichier = 'enedis.csv'

with open('enedis.csv' , 'r' , encoding = 'utf8') as f:
    ligne = f.read().split(';')

conso , dates = [] , []

for i in range( len(ligne) ):
    if ligne[i] == "Arrêté quotidien":
        conso.append( int(ligne[i+1]) )
        dates.append( ligne[i-1][9:11] )

somme = 11.47 # prix de l'abonnement mensuel - 6 kWA
D, Y = [], []

for i in range(0,len(conso)):
    if i > 0:
        p = (conso[i] - conso[i-1])*0.1558/1000
        Y.append(p)
        D.append(dates[i])
        somme += p
    else:
        p = 0
    
    print( '{} : {} Wh - {:1.2f} €'.format(dates[i-1] , conso[i-1] , p) )
    
print ('\nSomme totale : {:1.2f} €'.format(somme))

bar(D, Y)
xlabel('Dates')
ylabel('Prix (en €)')
show()

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
5 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
METROT

A quoi correspond les chiffres en EAS D1 D2 D3 D4 ? MERCI.

Chouille

Pour info :
« correspond à la valeur de l’index relevé sur le poste 1 de la grille Distributeur Depuis le 1er août 2015, l’ensemble des utilisateurs du réseau contribuent au financement des gestionnaires du réseau d’électricité, tels qu’ERDF. Ce financement est appelé Tarif d’Utilisation des Réseaux Publics d’Electricité (TURPE). Le TURPE est calculé sur la base d’une grille composée de quatre index (ou 4 postes), en fonction de la période de la journée, les saisons ou le mois.  »
Source : http://www.tonweb.fr/Files/Other/doc_aide_suivi_conso.pdf

pierrelouis35

Une petite erreur dans le script :

 File « /usr/lib/cgi-bin/solar/enedis.py », line 12, in <module>
   conso.append( int(ligne[i+1]) )
ValueError: invalid literal for int() with base 10:  »

Il faut tester sir ligne[i] n’est pas vide:
 if ligne[i] == « Arrêté quotidien » and ligne[i+1]: