coyote-mania
Posts: 15
Joined: Wed Jun 20, 2012 8:41 pm

Publication de la consommation d’électricité sur internet

Tue Feb 24, 2015 11:48 pm

Bonjour à tous,

Voilà cette année dans mon lycée nous devons réaliser un projet qui tourne autour du développement durable. J'ai proposé à mon groupe d'utiliser la Raspberry pour pouvoir y relier leurs capteurs. Ma partie à moi va être de publier sur une page web la consommation électrique d'une pièce. Pour cela le compteur va envoyer une impulsion à la Raspberry pour chaque Kwh.

J'aimerai avoir de l'aide sur différents points que je n'arrive pas à résoudre. Notamment comment fait-on pour pouvoir publier la valeur d'une variable d'un programme (donc le nombre d'impulsion qui représentera les Kwh) sur une page web ? Utilise t'on PHP ? Python (avec Django) ?

Et comment pouvoir réaliser un graphique avec ces données ?

Pour finir ma dernière question serait de savoir quel langage serait adapté pour ce genre de projet ? J'hésite entre le Python et le C ...

Merci :)

Nickko
Posts: 199
Joined: Tue Jan 15, 2013 10:31 pm

Re: Publication de la consommation d’électricité sur interne

Wed Feb 25, 2015 11:09 am

Pour les graphiques, il y a pas mal de bibliothèque de code pour faire ça, aussi bien côté client en JS que côté serveur en PHP.
Ça dépend de ce que tu veux offrir comme possibilité.

Si tu veux un truc interactif, mieux vaut traiter ça côté client, sinon côté serveur. de mémoire côté serveur je connais pChart. Mais de là à te dire si c'est un bon produit...

Pour le comptage des impulsions, il faudrait utiliser le système des interruptions, pour ma part puisqu'on est sur Rasberry Pi, je choisirait le Python langage de prédilection de l'engin.

Pourquoi une interruption, parce que je me dit qu'une simple lecture périodique pourrait passer à côté d'une impulsion (en même temps ça ne devrait pas représenter une grosse variation)

Suite à cette impulsion, j'incrémenterais un compteur physiquement stocké dans un fichier ou une DB, de prime abord, le fichier me semble plus simple.

Ensuite, avec un rafraîchissement automatique, la page afficherait le chiffre.

Maintenant, je m'aperçois que tu as omis des informations car pour faire un graphique, il faut un peu plus qu'un chiffre.
Donc au final solution dépendra du ou des graphiques sur tu veux afficher.

enedil
Posts: 66
Joined: Sat Feb 21, 2015 4:22 pm
Location: Toruń, Poland
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Wed Feb 25, 2015 11:34 am

Je dois vous excuser - je suis polonais. J'apprends le français depuis trois ans, alors ma niveau de langage n'est pas trop haute.

Tu peux utiliser Python avec le Flask module:
http://flask.pocoo.org . Il fait le développement rapide possible. Et, pour renvoyer les nouveaux donnés, utilise Ajax.
- What Can a Thoughtful Man Hope for Mankind on Earth, Given the Experience of the Past Million Years?
- Nothing.

Kurt Vonnegut, Cat's Cradle

coyote-mania
Posts: 15
Joined: Wed Jun 20, 2012 8:41 pm

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 1:42 am

Bonjour,
merci d'avoir porté de l'attention à mon problème. Pour ce qui est du graphique je comptait le réaliser avec Chart.js
Sur la page web il aura d'un côté la consommation d'énergie journalière (donc en temps réel) inscrit en "chiffre" et ensuite interviendra notre graphique pour montrer cette fois-ci la consommation mensuel. Donc un axe réservé au temps (en jours) et l'autre pour l'énergie (Kwh). Chaque point sur le graphique représentera la consommation d'une journée.

Donc si je comprends bien le mieux serait de réaliser ce programme en Python en m'aidant de WiringPi je suppose :roll:

