FERG : Mon vieux compteur EDF connecté en mode framboise

Difficulté:

ou comment relever sa consommation électrique zone par zone à l’aide d’un compteur EDF à roue, de quelques tores et d’un raspberry pi (Nouvelle option : ajout d’un arduino (ou équivalent) pour fiabiliser le comptage)



Quel radin (ou juste soucieux de dépenser moins) un peu geek n’a jamais voulu savoir ce qu’il dépense en électricité et pourquoi?


C’est un lisant le très bon blog de Sebastien Warin (http://sebastien.warin.fr/2015/03/24/2478-senergy-la-solution-de-monitoring-des-ressources-energetiques-de-la-maison-geek-is-in-da-house-2015/) que l’idée m’est venue de réaliser ce compteur connecté.
Contrairement à Sébastien, je ne m’occupe pas de l’eau et du gaz, mais uniquement de l’électricité (plus du fuel, mais c’est pour un autre tuto).


L’idée est :


  • de lire chaque tour de la roue du compteur EDF pour en déduire puissance instantanée et énergie consommée.
  • de lire le courant dans quelques circuits à l’aide de tores
  • de lire l’état du relais jour-nuit


Mais aussi d’en déduire d’autre valeurs indirectes :


  • La consommation d’un circuit comme étant la somme ou la différence de plusieurs circuits
  • La consommation d’un appareil électrique dont je connais la puissance (ex : sur le même circuit un congélateur de 100W et un frigo de 150W. Avec une seule mesure, nous allons calculer deux consommations distinctes)


Et bien sûr prendre des décisions :


  • Délester un circuit (exemple le chauffe eau) quand on atteint la limite de consommation du compteur
  • Alerter quand le frigidaire consomme trop (la porte doit être ouverte)


Toutes les informations sont stockées dans une base mysql (ou mariaDB). Elle peut être sur le raspberry ou n’importe où ailleurs (dans mon cas sur un NAS Synology).


Et comme j’aime bien le python : tout est en Python!
avec mes bibliothèques qui vont bien :


  • FGPIO pour gérer toutes le matériel avec les GPIO du RPI


  • FERG pour le code spécifique au projet de compteur connecté



Ce tutoriel s’applique à bien détailler les techniques et matériel mis en oeuvre.

Matériel :

Budget : Non défini

  • J’ai utilisé :
  • et carte micro SD 16Go classe 10 pour raspberry : (disponible ici)
  • Un capteur optique : QRD114
  • Une capa de 100µF 10 Volt :
  • Une capa de 47 nF 400Volt :
  • 6 tores SCT013 30A/1V :
  • 6 prises jacks femelles à souder : (disponible ici)
  • Un convertisseur analogique/numérique MCP3008 : (disponible ici)
  • Quelques résistances ( 1×1 kOhm, 2×100 Ohm, 1×220 Ohm, 1×680 Ohm) : (disponible ici)
  • Une led (disponible ici)
  • option : un arduino ou puce atmega (disponible ici)
  • Connectique : nappe, borniers, …
  • En option : buzzer
  • Une croix de communiant (ou n’importe quoi d’autre pour fixer le capteur optique sur le compteur EDF
  • Une boite plexo pour enfermer tous ce qui touche au 220V (relais et capteur Jour_Nuit)
  • http://ouiaremakers.com/wp-includes/images/media/document.png , http://ouiaremakers.com/wp-includes/images/media/document.png , http://ouiaremakers.com/wp-includes/images/media/document.png
  • Un optocoupleur PC817 :
  • Une diode 1N4007 :
  • Alimentation 5V, 2A : (disponible ici)
  • Un rasperry pi 2 (ou autre version) : (disponible ici)

Connecte-toi pour découvrir ce tuto
Rejoins une communauté de plus de 40 000 Makers français, découvre toutes leurs techniques et idées créatives et partage tes projets !

A découvrir :
Etape 1 : Capter les tours de roue du compteur
Etape 2 : Les tores pour mesure des circuits “internes”
Etape 3 : le module analogique – numérique
Etape 4 : Détecteur jour nuit
Etape 5 : Réalisation de la carte électronique
Etape 6 : Les relais
Etape 7 : Branchement de tous les composants
Etape 8 : La raspberry pi dans tous ça.
Etape 9 : Base SQL
Etape 10 : Fichier de configuration
Etape 11 : Lecture des résultats
Etape 12 : Conclusion
Etape 13 : Alternative : avec micro-contrôleur (type arduino)

Sources :

http://sebastien.warin.fr/2015/03/24/2478-senergy-la-solution-de-monitoring-des-ressources-energetiques-de-la-maison-geek-is-in-da-house-2015/, http://dygraphs.com/, https://pypi.python.org/pypi/FGPIO, https://pypi.python.org/pypi/FERG, https://pypi.python.org/pypi/FUTIL


Excellent projet! Je suis tout à fait d'accord avec l'une des conclusions : “Le seul problème majeur et que passées les quelques semaines durant lesquelles je regardais les graphes tous les jours, j’ai tendance à ne plus trop y regarder.” J'ai fait le monitoring de ma consommation électrique chez moi et j'avoue que je ne la regarde pas très souvent. Ce qui est intéressant, c'est de multiplier le Wh avec la consommation pour obtenir le coût journalier/hebdo ou mensuel.

Oo ! Voilà comment monitorer sa consommation électrique sur les vieux compteurs en comptant les tours. Merci pour le partage fred et bravo pour le détail.

Sympa je suis en train de faire la même chose chez moi avec l'astuce de Seb pour le compteur à roulette (sauf que j'ai du utiliser un IR TCRT5000 au lieu de son petit module IR sinon ça marchait pas, question de qualité du reflet sûrement), mon compteur est un 1.6Wh/tour du coup ça va très vite quand ça pompe bien.

Pour la détection de conso de chaque appareil relié à un même disjoncteur je fais pareil en me basant sur la puissance connu de chaque appareil et faire des “and” pour savoir lequel(s) toure(nt) à un instant T, attention à certains appareil dont la conso peut pendant un très court instant monter assez haut comme mon frigo qui pfait des pointes à 1000W après une coupure de courant.

Par contre pour les pinces ampèremétriques il faut faire attention à calibrer en fonction de la tension réelle du réseau sinon le chiffre sera faussé.

Bon courage pour ton compteur. Le mien fonctionne pas mal : même si les valeurs relevées par les tores ne sont pas parfaites, c'est largement suffisant pour ce que j'en ai besoin. Pour le compteur en lui même, je dois perdre un peu moins de 1% des tours.

As-tu une explication pour la perte de 1% des tours ? pour ma part c'est un arduino qui compte les tours (mais je pense le remplacer par un ATTiny85, pas besoin de plus gros pour ça) et pour éviter les pertes je l'utilise uniquement pour envoyer l'info “rapidement” à l'ESP8266 (mais ça pourrait aussi être un RasPi) et revenir au comptage de façon à ne pas manquer un tour, ensuite l'ESP prend le temps de balancer au serveur et au besoin bufferise ce qui vient de l'Arduino quand ça tourne vite si le serveur à l'autre bout est un poil lent ou indisponible, je pourrais aussi utiliser directement ESP pour la lecture via son port ADC mais ça demande des réglages car sa plage de conversion est de 0-1V seulement, pareil pour la lecture des pinces avec un MCP ou autre 74HCxxxx je pourrais très bien le faire 100% un l'ESP et transmettre en WiFi vers mon serveur du coup ça gagne pas mal de place par rapport à un RasPi dans le boitier EDF 😉

Je pense que mon raspi a du mal a suivre quand ça va très vite (surtout qu'il ne fait pas que ça). Pour résoudre, j'hésite entre mettre un petit atmega328 pour lire la roue et transmettre au raspi ou améliorer mon code python pour ne plus rater de tours.

Un RasPi n'étant pas un micro contrôleur il est toujours succeptible d'être bloqué à faire autre chose et du coup manquer des tours donc ATMega ou ATTiny pour être sûr de ne rien rater, puis un envoi vers le RasPi qui “bufferisera” (du verbe bufferiser bien connu du Petit Robert 😉 tranquillement et dépilera les tours qui auront été reçus avec un timestamp de préference voir même laisse le micro contrôleur stocker une minute de tours et ne lui faire envoyer un simple total des tours qu'une fois par minute ce qui est largement suffisant, pas besoin de granularité inférieure pour ça, si tu veux une lecture instantanée les tores sont là pour ça.

Tout d'abord merci beaucoup pour ce partage.
Je cherchais comment mesurer certaines conso depuis mon tableau et ton tuto colle parfaitement avec mon but.
J'ai donc entrepris de le mettre en oeuvre pour n'utiliser que la partie avec les TORS.
Mais ça bloque à l'installation PIP de FERG. (je suis sous raspbian comme toi)
J'obtiens une série d'erreurs qui commence par :

Downloading/unpacking FERG
Running setup.py egg_info for package FERG

Traceback (most recent call last):
File “”, line 14, in
File “/home/pi/install/distribute-0.7.3/build/FERG/setup.py”, line 39, in
shutil.copy('comptage.py', '/opt/FERG')
File “/usr/lib/python2.7/shutil.py”, line 119, in copy
copyfile(src, dst)
File “/usr/lib/python2.7/shutil.py”, line 82, in copyfile
with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'comptage.py'
Complete output from command python setup.py egg_info:
running egg_info

J'ai du rater qqchose … Une idée ?
Merci d'avance.

Merci pour ton conseil que j'ai appliqué. J'ai mis un ATMega pour lire le capteur optique et compter les tours. Il est relié au Rpi via i2c. Le Rpi va juste lire le nombre de tours quand il a le temps (toutes les secondes quand même). Je met à jour les sources (qui laisseront les deux choix de mesure, avec ou sans micro-controleur) et le tuto dés que j'ai un peu de temps.

Cool et en plus grâce à ça si tu doit stopper/rebooter ton Pi pour mise à jour ou autre tu ne perdras rien.

p.s : une granularité d'une seconde n'est pas forcément utile tu peux récupérer un cumul toutes les 10 secondes ou toutes les minutes c'est déjà pas mal de toute façon ce qu'il faut c'est connaître la différence de temps par rapport à la précédente récupération du nombre de tours.

Désolé, une grosse bourde c'était glissée dans la version en ligne. Vous pouvez réessayer!!

C'est nickel maintenant. Merci.
Reste plus qu'à adapter ton code. 🙂
Plus qu'à … 🙂

pour ceux qui envisagent de développer un système analogue, je signale qu'il existe des capteurs 'prêts à l'emploi' pour lire les compteurs. Ils communiquent avec le 'cerveau' de l'installation via les protocoles Zwave qui sont largement utilisés. Un module Zwave enfichable exite pour le rasperry pi. Cela pourrait permettre de ne pas perdre d'impulsion et et mettre le système de calcul n'importe où. Parmis les produits Zwave il y a des "prises" intelligente qui mesurent la consommation et qui sont télécommandables. adresse pour les lecteurs de compteurs: http://products.z-wavealliance.org/products/1610 P.S. Pour éviter tout malentendu, cela fait partie de mes rêves mais je n'ai rien réalisé à cette heure!

Il existe des modules du commerce qui savent lire les vieux compteurs mécaniques? Si oui, je suis curieux de voir ça.

Oui, j'en possède 2! C'est minuscule et """facile""" à appliquer sur la vitre du compteur avec un papier adhésif transparent livré d'origine. Pout l'électricité, il lit le passage du disque et pour le gaz il fait de la reconaissance optique sur le chiffre 6. dimensions: 4cm x 2cm C'est installé par les compagnies de gaz et électricité aux pays-bas et en belgique. Je pense que j'ai donné la bonne référence dans mon post. Je ne sais pas s'ils le vendent en direct aux particuliers... C'est depuis que c'est installé chez moi que j'examine la possibilité de les lire avec un Pi. Sur le documentation il est indiqué une marque: Quby. Sur leur site il n'y a que de la pub. Mais le produit est repris dans les produits Z-wave. L'estension Z-wave pour le pi s'appelle RaZberry2 et coûte environ 50€ Les périfériques domotique compatibles Z-wave sont fabriqués par une société "FIBARO" et coûtent chacun +/- 50 € A disposition pour plus d'infos sachant que je suis en mode "explorateur" et pas encore utilisateur....

J'ai oublié... Félicitations pour la présentation.

Merci pour ce Tutoriel intéressant, j'aimerai me lancer dans la réalisation, mais auriez vous le schéma du petit circuit électronique, ainsi que les pages html+php, vous dite : voir images et code html+php dans energies.zip, je ne vois pas ou est ce energies.zip ? auriez vous un lien ? Et merci pour le temps passé à partager ces connaissances :-)

Ces tutoriels devraient vous plaire

fabrication de circuits imprimés facile
Fabriquer une lampe à lave
Connecter un écran LCD en I2C

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers