menu home
 
  Derniers projets :

•   Serveur mail Postfix/Dovecot sur Raspberry Pi sous Raspbian

•   Circuit vidéo anti-Macrovision / Macrovision remover

•   Indicateur de niveau d'humidité de la terre pour plante

•   Récupération consommation EDF via Raspberry Pi

•   Station Météo avec Raspberry Pi

•   ...

[ Voir la suite ... ]    

 
  Derniers projets :

•   Programme pour le convertisseur impulsions téléphoniques en signal DTMF pour téléphone à cadran

•   ...

[ Voir la suite ... ]    

 
  •   Cathode Corner
 
•   Kosbo
 
•   Semageek
 
 
a propos
 
contact
 
  categorie
  Récupération consommation EDF via Raspberry Pi
  > Raspberry Pi
img avancement
Commencé le 01/11/2014 à 22:16  


Cherchant des réalisations existantes sur de la domotique, j'ai trouvé divers projets permettant de récupérer les données de consommation électrique.
Je me suis dit que pouvoir surveiller ma consommation électronique bien précisément me permettrait de faire quelques économies.

Après quelques recherche sur comment faire, je me suis rendu compte que les compteurs électriques après 2007 étaient équipés d'une sortie numérique d'information appelée "téléinformation" (sorties L1 et L2).

img


On pourrait donc récupérer le signal sur cette sortie pour l'analyser et collecter ces informations de façon périodique.

Comment les données sont-elles transmises ?
Il s'agit d'une sortie série modulé à 50kHz à environ 5V.
C'est à dire que pour un 1, pas de signal, pour un 0 quelques périodes d'un signal 50Khz.

img


Une fois démodulé, on obtient un signal série classique avec les caractéristiques suivantes :
- 1200 bauds
- 7 bits par caractères
- parité paire
- 1 bit de stop

Pour pouvoir récupérer le signal du compteur, j'ai utilisé un optocoupleur 6N138 qui me permet également d'avoir une isolation entre le compteur et le reste de mon circuit. De plus, cet optocoupleur a un défaut qui est utile dans ce cas précis : vu que la fréquence du signal est assez élevé (50 kHz), le composant n'a pas assez de temps pour laisser passer le courant en sortie lorsqu'il y a une tension et le couper lorsqu'il n'y a plus de tension dans le signal entrant. Il va donc laisser passer le courant en sortie tant qu'on a le signal périodique 50kHz. Une fois qu'il y ait plus de tension suffisamment longtemps dans le signal périodique, l'optocoupleur bloque à nouveau le courant en sortie. Le signal est ainsi démodulé. J'ai quand même rajouter un petit condensateur de 10nF afin de lisser proprement ce signal démodulé.

img


A la sortie du 6n138, j’obtiens alors un signal série directement exploitable.

Ensuite, j'ai décidé d'utiliser un Raspberry Pi pour collecter les informations, d'une part pour la faible consommation et d'autre pour sa faible puissance de traitement largement suffisante pour pouvoir traiter et stocker les informations dans une base de données.

Mais le Raspberry Pi ne possède pas d'entrée série directement dessus. J'ai donc utilisé une puce série vers USB, la PL2303HX, qui fonctionne parfaitement sous Raspbian (Linux).

Un prototype a été réalisé :

img


Et posé et connecté (en mode gros bordel) dans mon placard à disjoncteur.

img


Une fois branchée et détectée par le système (chez moi via /dev/ttyUSB0), il faut la configurer.
Pour faites comme dans l'exemple pour configurer :
setserial -g /dev/ttyUSB0
et vous devriez obtenir quelque chose du genre :
/dev/ttyUSB0, UART: 16654, Port: 0x0000, IRQ: 0

Il ne plus qu'à lire les données pour tester.
Pour les lire en direct en respectant leurs caractéristiques, j'ai utilisé la commande suivante :
cu -l /dev/ttyUSB0 -s 1200 -e

img


Une fois que j'avais ces données qui arrivait, il fallait créer un script permettant d'extraire tout ce que je voulais. J'ai donc créé un script en PHP, utilisant la librairie php_serial (téléchargeable ici) de Rémy Sanchez, me permettant d'avoir une connexion série directement en PHP. Les données sont ensuite enregistrés dans une base de données MySQL. Ce script est exécuté toutes les minutes via une tache cron afin d'avoir une bonne précision.

img


Ma base de données "consommation_edf" contient 4 tables :
- compteur : la liste des compteurs électriques détecté, uniquement 1 pour l'instant, mais si je déménage, un autre sera rajouté
- periode_tarifaire : les périodes tarifaires détectés sur mon compteur (heures pleines et heures creuses), cela dépend de votre abonnement.
- tarif_periode_tarifaire : contient les prix au kWh de chaque période tarifaire suivant une période. Elle sert pour les calculs de coûts.
- releve : contient les relevés

Après avoir laisser s'exécuter le script plusieurs fois, j'ai obtenu le résultat suivant en base :

img


Après 24h d'utilisation, j'ai testé la requête suivante pour estimer le coût d'une journée d'électricité :



img


J'ai ensuite réalisé une page PHP qui tourne sur un serveur Apache pour obtenir un rendu visuel et mieux observer ce que je consomme :

img


Note : N'oubliez pas d'installer la librairie php-gd qui permet de réaliser des graphiques -> sudo apt-get install php5-gd


Pour finir, après 1 semaine de test, j'ai vu que tout marchait bien, j'ai donc réalisé la version finale que j'ai accroché au dessus de mon placard à disjoncteur :

img


img


La version finale utilise un vieux disque dur IDE de 4,3Go pour faire tourner le système. Ce sera plus fiable dans le temps qu'utiliser des cartes SD. La méthode sur comment faire booter sur un disque dur est décrite à la fin du projet de Météo avec Raspberry Pi.


Et biensûr, le schéma du tout :
img


Les scripts PHP de récupération et d'affichage sont récupérables ici : Lien


   J'aime :) (13)   |   Je n'aime pas :( (0)

    5 commentaires
Commencé le 01/11/2014 à 22:16  

Nom:  
E-Mail:  
Site Web:  

 
Vérification:  
 
Recopiez les lettres/chiffres et donnez le résultat du calcul :
captcha



   Morgan   |   18/01/2015 - 16:43   

Très bon sujet.
Pourquoi ne pas avoir utilisé un adaptateur AC/DC du commerce pour alimenter le circuit? ça aurait été plus compact et moins dangereux.


   julien   |   18/01/2015 - 17:58   

Salut ! C'est du bon boulot j'ai moi même réalisé un montage similaire il y a peu de temps et en ce moment je me fait un logiciel de visu. Je voulais te corriger quand tu dis que la Raspberry Pi n'as pas de port série il est bien présent sur le connecteur d'entrées sorties car c'est comme ça que je l'utilise.


   JLR's Blog   |   19/01/2015 - 00:35   

Merci.
Ces adaptateurs sont très pratiques, je m'en sert quand je fais mes tests. Mais je préfère faire mes propres alimentations car je ne suis pas sur de la durée de vie de ces adaptateurs.
Mon circuit a pour vocation de fonctionner au moins 10 ans 24h/24 et 7j/7.


   JLR's Blog   |   19/01/2015 - 00:41   

Salut !
Ah oui en effet ... Il n'était pas indiqué dans mes documentations ... J'aurais pu, du coup, me dispenser du PL2303.
Merci !


   llixhat   [ www ]   |   14/02/2015 - 23:10   

Very nice tutorial, i hope it will work with my Electricity meter. This is something i wanted to do for a long time.

 


JLR's Blog   |   Programmation et design: JLR   |   Version 2.0   |   Généré en 0.019 seconde(s)