enedil: Je compte utiliser les templates du projet Bootsrap ;) (je ne souhaite pas trop m'attarder sur la conception du site)

Nickko: "Suite à cette impulsion, j'incrémenterais un compteur physiquement stocké dans un fichier ou une DB, de prime abord, le fichier me semble plus simple"

Je ne comprends pas trop ce que tu veux dire par là :?

En tout cas merci de m'aider pour mon projet :D

enedil
Posts: 66
Joined: Sat Feb 21, 2015 4:22 pm
Location: Toruń, Poland
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 2:25 am

Mais tu dois avoir un serveur HTTP pour envoyer les données en forme d'une page Internet.

Il y a nombreuses choses. Tu peux utiliser Node.js.

Et comment partager les données entre le logiciel Python qui les génère et le serveur HTTP?
Je peux penser de Unix Douille. Les docs de Socket pour Node.js sont là: http://nodejs.org/api/net.html

Et douilles pour Python?
Là: http://docs.python.org/3.4/library/socket.html

Et en général, comment créer UNIX douilles, cherchez "Beej's Guide to IPC UNIX Socket".
- What Can a Thoughtful Man Hope for Mankind on Earth, Given the Experience of the Past Million Years?
- Nothing.

Kurt Vonnegut, Cat's Cradle

Nickko
Posts: 199
Joined: Tue Jan 15, 2013 10:31 pm

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 7:29 am

Enedil, que veux-tu dire pas douille ? Ce n'est je pense pas la bonne traduction, mais si tu nous donnes le mot en anglais, je pense que nous comprendrons.

Coyote-mania, pour ma phrase sur le compteur, laisse là de côté pour l'instant, c'était dans un cas de figure qui n'est pas finalement pas le tien.

Dans ton cas, tu stockes le compteur dans une base de données, un tour un tuple (un tuple est un enregistrement dans une base de données) et tu l'incrémente, tant que l'impulsion reçu est reçu le même jour que la précédente.

Cette formule un peu compliqué te donne l'algorithme pour gérer le changement de date.

À la fin, tu auras donc un jour un chiffre de consommation dans la base de données.
MySQL (pour la base de données) s'interface aussi bien avec python qu'avec PHP.

nikotinux
Posts: 696
Joined: Sat Feb 02, 2013 2:11 am

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 9:56 am

Pour ne pas mettre en place une usine a gaz tu peux utiliser rrdtool

un des nombreux tuto avec un lien vers le site officiel

http://doc.ubuntu-fr.org/rrdtool

enedil
Posts: 66
Joined: Sat Feb 21, 2015 4:22 pm
Location: Toruń, Poland
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 11:44 am

Nickko wrote:Enedil, que veux-tu dire pas douille ? Ce n'est je pense pas la bonne traduction, mais si tu nous donnes le mot en anglais, je pense que nous comprendrons.
Le nom anglais, c'est "socket".

C'est un solution plus rapide que MySQL. Et si une DB sera utilisée, les bases NoSQL ont de vitesse. Je peux recommander Redis ou MongoDB.
- What Can a Thoughtful Man Hope for Mankind on Earth, Given the Experience of the Past Million Years?
- Nothing.

Kurt Vonnegut, Cat's Cradle

Nickko
Posts: 199
Joined: Tue Jan 15, 2013 10:31 pm

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 12:22 pm

On dit Socket aussi en français, ça fait partie des quelques mots que l'on a pas traduit.

JumpZero
Posts: 1033
Joined: Thu Mar 28, 2013 7:35 pm
Location: 127.0.0.1

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 12:35 pm

Bonjour,

des liens peut-etre utiles
quelqu'un qui est sur ce forum et qui a une solution interface compteur EDF
http://www.yadom.fr/home-page-products/ ... pidom.html

un projet super, sur Arduino...
http://openenergymonitor.org/emon/


--
Jmp0

chris57100
Posts: 522
Joined: Wed Sep 12, 2012 7:23 pm
Location: Thionville
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 1:32 pm

Pour ma solution domotique j'utilise un serveur nodejs pour le serveur web, highcharts pour les graphiques et influxdb pour la base de données.
Les mesures sont enregistrées soit depuis le réseau ou depuis un arduino.

Je conseille influxdb (www.influxdb.org) qui est une base optimisée pour la collecte de mesures et qui fonctionne très bien sur Raspberry pi avec un système de requete très bien concu (http://www.pihomeserver.fr/2014/11/29/r ... -influxdb/). Il est très facile de faire une requete genre quelle est la conso cpu sur les 30 derniers jours avec une valeur moyenne chaque heure.
Raspberry Pi Home Server : http://www.pihomeserver.fr
Software and electronic tutorials : Samba, Airplay, CUPS, Time machine, Nginx, Owncloud, rTorrent, Wordpress, etc.
Full Wi-Fi hotspot installation on a RPi 3 including a captive portal and freeradius management: https://github.com/pihomeserver/Kupiki-Hotspot-Script

coyote-mania
Posts: 15
Joined: Wed Jun 20, 2012 8:41 pm

Re: Publication de la consommation d’électricité sur interne

Fri Feb 27, 2015 11:50 pm

Merci pour tout vos conseils je commence déjà à mieux visualiser la structure de mon projet :D

Donc si je comprends bien je créer mon programme en Python (un peu comme indiqué dans ce lien: http://raspi.tv/2013/how-to-use-interru ... d-rpi-gpio ) pour ensuite mettre dans ce programme la fonction tuple pour pouvoir ensuite l'incrémenter (l’additionner avec les impulsions précédentes). Cet enregistrement sera stocker dans la base de donnée, dans notre cas je pense que je pencherai vers la solution qu'a proposer chris57100 qui est InfluxdB.
Et ensuite avec Chart.js (oui je maintient mon choix sur Chart.js car il à l'air moins commercial que Highcharts JS même si je pourrai toujours revenir sur ma décision si Highcharts est plus facile et rapide à maîtriser) je pourrai donc créer mon graphique.

Mais du coup à quel moment va intervenir Node.js ? A pouvoir afficher la valeur de la base de donnée dans notre java script ?

enedil
Posts: 66
Joined: Sat Feb 21, 2015 4:22 pm
Location: Toruń, Poland
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Sat Feb 28, 2015 2:05 am

Tu dois envoyer les documents HTML en utilisant HTTP. Alors, tu dois avoir un serveur Internet. Pour cette projet, Apache est trop grand. Node.js est simple et a des bindings InfluxDB.

Tu pourrais avoir le serveur fait en Python (Flask, mentionnée par moi) mais creation dure. Node.js est plus rapide en développement.
- What Can a Thoughtful Man Hope for Mankind on Earth, Given the Experience of the Past Million Years?
- Nothing.

Kurt Vonnegut, Cat's Cradle

coyote-mania
Posts: 15
Joined: Wed Jun 20, 2012 8:41 pm

Re: Publication de la consommation d’électricité sur interne

Sat Feb 28, 2015 7:56 am

Tu pense que Apache ne tiendrait pas sur une Raspberry Pi 2 ?
Bon si c'est comme ça je vais plus me pencher vers Node.js alors ;)

Nickko
Posts: 199
Joined: Tue Jan 15, 2013 10:31 pm

Re: Publication de la consommation d’électricité sur interne

Sat Feb 28, 2015 10:14 am

Apache tient sur un Raspberry Pi même les première génération mais c'est comme tuer les mouches au bazooka, c'est un peu disproportionné et ça va consommer beaucoup plus que ce dont tu as vraiment besoin.

Moi j'aurais utilisé nginx à la place d'Apache parce que je sais comment il fonctionne mais si tu ne connais ni nginx ni node.js alors il vaut mieux que tu apprennes à maitriser node.js dans ton cas, il sera en effet plus approprié car plus léger sans te limiter dans ce que tu essaies de construire.

chris57100
Posts: 522
Joined: Wed Sep 12, 2012 7:23 pm
Location: Thionville
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Sat Feb 28, 2015 10:51 am

NodeJS peut faire serveur web, ultra léger. Ensuite dans ton développement tu vas exposer des méthodes pour lire ou écrire des données dans ta base de données
Par exemple pour lire des valeurs dans ta base de données et les retourner vers ton client via http://<ton serveur node>/api/nodeDetails/10 (ici on récupère toutes les infos de la node n°10)

Code: Select all

restapi.get('/api/nodeDetails/:nodeId', function(req, res){
    var query = "select * from sensors where sensorId = "+req.params.nodeId+" limit 1";
    clientInflux.query(query, function(err, resInflux) {
       // Faire ce que tu veux des données
       res.send(resInflux);
    });
});
Pour stocker une capture (ici dans une db sqlite). Le formule ou URL envoyée contient les valeurs à stocker

Code: Select all

restapi.post('/api/sensors', function(req, res){
        var stmt = dbSqlite.prepare("INSERT OR REPLACE INTO sensors(ID, Name, ShortName) VALUES(?,?,?)");
        stmt.run(req.body.ID, req.body.Name, req.body.ShortName); 
        stmt.finalize();
    res.status(202);
    res.end();
});
C'est juste une exemple pour te guider pour commencer.
A voir si le PHP n'est pas plus simple pour toi en fonction de tes connaissances et dans ce cas Nginx avec PHP-FPM sera peut être plus adapté (exemple comment installer tout ca ici : http://www.pihomeserver.fr/2012/12/10/r ... i-et-scgi/)
Raspberry Pi Home Server : http://www.pihomeserver.fr
Software and electronic tutorials : Samba, Airplay, CUPS, Time machine, Nginx, Owncloud, rTorrent, Wordpress, etc.
Full Wi-Fi hotspot installation on a RPi 3 including a captive portal and freeradius management: https://github.com/pihomeserver/Kupiki-Hotspot-Script

coyote-mania
Posts: 15
Joined: Wed Jun 20, 2012 8:41 pm

Re: Publication de la consommation d’électricité sur interne

Sun Mar 08, 2015 9:28 pm

Bonsoir,
Bon je viens d'apprendre que je devrais rendre mon projet fonctionnel d'ici 1 à 2 mois donc pas de temps à perdre :o

Ayant aucune connaissance en Python, en BD ou encore en Node.js je m'y suis lancé dès que j'ai apprit le délais.
Donc c'est hier soir que je me suis lancé dans l'apprentissage de Node.js. J'ai pu faire les choses rudimentaires comme lancer un serveur web et rediriger cette dernière sur une page web (ma template bootstrap). Or malheureusement le CSS n'est pas chargé dans cette fameuse page web ! Donc comment fait-on avec Node.js pour pouvoir charger du CSS sur une page web ?

Ensuite j'ai aussi essayé d'installer InfluxDB sur ma machine, j'ai donc suivis le tutoriel donné par notre ami chris57100 sauf qu'à un moment lorsque make build il met la l'erreur suivante

Code: Select all

g++: error: unrecognized command line option '-momit-leaf-frame-pointer'
Makefile:551:recipe for target 'db/builder.o' failed
make[1]: *** [db/builder.o] Error 1
make[1]: Leaving directory '/tmp/rocksdb.influxdb.arm'
Makefile:201: recipe for target 'tmp/rocksdb.influxdb.arm/librocksdb.a' failed
make: *** [/tmp/rocksdb.influxdb.arm/librocksdb.a] Error 2
Comment remédier à ce problème :?

Bon sinon je commence aussi à apprendre socket.io je suis dans la bonne voie ?
Encore merci de bien vouloir être là pour m'aider :mrgreen:

chris57100
Posts: 522
Joined: Wed Sep 12, 2012 7:23 pm
Location: Thionville
Contact: Website

Re: Publication de la consommation d’électricité sur interne

Sun Mar 08, 2015 10:52 pm

J'ai eu ce soucis il faut la version 4.9+ de gcc mais je te conseille de prendre le .deb directement ca sera plus simple. Le lien est en debut d'article sinon ici : http://demos.pihomeserver.fr/influxdb_0.8.6_armhf.deb
Raspberry Pi Home Server : http://www.pihomeserver.fr
Software and electronic tutorials : Samba, Airplay, CUPS, Time machine, Nginx, Owncloud, rTorrent, Wordpress, etc.
Full Wi-Fi hotspot installation on a RPi 3 including a captive portal and freeradius management: https://github.com/pihomeserver/Kupiki-Hotspot-Script

Return to “Français”