Nous allons mettre en place le tutorial "Cheap Powermeter" de Søren afin de quantifier la consommation électrique d'une habitation à partir du signal émis par la diode se trouvant sur le compteur EDF avec un Raspberry-Pi et Python/LAMP. Cette installation est donc sans risque : on ne touche pas au courant fort.
Ce tutorial est une traduction française de l'article de Søren disponible à cette adresse : http://hyggeit.blogspot.fr/2013/04/super-cheap-web-enabled-power.html
Notre application vise à compter le nombre de clignotements de la diode du compteur EDF s'étant produit sur une durée. Par exemple : si notre diode s'est allumée 10 fois sur une heure, nous avons consommé 10 * 1 Watt/heure.
Le clignotement de la diode du compteur va nous indiquer la consommation d'un watt heure à partir d'un intervalle de temps.
Notre application va se décomposer de la façon suivante, en partant des couches basses (matériels) pour aller vers les couches hautes (logicielles) :
- - Le dispositif "capteur" : le montage de la plaque d'essai composé de la cellule photovoltaïque et du condensateur, reliés aux ports GPIO du Raspberry-Pi.
- - L'écouteur traitant les signaux des ports GPIO qui sera matérialisé sous la forme d'un script Python qui fera tourner une boucle while écoutant le signal du canal du port GPIO. Ce dernier va déclencher une entrée dans la base de données MySQL si le signal atteint un certain niveau correspondant à l'état éclairée de la diode du compteur EDF. Le condensateur va jouer un rôle de séquenceur et définir une pulsation avec sa charge/décharge.
- - La base de données MySQL stockant les informations fournies par l'écouteur et sollicitée par le script Python.
- - Le script PHP "front" appelant les données de la base et se chargeant du rendu du graphique de consommation par le biais de deux classes prévues à ces effets.
1 - Liste des éléments nécessaires pour l'installation
Matériels :
- - Un Raspberry-Pi model B connecté à un LAN en ethernet [http://www.kubii.fr]
- - Une plaque d'essai [http://www.selectronic.fr/plaque-dessais-sans-contact-170-points-bleue-12.html]
- - Une cellule photovoltaïque [http://www.selectronic.fr/photoresistance-ce5-09.html]
- - Un condensateur 1 µF 50 V [http://www.selectronic.fr/condensateur-radial-audio-muse-1-f-50v.html]
- - Trois wires jumper male/femelle (fils de test) [http://www.selectronic.fr/catalog/product/view/id/28430/category/3/]
Logiciels :
- - Python
- - PHP
- - Apache
- - MySQL
La partie logicielle fonctionnera sur des couches Python et LAMP. L'installation de LAMP sur Debian est abordée dans cet article.
2 - Connexions port GPIO et planche d'essai
- - Le port d'alimentation 3,3 V n°1 du GPIO (en haut à gauche) relié à la cellule photo-électrique.
- - L'autre patte de la cellule photo-électrique est reliée à la borne positive du condensateur.
- - La borne négative du condensateur est reliée au port n° 6 qui est la masse.
- - La borne positive du condensateur est reliée au port n°12 du GPIO qui correspond au canal 1.
3 - Installation des pré-requis logiciels
Si vous n'avez pas Apache, MySQL et PHP déjà installé, se reporter au tutorial sur la mise en place de LAMP.
Nous allons donc installer nos logiciels via apt :
sudo apt-get install python-dev python-setuptools python-mysqldb apache2 sudo easy_install rpi.gpio
4 - Déploiement de l'application Cheappowermeter
On va télécharger l'application depuis la dropbox de Søren :
wget https://www.dropbox.com/s/xcb2ntrt2d3xlkd/Cheappowermeter.tar.gz
Ensuite on va décompresser le fichier et le copier dans le repertoire www d'apache en prenant soin de supprimer le fichier index.html :
tar -xvvzf Cheappowermeter.tar.gz
cd /var/www sudo mkdir cheappowermeter
sudo cp Cheappowermeter/www/* /var/www/cheappowermeter -R
sudo rm /var/www/index.html
sudo chmod -R 777 cheappowermeter
On va créer le fichier de base de données dans Mysql :
Login dans console MySQL :
mysql -u root -p
Création de la bdd et de l'utilisateur :
CREATE DATABASE measurepower;
CREATE USER 'measurepower'@'localhost' IDENTIFIED BY 'yourpasswordhere';
GRANT ALL ON measurepower.* TO 'measurepower'@'%';
Création de la table watthours :
use measurepower;
CREATE TABLE IF NOT EXISTS `watthours` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datetime` datetime NOT NULL,
`lightvalue` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
exit
Edition des variables de connexion MySQL dans les scripts Python et PHP :
Python :
sudo nano /var/www/cheappowermeter/cheappowermeter-Python/readlight
Changer la ligne suivante :
con = mdb.connect('localhost', 'measurepower', 'yourpasswordhere', 'measurepower');
PHP:
sudo nano /var/www/cheappowermeter/index.php
Changer la ligne suivante :
$link = mysql_connect('localhost', 'measurepower', 'yourpasswordhere');
Paramètrage du l'exécution de l'écouteur "readlight" au démarrage du système :
sudo nano /etc/rc.local
Ajouter avant "exit 0" à la dernière ligne :
/var/www/cheappowermeter-Python/./readlight &
Important : Ne pas oublier de définir le vhost pour le dossier cheappowermeter dans apache.
5 - Calibrage et test de l'application
Nous allons calibrer la sensibilité du capteur photovoltaïque en ajustant la valeur suivante dans les fichiers readlight et debug :
if result<=150:
Cette valeur défini le seuil de sensibilité à partir duquel un enregistrement en bdd sera effectué.
Nous allons pouvoir tester ce seuil en executant le script debug :
sudo /var/www/cheappowermeter/cheappowermeter-Python/./debug
On peut voir dans notre terminal les valeurs s'afficher quand le seuil de luminosité est franchi. On a réussi donc à tester notre écouteur, on va pouvoir lancer le script readlight et lire nos mesures avec le script PHP et afficher notre résultat dans un navigateur.
Execution du script readlight en tache de fond :
sudo /var/www/cheappowermeter/cheappowermeter-Python/./readlight &
Lancer votre navigateur et connectez vous à l'ip du Raspberry-Pi et vous devriez voir la page avec le graphique et l'historique de consommation.