Académique Documents
Professionnel Documents
Culture Documents
Rsum
Ce document prsente le fonctionnement, le contexte, et les perspectives de la
ralisation dune interface de contrle domotique. Linterface est flexible, pouvant
sadapter toutes les nergies et tous les types de compteurs. Elle a t pense
pour une utilisation facile, guidant lutilisateur par tape dans la configuration de
linterface, tout en permettant une dfinition relativement prcise de lenveloppe
nergtique de la maison. Elle rpond galement un souci de performance devant
tre utilisable sur les ordinateurs mais aussi sur les smartphones et tablettes. Par la
combinaison de ces caractristiques, linterface se dmarque par rapport ce qui se
fait actuellement en la matire.
Ce travail envisage galement quelques perspectives de recherche lie linterface,
comme lutilisation des informations fournies par les divers appareils intelligents de
la maison pour calculer des mesures approximes plutt que dutiliser des capteurs
physiques, souvent coteux.
Abstract
This paper presents the realization, the context, and the prospects of an automation control interface. The interface is flexible, capable of adapt to all energy and
all types of meters. It has been designed for easy use, guiding the user by steps in
the configuration of the interface, while allowing a relatively precise definition of
the energy envelope of the house. It also responds to performance issues, allowing
it to be used on computers but also smartphones and tablets. By combining these
characteristics, the interface differs from what is currently being done in this area.
This work is also considering some research perspectives related to the interface,
such as the use of information provided by the various smart devices in the house to
compute approximated consumption data, rather than using real meters, which are
often expensive.
Remerciements
Je tiens particulirement remercier mon promoteur, le professeur Benoit Donnet
pour laide apporte, spcialement quant aux conseils concernant la rdaction.
Je dsire galement remercier lquipe dIngnieurs de Projet qui a encadr le
projet dans son ensemble. Elle a apport la ralisation de ce TFE, une exprience
trs particulire dans le cadre dun travail en quipe pluridisciplinaire, avec ses forces
et ses fragilits. Cela ma permis de vivre une exprience unique au regard des travaux
de fin dtudes abords de faon plus classique.
Je tiens aussi remercier ma famille pour laide apporte au niveau de la relecture
de ce manuscrit.
Enfin, je remercie lICEDD pour son autorisation de reproduction des figures du
bilan nergtique de la Rgion Wallonne.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Structure de linterface
4.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Structure de la base de donne . . . . . . . . . . . . . . . . . . .
4.2.1 Structure de la maison . . . . . . . . . . . . . . . . . . .
4.2.2 Alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Authentification . . . . . . . . . . . . . . . . . . . . . . .
4.3 Transfert de donnes entre Django et les applications Javascript
4.4 Systme de dessin du plan . . . . . . . . . . . . . . . . . . . . .
4.5 Protocole de communication . . . . . . . . . . . . . . . . . . . .
4.6 Traitement des donnes . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Pre-processing . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2 Post-processing . . . . . . . . . . . . . . . . . . . . . . .
4.7 Systme dalertes . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8 Compression et concatnation du texte . . . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
12
12
14
16
16
17
17
17
17
18
.
.
.
.
.
19
19
21
23
24
24
.
.
.
.
.
.
.
.
.
.
.
.
.
27
27
28
30
31
32
33
37
40
42
42
43
44
45
5 Compteurs virtuels
47
5.1 Gnration de donnes alatoires . . . . . . . . . . . . . . . . . . . . 47
5.2 Temprature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 Consommation dun ordinateur . . . . . . . . . . . . . . . . . . . . . 49
6 Rsultats
6.1 Modlisation - Builder . . . . . . . . . . . . . . . . .
6.2 Consommation - Consumption . . . . . . . . . . . . .
6.3 Alertes - Alerts . . . . . . . . . . . . . . . . . . . . .
6.4 Statistiques - Statistics . . . . . . . . . . . . . . . . .
6.4.1 Recherche en matire nergtique . . . . . . .
6.5 Paramtres - Settings . . . . . . . . . . . . . . . . . .
6.6 Compatibilit et smartphones . . . . . . . . . . . . .
6.7 Modularit . . . . . . . . . . . . . . . . . . . . . . . .
6.7.1 Ajout dune nergie et dun nouvel appareil de
6.8 Performances . . . . . . . . . . . . . . . . . . . . . .
6.8.1 Base de donne . . . . . . . . . . . . . . . . .
6.8.2 Tailles de transferts et temps de rendu . . . .
6.8.3 valuation quantitative . . . . . . . . . . . . .
7 Perspectives et travail futur
7.1 Alertes . . . . . . . . . . . . . . . . . . . . . . .
7.2 Statistiques et suppression des relevs . . . . . .
7.3 Image des appareils . . . . . . . . . . . . . . . .
7.4 Application SmartPhone native . . . . . . . . .
7.5 Modle nergtique . . . . . . . . . . . . . . . .
7.6 Interfaage avec un systme domotique existant
7.7 Prsence des habitants . . . . . . . . . . . . . .
8 Conclusion
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
consommation
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
55
56
63
65
66
66
68
70
72
73
75
75
77
80
.
.
.
.
.
.
.
81
81
81
82
82
82
84
84
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
87
Chapitre 1
Introduction
Depuis la rvolution industrielle, lhumanit ne cesse dinventer de nouvelles machines. De la voiture llectromnager, de lampoule lordinateur, nous produisons
sans cesse de nouveaux objets pour satisfaire de nouveaux besoins, et de nouveaux
besoins pour ensuite les satisfaire avec de nouvelles inventions. La consommation des
mnages a ainsi augment de 12% en 15 ans, en grande partie de une hausse de
plus de 50% de la consommation dlectricit [23] pousse par une hausse de plus de
50% du pouvoir dachat ces trente dernires annes[12]. Un cours dconomie basique
nous indique que le marketing consiste promouvoir un produit pour en vendre plus.
Ce mme cours dconomie nous apprendra ensuite le rapport existant entre loffre
et la demande. Lorsquil ny a pas assez doffre pour la demande, le prix augmente.
Multiplier la quantit de besoins ne serait pas un problme si la terre sagrandissait
une vitesse proportionnelle lutilisation de ses ressources. Malheureusement, notre
plante nest pas en expansion et la presse nous informe quasi quotidiennement de
laugmentation des prix de lnergie - tantt du gaz, tantt de lessence, tantt de
llectricit.
Le sicle dernier a connu une forte industrialisation. Celle-ci en lien avec lvolution
dmographique a entran une prise de conscience un niveau plantaire : le monde
que nous habitons a ses limites, mme si cette prise de conscience ne suffit pas encore
toujours provoquer les changements ncessaire la lutte contre le rchauffement
climatique (Echec de Copenhague en 2009[32] ou encore retrait du Canada de Kyoto
en 2011[33]). Cette prise de conscience ne date pas dhier. Juridiquement la grande
Bretagne en ft sans doute pionnire avec le Smoke Nuisance Abatement Act de 1853
[6]. En 1970, cette prise de conscience saffinait, avec notamment ltablissement de la
journe internationale de la terre [52] et lanne suivante la naissance de greenpeace
[55]. Le rchauffement climatique, la pollution, la consommation tort et travers
sont clairement les ingrdients qui entrent en ligne de compte dans le problme
majeur auquel doit faire face notre socit si elle dsire passer au sicle suivant. En
dautres termes, la gestion de notre consommation est un dfi majeur au regard
duquel lhistoire ne peut nous aider. Un dfi relever en recherchant des solutions
dans linnovation.
5
CHAPITRE 1. INTRODUCTION
Que ce soit par souci cologique ou par souci conomique, actuellement la plupart
des gens souhaitent diminuer leur consommation. Le politique passe progressivement
de laide la production laide la rduction de consommation. En Belgique, on
notera notamment la suppression de la prime lachat de panneau photovoltaque
[39] qui a laiss place aux primes lisolation. En effet, lnergie la moins chre (et
la moins polluante, selon les sensibilits) est celle que lon ne consomme pas.
Plusieurs tudes ont montr que la simple connaissance de sa consommation
par lutilisateur a un impact non-ngligeable sur la consommation globale. Nous
noterons par exemple ltude de Kohlenberg, R et al.[29] qui pointe un des principes
de consommation qui cause le plus de pollution : les pics. En effet, pour pouvoir
fournir de llectricit tous les foyers aux heures de pointes, il est ncessaire de
pouvoir fournir une nergie gale au maximum du pic de consommation. Lnergie
tant difficilement stockable, il est ncessaire de construire de nouvelles centrales ou
den faire tourner de plus anciennes et plus polluantes (souvent au charbon) plusieurs
mois par an toute la journe mais seulement pour ces quelques heures de pointes par
jour. Ltude montre que la simple information des utilisateurs rduisait leffet de
pic de 50%.
Quant aux missions de CO2, si des efforts defficacit nergtique taient entrepris
dici 2030, nous pourrions diminuer de 23% notre consommation par rapport un
scnario suivant les consommations actuelles [31]. Le scnario prvoit principalement
une amlioration de lisolation, sachant que la consommation dans les btiments
rsidentiels en Belgique se situe environ 70% au dessus de la moyenne europenne.
Au niveau des btiments rsidentiels, une action significative ne pourra tre
prise en compte que moyennant une implication en terme dinvestissement et de
conscientisation des utilisateurs. Un moyen efficace pour aider la population rduire
sa consommation dnergie, et ne demandant quun investissement limit de la part
des consommateurs, consiste quiper les mnages des outils ncessaires une
visualisation et une matrise de leur consommation.
Plusieurs possibilits soffrent lutilisateur pour trouver les failles lies sa
consommation :
quant lisolation de sa maison, il peut faire appel un professionnel pour
procder un audit nergtique de sa maison (ce qui est rendu obligatoire pour
la vente dun bien immobilier).
en ce qui concerne les appareils lectromnagers, il peut se fier au classement
nergtique des appareils.
il peut aussi intgrer une installation de domotique, permettant doffrir un profil
de consommation lectrique. La domotique dsigne lensemble des techniques,
souvent lectroniques, permettant de centraliser le contrle et la surveillance
des appareils mnagers, la gestion de lnergie et les systmes dalarmes.
Mais ces solutions sont coteuses, ou peu flexibles. Au del des bonnes pratiques,
7
vaut-il mieux isoler un mur, acheter un meilleur frigo, changer le systme de chauffage
ou installer un panneau solaire ?
Pour tenter de rpondre ces questions, jai pris part la ralisation dun projet
collectif dans le cadre du concours Ingnieur de Projet ( IdP ) runissant des tudiants
de plusieurs disciplines (Electro-Mcanique, Electronique et Informatique). Nous
avons construit un systme abordable tant du point de vue accessibilit que financier.
Celui-ci permet dtudier la consommation dun mnage et de sensibiliser ses habitants en fonctions de leurs propres consommations. En effet une tude du SEREC
sur les changements dhabitudes des Belges dans leur consommation montre parmis
plusieurs dispositifs essays, les plus efficaces taient ceux dont la communication tait
personnalise. Ainsi plus lutilisateur reoit une information individualise, plus il
est enclin agir sur ses mauvaises habitudes de consommation et investir [21, p. 133].
Le systme dans son ensemble prvoit une srie de capteurs et une interface.
Nous avons choisi dappeler lensemble du systme USE Monitoring pour ULg
Smart Energy Monitoring. Un premier type de capteurs est fait base de vision par
ordinateur : des webcams sont places devant les compteurs deau et de gaz, lisent les
chiffres du compteur et lenvoient au serveur. Le deuxime type de capteur mesure
les consommations lectriques de la maison grce des pinces ampremtriques
et un circuit lectronique, et la consommation de deux appareils lectriques de la
maison. Ces derniers ont galement la possibilit dtre coup distance. Toutes ces
donnes sont traites par le serveur et affiches sur une interface. Linterface permet
de visualiser la consommation actuelle de la maison, mais aussi quelques statistiques
sur les consommations passes. Les utilisateurs verront les dfauts de leurs habitudes
de consommation et seront alerts dans certains cas quils auront dfini, comme
par exemple le dpassement dun certain seuil de consommation. Linterface a t
particulirement adapte pour fonctionner sur tout type dcran, disposant dune
souris ou non. Ds lors lutilisateur pourra tre averti sil oublie un appareil allum
ou simplement dtecter loubli en se connectant linterface via son smartphone par
exemple.
Linterface permet la modlisation de la maison, afin dintgrer un ventuel futur
modle nergtique qui sera discut dans les perspectives. Actuellement, cela na
donc dutilit que pour laffichage des appareils et des compteurs sur le plan de la
maison de lutilisateur. Jai galement dvelopp une srie de compteurs "virtuels".
En effet, la temprature extrieure na par exemple, pas besoin dun capteur rel
et peut directement tre rcupre en ligne. Jai galement dvelopp un script
tournant sur un ordinateur et envoyant des donnes de consommation simule. En
effet, la consommation dun ordinateur peut tre relativement correctement estime
et lordinateur peut videmment utiliser sa connexion internet pour envoyer ces
donnes simules. Jtudie galement quelques autres cas possibles dans la suite de ce
travail. En effet, nos appareils lectromnagers deviennent de plus en plus intelligents
et il est vident que toute mesure pouvant tre faite sans lajout dun quelconque
CHAPITRE 1. INTRODUCTION
Chapitre 2
Systme dacquisition et objectifs
Ce chapitre prsentera le fonctionnement gnral du systme dacquisition pour
lequel linterface a t prioritairement conue. Bien que mon travail de fin dtude
vise uniquement linterface, elle a largement influenc la conception des capteurs et
inversment. Comme nous le verrons, ce systme est cependant destin sadapter
tous types de capteurs et tous types de btiments. Une partie de mon travail tait
donc daider la conception de ces capteurs (mais non la ralisation). Le chapitre se
clturera par une tude de march couvrant ce qui existe dj comme systmes de
monitoring nergtiques.
Lensemble du systme poursuit trois objectifs : il se veut flexible, peu coteux,
et non-intrusif. La flexiblit concerne la possibilit dutiliser dautre capteurs, et de
facilement sadapter dautres maisons, comprenant dautres appareils ou consommant dautres nergies comme le mazout. Le systme doit tre peu coteux en prix,
mais galement en nergie. Il faut videmment que le gain permi par linformation
de lutilisateur sur sa consommation soit plus grand que lnergie consomme par le
systme. Enfin, il nest pas acceptable de demander lutilisateur de modifier son
installation lectrique ou de changer son compteur, le systme devant donc tre non
intrusif.
Lensemble de USE Monitoring est divis en 3 parties :
Lacquisition des mesures par webcam (gaz et eau)
Lacquisition des mesures lectriques
Linterface
Lacquisition se fait par des camras qui observent les compteurs de gaz et deau.
Ces camras sont connectes un ordinateur. Comme les compteurs sont souvent
dans une cave, elles seront connectes un mini-ordinateur ARM : un Raspberry Pi
(Fig. 2.2).
Le Raspberry Pi est un ordinateur de 30A
C, un peu plus grand quune carte
de crdit. Il est fourni avec une distribution linux : Raspbian, base sur Debian
[45]. Il dispose de deux ports USB, dun port HDMI, dun port ethernet et dun
9
10
11
Linterface web a deux rles majeurs. Elle permet dafficher de faon conviviale
et comprhensible les donnes gnres par le modle (Fig. 2.1), notamment sous
forme de graphiques. Mais elle sert galement paramtrer la maison de lutilisateur
en lui demandant de rpondre une srie de questions ayant trait au type de maison
(appartement, habitation mitoyenne,date de construction, etc...) et de tracer un
schma trs simplifi de lhabitation. Linterface doit galement tre capable de
sadapter tous les types de maisons. Elle doit permettre lajout dventuels futurs
capteurs qui ne seraient pas pris en compte ici, comme un capteur sur des panneaux
solaires, la mesure du mazout consomm par une chaudire, ou le placement dune
pompe chaleur.
12
2.1
2.1.1
Acquisition
Gaz et eau
Obliger un utilisateur installer un compteur de gaz numrique est videmment trs compliqu, voire dangereux. De mme, le placement dun compteur deau
gnrerait des travaux de plomberie importants et coteux. Ces types de compteurs
sont dailleurs trs chers. La solution propose ici est donc de prendre en image
le compteur existant que tout un chacun possde, dcoder les chiffres grce un
OCR (Optical Character Recognition - logiciel de reconnaissance de caractres) et
transmettre cette information au serveur.
2.1. ACQUISITION
13
Figure 2.5 Photo telle que prise par la webcam. On aperoit le reflet des LEDs
en haut de la photo
14
2.1.2
lectricit et temprature
Les compteurs lectriques ne possdent pas une grande prcision, ds lors il tait
intressant davoir un wattmtre mesurant plus prcisment la consommation globale
de la maison. Afin dtendre les possibilits de notre projet, nous avons intgr une
quipe dlectroniciens qui en plus du wattmtre placer sur larrive lectrique
gnrale de la maison ont fabriqu deux capteurs de tempratures et deux wattmtres
pour des appareils lectro-mnagers spcifiques qui intgrent galement des relais
ayant la facult de couper les appareils distance.
Cette partie se prsente sous la forme dun botier contenant une carte mre (cP
sur le schma 2.8) qui se connecte au Raspberry PI. Les autres lments communiquent par radiofrquence avec la carte mre.
Trois modules diffrents sont visibles sur la figure 2.9 :
Le module mT mesure la temprature et renvoie les donnes la carte principale
cP.
Le module mWcc transmet une mesure de la consommation lectrique dun
appareil cP (ce module se branche entre la prise lectrique et lappareil) tout
en donnant la possibilit lutilisateur de couper lalimentation distance.
cP est la carte mre, qui sera branche directement sur le Raspberry PI. Elle
possde galement 3 pinces pour mesurer lintensit lectrique des 3 phases de
courant larrive de la maison. Cette carte sera donc galement ct du
compteur lectrique.
Chacune des cartes est contrle par des microprocesseurs PIC.
Pour les mWcc, ces derniers utilisent un capteur de courant industriel et la tension
est lue au moyen dun transformateur par un des convertisseurs analogique-digital
du pic. Il suffit alors de multiplier la tension par le courant pour obtenir la puissance
consomme. La coupure du courant se fait elle grce un triac et son optocoupleur.
Pour le capteur de puissance principal, le systme est identique si ce nest que
des pinces sont utilises plutt que des bornes dentre-sortie. En effet, le systme se
voulant non-intrusif, il ntait pas acceptable ni lgal de demander lutilisateur de
couper son arrive de courant pour dnuder les fils et faire traverser le courant par
la carte.
2.1. ACQUISITION
15
Pour la communication radio, les lectroniciens ont utilis des cartes XBee [58],
qui sont des modules trs faciles utiliser avec les PIC qui analysent les donnes des
capteurs. Pour communiquer les donnes de chacun des modules la carte mre, un
multiplexage temporel est utilis. La carte mre envoie un signal toutes les minutes
indiquant quel module a le droit dutiliser le canal. Chaque Xbee a donc droit de
parole tour tour pour envoyer ses donnes la carte mre. Lorsque la carte mre a
reu tous les rsultats, elle communique ceux-ci lordinateur via un port srie gr
par une puce MAX232.
De la mme faon que pour les capteurs lis la webcam, les donnes collectes
par la carte mre qui ont t transmises au Raspberry Pi sont envoyes au serveur
par la mthode discute dans la section 4.5 sur le protocole de communication.
16
2.2
Etude de march
Cette section prsente une analyse de ce qui existe dj, autant au niveau de
linterface que pour le systme de capture et de monitoring dans son ensemble, comme
ceux-ci vont souvent de paire. Il est important danalyser les diffrences avec nos
objectifs et de comparer les avantages et faiblesses de chaque systmes (ou du moins
dun panel assez large)
2.2.1
Smartbox
Cet appareil[49] dElectrabel permet la mesure de la consommation de 4 appareils lectriques via des capteurs sans fil. Il est possible dacheter dautres capteurs
lectriques, et un capteur thermique en option. Les donnes sont envoyes par la
smartbox Electrabel qui propose une interface en ligne pour consulter diverses
statistiques sur celles-ci. Les appareils surveilles peuvent galement tre coups ou
teint.
Avantages :
Application SmartPhone native
Inconvnients :
Consommation dappareils lectriques uniquement.
Pas de mesures globales ou de fort amprage.
Cot dachat non ngligeable (139A
C), et abannement mensuel de 3A
C.
2.2.2
17
Open Energy Monitor[37] est une solution de monitoring Open Source. Aucun
systme matriel nest produit, mais des schmas sont distribus pour fabriquer des
capteurs. Comme notre systme, celui-ci utilise des pinces ampermtriques pour
mesurer la consommation lectrique. Cependant, le systme ncessite des comptences
en lectronique, et est limit llectricit et les tempratures uniquement. Linterface
est en PHP.
Avantages :
Open source
Inconvnients :
Electricite uniquement
Monitoring uniquement (pas de contrle)
2.2.3
Efergy Elite
2.2.4
Wattvision
2.2.5
EKM Metering
18
2.2.6
Chacon ecowatt
Chapitre 3
Choix logiciels
Nous allons analyser dans ce chapitre les divers choix de logiciels et les choix
dimplmentation.
Nous voulions un systme livrable "cl sur porte", galement compatible avec
du matriel de rcupration et divers systmes dexploitations. Nous pourrions recompiler nos excutables et les adapter ces derniers ainsi qu diverses architectures,
mais ceci constitue un travail plutt lourd.
Le choix du langage est en fait parti du module de calcul. Le modle nergtique a
t dvelopp sous Matlab, qui prsente une possibilit dinterfaage plutt complexe
et une utilisation des ressources plutt gourmandes. Nous verrons que parmi ces
alternatives, lutilisation du langage Python[41] ressort du lot.
Le module dacquisition pour les webcams tait lui aussi bas sur du code Matlab
(finalement abandonn au profit dune librairie Python). En effet, ce code laissait apparatre des problmes similaires au module de calcul (extrmement lent, interfaage
difficile, ...) et pour garder un mme co-systme, les membres du projet IdP ont
dcid dcrire tous les codes en Python.
3.1
Langage : Python
Un des premiers avantages du Python est donc quil convient toutes les parties
du systme :
Pour les scripts : Notamment utile pour lOCR et le contrle des webcams,
mais galement pour les compteurs virtuels qui seront discuts dans la section
5
Pour le modle, la librairie numpy [35] permet le calcul matriciel et scientifique
Pour linterface, de nombreux frameworks et plugins sont disponibles en Python
19
20
Le Python est un langage interprt, cest dire quil nest pas compil. Linterprteur Python excute directement des instructions crites dans un fichier source
contenant du texte. Bien-sr des sries doptimisations permettent de garder une
version entre le binaire et la source pour ne pas rinterprter tout le texte chaque
excution. Les applications Python sont donc directement cross-platform puisquil
suffit dinstaller linterprteur Python sur un des trs nombreux systmes supports
[43] pour que lapplication puisse tourner.
Le Python est un langage orient objet. En quelques mots, cela signifie que lcriture dune application est faite en petits modules auxquels sont dlgus certaines
fonctionnalits et ces modules sappellent entre eux pour former lapplication. Le
Python est souvent dcrit comme "hautement" orient objet, dans le sens o il ne
dispose pas de types primitifs : les entier ou caractres sont des objets. Il est galement dit de haut niveau, dans le sens o il est considr "loin du code machine",
lutilisation ne requiert aucune connaissance sur la structure de son ordinateur, et
particulirement de la mmoire : il ny aura jamais en Python dutilisation de malloc
ou autre. Lutilisation mme de tableaux taille fixe est trs limite, car ceux-ci sont
souvent remplacs par des listes dynamiques.
Python convient trs bien pour des petits scripts notamment grce ses nombreux
plugins qui permettent dcrire rapidement de petites applications sans rinventer
la roue (Voir notamment la Python Package Index [44]), mais il convient aussi
lcriture dapplications modestes. Il est utilis par des grands noms tels que Google
(bien que son utilisation au sein de la socit ait tendance disparatre au fur et
mesure du dveloppement de lentreprise) [46]. En effet le Python tant interprt, il
est forcment plus lent [42] et tend tre abandonn lorsque des projets dpassent
une certaine taille. Est-ce une raison pour ignorer le Python ? Non, puisque beaucoup
dapplications ne requirent pas de travail lourd, le Python permettant presque
toujours un code plus concis [38], gagnant ainsi du temps de programmation. Ainsi, le
Python convient lappel de fonction natives ou dautres applications. Sil est de plus
en plus utilis dans le calcul scientifique via numpy[35] ou SciPy[48], cest notamment
parce que les performances ne sont pas tant impactes, car ces modules font appel
des librairies crites en C ou fortran. Lutilisation du Python permet des codes
concis, facilement comprhensibles qui sont en outre trs utiles la communaut
scientifique. Celle-ci appelle tout particulirement un grand partage des applications
dans un langage facilement lisible et universel. Il est galement beaucoup utilis
comme langage de plugins dans plusieurs applications connues tels que Blender [4]
ou Inkscape [25] pour ces mmes raisons.
Lutilisation du Python reprsente aussi un choix personnel parmi les autres
possibilits offertes en matire de langage pour implmenter une interface web. En
effet, je souhaitais opter pour un autre langage que le PHP avec lequel javais dj
beaucoup travaill au travers la conception de nombreux sites. Je dsirais donc varier.
Le Java aurait galement bien convenu grce ses framewsork pour le Web mais son
21
utilisation tait dej fort rpandue dans le cadre de lUniversit. Je lavais galement
utilis lors de mon stage.
3.2
framework : Django
22
23
pour chacun de ses utilisateurs. Il dispose galement de groupes pour runir certains
utilisateurs en catgories, avec les mmes permissions par dfaut. Plus globalement,
il existe beaucoup de packages ( ce jour 1766 rpertoris sur [16]) qui permettent
lajout de ce genre de fonctionnalits en quelques lignes de code.
3.2.1
24
3.2.2
Base de donnes
Django supporte plusieurs backend pour diffrentes base de donnes. Le ct standard de mySql, mes connaissances de celui-ci et sa relative rapidit ont rapidement
orient mon choix vers lui. Oracle serait un peu trop gourmand en ressource pour un
tel systme, sa configuration tant beaucoup moins simple. Lalternative mySql
souvent prsente est SQLite, un systme de base de donnes SQL qui stocke les
donnes dans un fichier. Le problme est que je voulais garder un accs la base
de donnes depuis lextrieur pour dventuels ajouts de donnes sans passer par
linterface. De plus,si la base de donnes nest pas assez importante pour justifier
Oracle, il ne faut pas oublier quen moyenne 10 compteurs (en ce y compris les
virtuels) envoient des donnes toutes les 5 minutes, soit 2880 lignes par jour, soit
environ 86400 entres par mois. Ceci invite dailleurs lajout dune deuxime table
charge de garder la consommation journalire agrge de chaque compteur. Un
nettoyage automatique de la table "brute" serait opportun mais en labsence du
modle, il est prfrable de laisser toutes les donnes.
Concernant le choix du moteur, nous verrons en dtail les diverses tables et la
structure gnrale de la base de donnes. Linterface doit pouvoir supporter plusieurs
maisons, composes chacunes de plusieurs tages comportant plusieurs murs, euxmmes quips de plusieurs fentres, ... Mon choix sest donc port vers InnoDB qui
intgre la gestion des cls trangres et permet une grande efficacit dans lapplication
des multiples jointures que nous aurons faire.
3.2.3
Technologies Web
Linterface fait un usage extensif de lHTML5 et du javascript. Elle utilise principalement la librairie jQuery, et quelques-uns de ses plugins. Le systme le plus
complexe, cest--dire le dessin des plans (et la modlisation en gnrale), a t crit
entirement en Javascript, dessinant grce llment Canvas introduit avec lHTML
5.
HTML5/CSS3
LHTML nest plus prsenter. Sa version 5 apporte cependant son lot de nouveauts permettant denvisager les fonctionnalits de linterface sans recours un
plugin dans le navigateur tel que le flash ou les applets Java. Si lHTML permet des
modifications faciles du design sans recourir des images, la nouveaut la plus utile
dans notre cas est llment canvas, qui permet de dessiner sur un plan 2D avec des
instructions de base telless que des points, des arcs de cercles, des lignes, etc. Un
autre lment, le SVG, aurait t envisageable. Au niveau de la compatibilit avec
les navigateurs : ils sont au mme niveau. La diffrence est que le SVG permet de
dessiner de faon vectorielle et le canvas de dessiner sur un bitmap. Cependant le
canvas peut aussi bien dessiner en 2D quen 3D (sur les navigateurs compatibles)
25
tandis que le SVG nest quen 2D. Jai choisi dutiliser le canvas pour me laisser la
possibilit dafficher le plan en 3D. Au final, jai modularis totalement le systme
de rendu en un objet Javascript qui reoit des instructions de dessins de fentres ou
de murs, et qui se charge de les traduire pour dessiner sur le systme sous-jacent.
Au final, le SVG aurait donc mieux convenu au module uniquement 2D, puisqu
chaque re-dimensionnement de la page le plan doit tre redessin, mais il tait trop
tard pour changer lorsque jai abandonn lide du plan 3D.
Les problmes de compatibilit sont discuts dans la section 6.6.
Javascript
Une grande difficult a t de grer un code Javascript relativement gros et qui se
veut modulable pour rpondre lobjectif de flexibilit, malgr le ct particulier de
la gestion des objets en Javascript. En effet, le Javascript ne permet pas nativement
dtendre les objets. Il permet en revanche de copier les fonctions dun objet un
autre. Ceci prsente lavantage davoir un mcanisme dhritage mais pas dtendre
une fonction puisque celle-l mme de lobjet parent sera remplace par celle de
lenfant.
Pour combler ces manquements du Javascript, nombreux sites ont recours un
framework. Jai port mon choix sur jQuery [28] car il permet daccder facilement
des lments de la page web, den modifier le contenu, de les animer, et facilite
grandement la gestion de lAJAX... Environ 45% des 100 000 cites les plus populaires
du monde utilisent un framework, et 28% de ceux-ci utilisent jQuery, loin devant les
autres [1].
Lutilisation de jQuery permet aussi dassurer la compatibilit des instructions
sur un trs grand nombre dappareils car certaines instructions se comportent diffrement dun navigateur lautre et jQuery sassure dutiliser les bonnes mthodes.
Techniquement, jQuery najoute videmment aucune fonctionnalit Javascript,
mais il permet de faire beaucoup plus en beaucoup moins de lignes de code et moins
de temps.
Pour les graphiques, cest la librairie Highcharts qui a attir mon attention. Elle
nest cependant pas libre (mais gratuite pour un usage limit tel quil se prsente
dans le cadre de mon TFE). Il existe de trs nombreuses librairies, mais Highcharts
tait une des rares comprenant toutes les fonctionnalits que je dsirais.
26
Chapitre 4
Structure de linterface
Ce chapitre passera en revue la structure de la base de donnes, et les mthodes
utilises pour transfrer les lments de la base de donnes via Django, au client
Javascript. Les lments importants de linterface seront ensuite expliqus comme le
systme de plan, de traitement des donnes ou encore le protocole de communication
entre les capteurs et le serveur.
4.1
Applications
28
4.2
29
30
4.2.1
Structure de la maison
31
4.2.2
Alertes
Le cahier des charges imposait une interface simple mais puissante. Cette recherche
ma orient vers un systme de puzzle (Voir fig. 4.4) o lutilisateur voit directement
quelles pices il peut emboiter, et crer une logique en assemblant des lments du
puzzle. Toutes les pices du systme de "puzzle" appartiennent lune des 4 classes
suivantes :
AnalogMeter : Reprsente une pice qui est la premire entre : le relev dun
compteur. Elle contient donc un lien vers un objet Meter tel que prsent dans
la section prcdente.
ADC : Elle reprsente une pice qui convertit une entre analogique en une
sortie digitale. Elle dispose dun champs seuil (threshold). Le champs Lastvalue
permet de garder en mmoire la dernire valeur lue afin de permettre de reprer
le moment o une donne traverse le seuil, sans devoir remonter la chaine
jusquau compteur.
32
4.2.3
Authentification
La plupart des modles sont ici fournis directement par le package dauthentification Django. Le seul cr par mes soins est lobjet profile, permettant de dfinir
si lutilisateur est en mode avanc (advanced) et sil dsire loption de dfilement
automatique (autoscroll). Les groupes ne sont pas utiliss dans linterface, par contre
les permissions le sont.
4.3
34
Figure 4.5 Exemple de traverse des donnes - Donnes des compteurs tels
quenregistrs dans la base de donne mySQL
Figure 4.6 Exemple de traverse des donnes - Code Python charg daller
rcuprer les donnes dans la base. Le contexte associe des variables qui seront
utilises dans une template pour tre remplac par les donnes.
Figure 4.8 Exemple de traverse des donnes - Objets reprsents en JSON tel
que gnr par le plugin FullSerializer
jai utilis le plugin Django FullSerializers qui ajoute la possibilit dnoncer quels
modles identifis par des cls trangres il faut dvelopper.
Notons que les objets JSON sorti par Django sont nettoys par la fonction
jsonStripModel() du fichier global.js. En effet les objets JSON gnrs par Django
contiennent quelques champs qui dfinissent le type de modle et des mta-donnes
sur la classe (Voir fig. 4.9). Les donnes elle-mmes sont dans un objet fields. Cette
fonction cre un objet de classe correspondant au modle en fonction des mtadonnes, avec pour champs, les variables du modles et comme valeurs des champs,
leur contenu (Voir fig. 4.10). En Javascript, mme les objets spcialement dfinis
sont anonymes. Il ny a pas de diffrence entre linstruction var person = new
Person(22,Tom,STUDENT) ; et var person = {age :22,name :Tom,work :STUDENT ;}. En effet, demander quel est la classe de ces deux objets retournera toujours
"object". Ainsi, seuls certains objets pour lesquels des fonctions sont spcifiquement
dfinies, par exemple les murs, possdent une fonction getOrientation() qui retourne
lorientation du mur ; ceux l sont dfinis dans models.js. Les autres sont donc crs
de faon anonyme.
Lorsque les donnes sont modifies, lenvoi du Javascript vers Django ne se fait pas
en JSON mais directement par la fonction objects_to_request() qui gnre les donnes
formates pour une requte POST standard. Les donnes de plusieurs positions
sont ainsi renvoyes sous la forme num_positions=X&position_x1=X1&position_y1=Y1&position_x2=X2&.... La d-srialisation tant de toute faon impossible
faire automatiquement ct serveur puisque les objets sont anonymes, leur classe
36
Figure 4.10 Exemple de traverse des donnes - Objets aprs transformation par
jsonStripModel() de la liste de structure Meter. Par rapport la figure 4.9, il ny
a plus de sous-structure fields, et le champs model a t utilis pour instancier des
objets de la classe correspondante.
37
tant perdue il ntait pas spcialement avantageux dutiliser le JSON plutt quune
boucle rcuprant les requtes. Si le JSON peut tre pars nativement par tous
les navigateurs, il ne peut pas tre cris nativement et doit donc faire lobjet dun
traitement plus lourd par une librairie externe. De plus le Python est moins dynamique
que le JavaScript et il est plus compliqu de faire les transformations cites dans les
paragraphe prcdent en sens inverse.
4.4
38
et les murs sont groupes respectivement dans des groupes de fichiers JavaScript
spars par fonctions, afin de permettre un chargement minimal en accord avec les
fonctionnalits demandes.
Comme certains vnements sont asynchrones, ils peuvent finir en mme temps ou
des moments trs proche. La fonction refresh() inclu donc un mutex plan.refreshing
pour empcher plusieurs rafraichissements simultan. De plus, il serait inutile de
rafraichir le plan plus de 15 fois par secondes (nous parlons bien ici de changer le
contenu des pixels, pas de la frquence daffichage de ces pixels lcran). Mme
quand lutilisateur passe sa souris au dessus du plan et que lon doit dessiner la
position dune future fentre qui change constamment de position par exemple. Le
mutex nest donc ractiv que 66ms aprs la fin du rafraichissement du plan. Si une
demande de rafraichissement du plan est faite pendant ce temps, elle ne sera excute
quaprs les 66ms. Si une deuxime demande de rafraichissement, elle sera ignore.
Le schma gnral est visible sur la figure 4.11. Plutt que d adresser directement llment canvas, un objet charg du rendu (renderer.js) est responsable de
la translation dobjets complexes en primitives 2D. Ainsi, le plugin de gestion des
murs demandera au Renderer de dessiner un mur avec son paisseur et sa position
"relle" en mtre, et le Renderer se chargera de traduire ces donnes en une srie
de fonctions de dessin de rectangles pour llment canvas, tout en se chargeant de
convertir les positions relles en positions lchelle du plan en pixels. Lide est
ici que ce Renderer soit totalement interchangeable, pour pouvoir utiliser un autre
lment sous-jacent que le canvas, ou dessiner en 3D grce WebGL par exemple. Le
JavaScript ne permet pas dimplmenter des interfaces au sens Java du terme, mais il
faut considrer que le Renderer en utilise un. Notons que le dessin des compteurs se
fait en HTML et non directement sur le canvas, notamment pour pouvoir utiliser des
librairies de graphiques en JavaScript. L aussi, les positions des lments sur le plan
sont calcules par Renderer, sans faire de traduction par lchelle dun pixel/mtre
directement afin de ne pas casser la modularit.
Tous les plugins ont plus ou moins la mme structure : la fonction registerYYYPlugin() o YYY est Wall, Window, Appliance ou Meter se chargent denregistrer les
vnements ncessaires au fonctionnement du plugin. En gnral, il y en a un pour
le chargement des donnes ncessaires qui sinscrit lvnement "floorChanged" ou
"wallLoaded" et un autre pour laffichage sur le plan qui sinscrit lvnement "refresh". Les pages qui se contentent dafficher le plan appellent les 4 fonctions register.
Les pages de lapplication builder inscrivent en plus, des fonctions aux vnements
"click" et "move" pour interagir avec lutilisateur lorsquil clique sur le plan (ou
le touche du doigt pour les smartphone) et lorsque la souris bouge au dessus de celui-ci.
La plupart des maisons ont la mme enveloppe extrieure chaque tage. Pour ne
pas que lutilisateur aie recopier les murs extrieurs lorsquil change dtage, lors de
ltape de dfinition des murs, et que ltage infrieur est dj dfini, un algorithme
39
Figure 4.12 Copie automatique des murs extrieurs. Les murs de ltages du
dessous sont visibles en rouge. Les murs extrieurs sont automatiquement copis.
40
danalyse en composante connexe en deux passe sera appliqu sur le plan du mur
(fonction plan_labelize() dans plan.js) pour trouver les murs extrieurs (Voir fig.
4.12). Pour rappel, la mthode consiste simplement analyser les cases dans lordre
gauche-droite, haut-bas et leurs attribuer un numro appel label qui commence
0. Le numro est choisi comme le plus petit des numros en haut et gauche de
la case analyse, sauf si elles sont spares par un mur. Si les deux sont spares
par un mur, alors on augmente le label puisquon entre dans une nouvelle zone. La
seconde passe se fait en sens inverse, et consiste attribuer le plus petit des label
des zones droite et en dessous de chacune de chacune des cases du plan si elles
sont dans la mme zone. Le rsultat est un tableau correspondant chaque case
de la grille du plan, contenant le numro de la zone laquelle appartient la case.
Les zones correspondant aux pices, et la partie extrieure tant toujours la zone
numro 0. Il suffit alors de copier les murs ayant une zone positive et une zone gale 0.
Cet algorithme est galement utilis pour colorer les pices de la maison de faon
diffrentes pour un rendu plus agrable.
4.5
Protocole de communication
Cette section discutera du protocole denvoi des donnes des capteurs vers le
serveur web. Plusieurs possibilits soffraient moi : lutilisation dun protocole de
monitoring spcialis comme SNMP, implmenter moi-mme un protocole bas sur
TCP ou UDP, ou utiliser le protocole HTTP pour directement communiquer avec
linterface. Cest ce dernier que jai choisi.
Pour rappel, ce travail se faisait dans le cadre dun projet plus global, o dautres
quipes de personnes nayant presque aucune comptence en informatique devaient
menvoyer des donnes via leurs capteurs prsents dans la section 2.1. Il fallait
donc un systme trs simple, limplmentation dun agent SNMP, lauthentification
dSNMPv3 ncessaire la scurit de ce projet, ou encore la connaissance du principe
des MIB excluant doffice le choix de ce protocole. Quant limplmentation dun
protocole via TCP ou UDP, la question tait de dterminer lavantage rel, puisque
javais de toute faon un serveur HTTP disposition (celui charg de linterface),
prenant en charge tout ce dont javais besoin. De plus, les divers clients peuvent
faire appel aux librairies HTTP disponibles dans tous les langages, ou utiliser des
programmes Linux comme WGET directement appels par un script.
Chaque compteur (reprsent par lobjet Meter) dispose dun hash, une squence
de 12 lettres majuscules, minuscules et chiffres, donne lutilisateur lorsquil dfinit
un compteur dans sa maison. Lutilit de ce hash est de disposer dun identifiant
"secret" pour le compteur quun logiciel ne pourrait pas trouver par force brute pour
envoyer ou lire de fausses donnes. Pour ajouter un relev, le client na qu mettre
une requte HTTP(s) sous la forme :
41
42
4.6
4.6.1
Pre-processing
Certaines donnes peuvent cependant tre ignores pour allger la base de donnes.
Par exemple, si le compteur est en mode total, il est inutile denregistrer plus de
deux fois la mme valeur. Il est cependant utile de garder en mmoire la premire et
la dernire fois que cette valeur a t lue, afin que lutilisateur puisse constater quil
y a eu un palier (en thorie la consommation deau en comporte beaucoup, lorsquil
ny a personne dans la maison). Sur la figure 4.13 reprsentant une consommation
instantane dune telle situation, les trois points au centre du palier sont inutiles.
Pour ne pas les enregistrer, le systme vrifie avant denregistrer un relev, que les
43
4.6.2
Post-processing
44
4.7
Systme dalertes
La page servant la dfinition du systme dalertes est compose dune part des
plans de chaque tage de la maison pour que lutilisateur clique sur le compteur
mesurer, et dautre part de la zone de placement des pices, qui contient toujours
une pice AnalogMeter lie au compteur slectionn.
Lorsque lutilisateur choisit un compteur, la chaine de pices existantes est charge
depuis le serveur en AJAX par une requte GET. La vue Django correspondante
(fonction get dans alert/views.py) imprime toute la structure de la chaine en JSON,
en crant une liste "outputs" contenant tous les lments pointant vers lAnalogMeter
correspondant au Meter slectionn. Il fait de mme pour chacune des pices trouves,
suivant ainsi toute la chaine.
Comme pour le transfert des donnes de la structure de la maison, les objets
anonymes reus en JSON sont lus et changs par des objets JavaScript correspondant
chacun des types de pices (voir js/alert/alert.js). Chacune de ces pices tend
galement, comme pour limplmentation de la base de donnes, un objet AlertModel.
Chacune de ces classes implmente des fonctions tels que getImage() qui retournera
limage de la pice du puzzle, getText() qui retournera un texte ventuel afficher, etc.
Lobjet Board est charg dimprimer sur un canvas la chaine de pices, en appelant
ces fonctions.
Lenregistrement de la chaine de pices se fait cette fois en JSON, la structure
tant trs commune avec les modles Django. Une requte post contenant la structure au format JSON est envoye au serveur et traite par la fonction save (Voir
alert/views.py). Cette vue excute un travail trs comparable celui que fait le
code JavaScript. Le format JSON est transform en une srie de liste Python et de
structures du type dictionnaires, quil faut enregistrer en Modles (qui sont pour
45
4.8
46
Chapitre 5
Compteurs virtuels
Pour certains compteurs il est possible dapproximer une consommation de faon
trs correcte. Pour cela jai mis en place sur le serveur quelques petits scripts appels
toutes les 5 minutes via lchanceur Cron dj prsent dans la section 2.1.1.
Tous les scripts impriment sur la sortie standard, une valeur de consommation
envoyer un compteur. Il suffit ensuite dutiliser le programme wget[56] pour
lancer la requte HTTPS au serveur. Un exemple dappel est la commande wget
spider https ://server.com/data/hash/Python path/temperature.py BEXX0011. Le
paramtre spider de wget permet de ne pas rellement tlcharger la page (envoie
une requte HEAD plutt que GET) puisque le rsultat ne nous intresse pas.
Lutilisation des symboles apostrophe franaise permet de remplacer la commande
entre les symboles par la sortie que celle-ci aura produite, et donc de remplacer la
fin de lURL par la sortie du script temperature.py.
Pour envoyer des donnes toutes les 5 minutes, il suffit dajouter la ligne suivante
au fichier de configuration de cron (en gnral /etc/crontab) :
*/5 * * * * root commande o commande est remplacer par la ligne cite ci-dessus.
5.1
Les premiers scripts servaient gnrer des donnes alatoires (en fonction des
heures de pointe tout de mme), afin de tester linterface, tandis que les quipes
IdP terminaient les capteurs. Ils sont disponibles dans le dossier scripts du code source.
Le premier est ranval.py qui prend en paramtre une valeur, et multipliera cette
valeur par deux nombres variant tous deux entre 0.5 et 1.5. Le premier multiplicateur
est en fonction de la journe, cest une simple fonction qui permettra de gnrer 3
pics 8h, 12h, 16h et 20h comme sur le profil de consommation typique de la figure
5.1. Le multiplicateur final est visible sur la figure 5.2. Le deuxime multiplicateur
est simplement un nombre alatoire entre 0.5 et 1.5, ce qui permet de donner un air
plus raliste aux valeurs, bien que beaucoup plus oscillantes puisque lors de chaque
47
48
5.2. TEMPRATURE
49
Figure 5.3 Profil final gnr avec une valeur de base de consommation de 15.
Axe vertical : valeur gnre. Axe horizontal : heure de la journe.
appel du script la nouvelle valeur naura aucun lien avec la prcdente, si ce nest la
base et lheure. La figure 5.3 montre le rsultat pour une valeur de base de 15.
Le script getval.py qui permet de rcuprer la valeur courante dun compteur
grce un appel GET via la librairie httplib, et rangetval.py combine les deux afin
de rcuprer la valeur actuelle dun compteur et lui ajouter la valeur gnre. Ce
script est utile pour simuler une consommation sur un compteur en mode "total",
puisque les consommations envoyes doivent tre ajoutes au dernier total.
5.2
Temprature
5.3
50
ses appareils, de son nombre de disque dur, de son cran, etc... Lorsquil dmarre, il
est ncessaire denvoyer la valeur moyenne de la consommation en veille. Comme
expliqu dans la section 4.2, la consommation totale est calcule en fonction de la
consommation instantane pour la priode prcdent lenvoi. Ainsi, si lordinateur a
t teint 3 heures, sil dmarre en envoyant 1.5 Watts, le systme considrera que
lordinateur a consomm 1.5 Watts pendant 3 heures.
Ma recherche en matire de documentation sur la consommation dun ordinateur
a t peu fructueuse. Je me suis bas sur quelques analyses gnrales dont larticle
[5], mais soit ce sont des analyses de profil sur lanne ou de la consommation totale
de lordinateur, soit ce sont des analyses trs fines dun composant prcis dont laccs
aux paramtres comme le temps de "spin-up" dun disque dur (dmarrage dun
disque dur) nest pas accessible de faon automatique.
Jai donc tudi chacun des composants dun ordinateur un par un pour essayer
dobtenir une consommation totale approxime de lordinateur. Le but de cette
recherche est surtout de montrer les possibilits dextensions que la facilit du protocole permet, et dexplorer quelques pistes pour se passer de certains capteurs.
Beaucoup dautres ides seraient ralisables, telle quactiver la webcam dun ordinateur pour vrifier si la lumire de la pice est allume toutes les 5 minutes et envoyer
alors la consommation dune ampoule. Le script final scripts/computer.py na donc
pas pour vocation dtre complet et nest test que sur quelques machines. Il ne
supporte que les systmes Unix.
Le premier lment prendre en compte est le type dordinateur. En pratique, il
faudrait au moins sparer les ultra portables, les portables, les ordinateurs de bureau
et les serveurs. Jai dcid de ne garder que deux catgories les plus courantes dans
une maison : les portables et les ordinateurs de bureau. Pour dtecter si lordinateur
est un mobile, le script teste lexistence du dossier /proc/acpi/button/lid/ qui indique
si lcran de lordinateur portable est ouvert ou ferm. Si ce dossier nexiste pas,
cest quil ne sagit probablement pas dun ordinateur portable. Le type dordinateur
nimplique pas de consommation mais sera utilis par le reste du script.
Ltape suivante est le calcul de la consommation des disques durs. Le script
liste les priphriques dans /dev/sd* et utilise hdparm pour voir si cest un SSD, un
HDD ou autre chose. En ralit, on utilisera le fait que hdparm retourne une erreur
si le disque nest ni un SSD ou un HDD, Il sagit alors probablement dune cl usb
ou dun lecteur CD. Les consommations sont les moyennes tires des produits de
WesternDigital[54] des consommations de ses disques durs 3.5 pouces(6W) pour les
ordinateurs de bureau et 2.5 pouces (2W) pour les portables. Concernant les SDD,
ce sont celles dOCZ[36] qui ont t calcules (0.8W) et une moyenne de 0.5W pour
les autres appareils pour indiquer en moyenne une lgre consommation de la cl usb
ou du lecteur cd, la plupart du temps en veille.
51
52
53
processeur. Il parse la page pour trouver le lien vers la page daspect technique et
charge cette deuxime page. Sur cette dernire est indiqu le TDP du processeur dj
discut concernant les GPU. Cest sur base de ce TDP que lon pourra considrer la
consommation du processeur. En ralit, je considre que la consommation maximale
du processeur est de 60% du TDP pour un mobile et 75% pour un desktop. Cette
valeur est quelque peu arbitraire et elle a t choisie en regardant "ce quil manque"
entre la consommation simule de mes 4 appareils et leurs consommations relles
ainsi qu en rcoltant diverses informations sur les forums et divers articles. La
consommation actuelle dun processeur est calcule ensuite comme la somme de 10%
de sa consommation maximale (mme sans aucune charge, il consomme) et des 90%
restants majors en fonction de sa charge.
Voici le rsultat des estimations et des mesures relles :
Type
Portable Desktop Portale Desktop Mobile
Processeur T9300
i5 3550 P6200
G1610 G1610
Idle rel
20
143
20
29
Idle simul
25
123
22
65
30
Full rel
33
193
39
35
Full simul
44
195
44
119
62
Le premier mauvais rsultat du Celeron G1610 sexplique par le fait quil est
dans une plateforme utilise comme serveur. Lalimentation est une alimentation
haut de gamme trs efficace tandis que la carte mre est dentre de gamme mme si
elle comprend un bon chipset assurant une consommation minime. Le processeur
Celeron consomme trs peu malgr un TDP du CPU annonc de 55 Watts. La tour
complte sans cran ne consomme que maximum 27 Watts pleine charge, du coup,
ma prsemption sur le TDP semble incorrecte dans ce cas. Cet ordinateur particulier
peut en fait tre considr comme un ordinateur portable, jai donc dcid aprs
ces rsultats de dclarer lordinateur comme mobile galement lors de la dtection
dun CPU Celeron. Les consommations sont plus correctes mais le TDP du CPU
continue dinfluencer la consommation en charge complte en laugmentant de faon
trop lve cause du chiffre du TDP de 55W donn par Intel, mme major par la
conversion TDP vers sa consommation maximale relle.
Quelques essais mont permis dassumer que la consommation par un vrai programme (avec des accs disques, des changes mmoires, etc) ne changeait pas les
rsultats par rapport lutilisation du logiciel cpuburn pour simuler la charge. Ceci
est explicable par le fait que si effectivement un logiciel qui cre beaucoup daccs
disque augmente la consommation au sein de celui-ci, il rduit sa consommation du
processeur qui est en tat dattente.
En conclusion, le script permet davoir une ide de la consommation estime,
raisonnablement exacte. Ce qui permet lutilisateur de donner une approximation
relativement correcte sur lanne. Un utilisateur plus scrupuleux peut paramtrer
le script en fonction de son ordinateur, en lutilisant comme une base sadaptant
54
grosso modo cet ordinateur. Ici, on pourrait par exemple dclarer que les Celeron
ne consomment au maximum que 20% de leurs TDP. Il ne serait de toute faon pas
possible de trouver automatiquement la consommation exacte de lordinateur, mme
si ce compteur virtuel tait lunique sujet de ce travail. Mme en envisageant un
parsing du site des constructeurs comme pour les CPU, nous ne pourrions jamais
avoir toutes les donnes automatiquement. La consommation dune carte mre par
exemple est trs hasardeuse et dpend de chacun de ses composants, il nest mme
pas sr que les fabricants la connaissent eux-mmes. Le boitier est galement un
problme insoluble. Certains boitiers dordinateur salimentent sur lalimentation
gnrale pour des clairages, des ventilateurs ou des petits crans LCD de contrle
mais les modles du boitier sont souvent inconnus de lordinateur lui-mme et rien
nest monitor par lordinateur lui mme mais bien par un circuit indpendant. Seul
un wattmtre permettrait de mesurer cette consommation de faon exacte.
Pour rappel, le but de ce script tait dune part de me permettre de tester mon
interface avec des donnes qui ne sont pas alatoires en attendant les capteurs des
quipes IdP, et, dautre part, dexplorer un peu plus en profondeur les possibilits de
compteurs virtuels. Je pense avoir atteint ces objectifs. Dautres ides implmenter
seraient la dtection de priphriques sur le rseau : modem, switch, imprimantes,
... et publier galement leurs consommations sur linterface. Il existe galement
beaucoup de possibilits dans le domaine de la vision par ordinateur : voir si une
lampe est allume (la consommation dune lampe tant en gnrale constante), ou,
plus largement la dtection de ltat de certains appareils mnagers. Par exemple,
beaucoup de fours micro-ondes possdent une lumire qui pourrait tre dtecte
sur une image, ou encore les leds dtat des tlvisions et dcodeurs.
Chapitre 6
Rsultats
Cette section prsentera linterface termine et la ralisation pratique des diffrents lments discuts. Les questions de performances seront discutes dans le
chapitre suivant.
Des trois objectifs du groupe IdP (Flexibilit, Accessibilit/Non-intrusif et peu
coteux), seules la flexibilit et laccessibilit concernent vraiment linterface. Le
seul lment financier est celui de ne pas requrir des performances exagres (ce
but est relativement atteint et discut dans la section valuation des performances
6.8. Concernant laccessibilit, un des objectifs majeurs de linterface est de pouvoir
fonctionner sur les smartphones, tablettes et PC. Les mcanismes mis en place
pour atteindre cet objectif sont nombreux et discuts tout au long de ce travail. La
flexibilit, elle, concerne la possibilit de pouvoir sadapter toutes les maisons, de
nouvelles nergies, ou encore de nouveaux appareils lectro-mnags. Au niveau du
code, il faut galement une totale modularit, le moins possible de "hard codage",
afin de permettre ces changements dhorizons.
Lutilisateur est catgoris comme "standard" ou "avanc", il peut tous moments changer son mode dans les paramtres.
La page daccueil affiche un menu lutilisateur lui offrant 4 possibilits, correspondant aux 4 cas dutilisation du logiciel :
Consommation - Affichage des de consommation actuelle de lutilisateur
Modlisation du btiment - Cration et configuration de la maison de lutilisateur
Alertes - Configuration du systme dalertes
Statistiques - Affichage du profil de consommation sur les dernire jours,
semaines ou mois.
La disposition des lments a t soigneusement tudie afin que lutilisateur
dbutant ne se perde pas dans les diverses possibilits du systme. Chaque icne du
menu a une couleur correspondant la page lie, et cette page est dans le mme ton,
55
56
CHAPITRE 6. RSULTATS
6.1
Modlisation - Builder
57
tape 1
La premire tape (Fig. 6.3) dfinit la maison et ses caractristiques gnrales.
Lutilisateur est invit entrer :
Un nom pour la maison : utilis uniquement pour choisir la maison active dans
la liste visible en haut dans le menu principal.
Lanne de construction : utile pour le modle, mais galement pour dfinir
automatiquement le niveau disolation des murs.
Type de maison : lutilisateur a le choix entre un appartement et une maison 2,
3 ou 4 faades. Concernant celles-ci, nous parlons ici de maisons mitoyennes.
La maison deux faades ntant pas un mur seul mais une maison coince entre
deux autres.
Situation : Urbaine, pri-urbaine ou rurale. Cette information est uniquement
destine au modle nergtique.
Longueur et largeur de la maison : ces donnes ne seront pas directement
58
CHAPITRE 6. RSULTATS
Ltape 1 est la seule obligatoire pour accder a la suivante. Une fois la maison
enregistre, lutilisateur peut naviguer entre les tapes et en sauter lune ou lautre
sa guise. Toutes les pages prsentes ici souvrent naturellement en mode "dition"
ou en mode "cration", en fonction de la slection dune maison actuelle ou non.
59
tape 2
La seconde tape concerne les habitants de la maison et leur appartenance socioprofessionnelle (Fig. 6.4). Celle-ci permettra au modle dvaluer un taux de prsence
et donc dutilisation des appareils de la maison.
Lutilisateur dfinit un nom, un ge et un emploi. Il clique sur le bouton dajout
pour inscrire lhabitant la liste et peut enlever un habitant tous moments.
tape 3
Lutilisateur doit ensuite dfinir les tages de sa maison : sil dispose dun grenier,
le nombre dtages, dune cave, etc...
Il lui suffit de cliquer sur un type dtage droite (voir fig. 6.5) et celui-ci viendra
sajouter sur le profil de la maison gauche. Il peut galement dfinir la hauteur
dun tage. Lutilisateur na pas la possibilit dintgrer des tages demi niveau. Si
cela constitue une grande simplification au niveau du code, cela ne change rien au
niveau du modle nergtique. Celui-ci nutilise que le volume globale des pices et
nest donc pas influenc par un tage un niveau dcal par rapport aux autres qui
serrait ramen au niveau infrieur ou suprieur.
tape 4
Pour les quatre dernires tapes, lutilisateur passe en mode plan (Fig. ??) afin
de dfinir les murs, les fentres, les appareils et les ventuels compteurs nergtiques
60
CHAPITRE 6. RSULTATS
61
tape 6
Pour la partie placement des appareils lectroniques, lutilisateur dispose dun
menu par catgorie pour placer ses appareils (voir Fig. 6.9)
Les catgories ne sont pas changeables par lutilisateur (mais les diffrentes catgories ne sont mises qu un seul endroit ct serveur, donc facilement modifiables
et linterface sadaptera automatiquement), cependant lutilisateur a la possibilit
dajouter dautres appareils, de changer les nergies quil utilise, leurs noms, etc...
Ceci sera discut dans la section 6.5.
62
CHAPITRE 6. RSULTATS
tape 7
Ltape suivante permet lutilisateur de cibler les compteurs dont il dispose et
les relier aux appareils dont ils mesurent la consommation. Les compteurs peuvent
galement tre identifis en tant que compteur gnral de la maison.
Pour cette dernire tape, les grilles du plan disparaissent, les pices sont colores
avec des fonds lgrement diffrents et le systme calcule la taille relle de la maison
63
6.2
Consommation - Consumption
64
CHAPITRE 6. RSULTATS
65
6.3
Alertes - Alerts
66
CHAPITRE 6. RSULTATS
6.4
Statistiques - Statistics
6.4.1
Cest dans cette catgorie que le travail au sein dune quipe pluridisciplinaire
prend son sens, puisque lexpertise de mes collgues nergticiens ma permis de
gagner pas mal de temps.
Concernant le PCI, le coefficient varie selon la puret et le type exact de lnergie
(lorsque applicable). Lutilisateur plus scrupuleux peut donc changer son PCI, quand
lutilisateur basique gardera le PCI par dfaut. En regardant le tableau 6.16, on voit
que le gaz le plus utilis est le gaz naturel et cest donc le PCI de ce dernier qui est
67
68
CHAPITRE 6. RSULTATS
6.5
Paramtres - Settings
69
si lcran est petit et que le plan nest pas visible en entier, le navigateur va dfiler
automatiquement jusqu ne plus voir le menu et le ruban de titre.
Lutilisateur peut ensuite configurer les utilisateurs (Voir fig.6.19). Les utilisateurs
ont 3 niveau daccs :
Vue uniquement : Il a accs la page de consommation et de statistiques
uniquement
Vue et alertes : Il peut en plus voir et changer les alertes
Tous les accs : Il peut aussi accder la modlisation
De la mme faon que les utilisateurs, il peut modifier la liste dnergies et la liste
dappareils lectro-mnagers. Cette fonctionnalit sera plus facilement comprhensible
aprs la rvision de la structure interne qui est explique par lexemple dans la section
6.7.1.
70
CHAPITRE 6. RSULTATS
6.6
Compatibilit et smartphones
La compatibilit avec les navigateurs de llment canvas est visible sur la figure
6.20. La compatibilit est plutt bonne, sauf pour Internet Explorer. La question est
de voir si cest rellement un problme, en fonction de la part de march des versions
incompatibles : celles avant la version 9. La figure 6.21 nous montre la part de march
des diffrents navigateurs. Malheureusement la version 8 est encore beaucoup utilise
(23%) alors que la 7 a presque disparu ( peine 1,2%). La part de march dinternet
explorer 6 est toujours de 6%, cependant ce taux lev vient en grande partie de la
Chine[24] et des entreprises qui ne mettent pas jour leurs ordinateurs. En belgique,
tout comme aux USA, la part de march est de 0,2%[24]. En rsum, il ne semble
pas utile dassurer la compatibilit pour les version 6 et 7.
Concernant llment canvas, la librairie ExCanvas[20] permet dassurer la compatibilit de llement canvas avec les navigateurs 6 8.
71
Figure 6.21 Part de march des navigateurs. Source : Net Market Share [34]
72
CHAPITRE 6. RSULTATS
des nombreuses donnes du plan tlcharger est compense par la grande utilisation
de lAJAX. Comme expliqu dans la section 4.2.1, dans la plupart des dessins de
plan, Django ncrit directement dans le code HTML de la page que les tages. Cest
ensuite une requte AJAX qui va rcuprer la liste des murs, en parallle avec la liste
des appareils. Une fois les murs chargs, les fentres le sont galement. De mme,
les donnes des graphiques ne sont jamais crites dans le code HTML de la page,
permettant lutilisateur dobtenir un chargement progressif mais sans attente.
Concernant les navigateurs mobiles, je nai pas test liPhone et liPad, ne disposant pas de lappareil et lmulateur ntant pas accessible sur PC. Cependant,
leurs navigateurs utilisent le moteur Webkit, tout comme Google Chrome et la
compatibilit devrait tre atteignable sans trop de soucis si des problmes se manifestaient. Concernant les navigateurs mobiles sous Android, jai du faire face plusieurs
problmes au sein des navigateurs et du systme dexploitation lui-mm :
Comme discut prcdemment, jai souvent utilis les lments HTML canvas. Jai rencontr un problme tonnant sous Google Chrome Mobile avec
un mobile Samsung Galaxy S2. Tous les petits lments canvas saffichaient
correctement, mais pas les grands. En ralit, les lments canvas dune taille
infrieure 256*256 sont dessins par le CPU, tandis que ceux dune taille
suprieure sont dessins par le GPU. En dsactivant totalement le rendu GPU,
la page saffiche correctement. Le problme est report et fait lobjet dun bug
report en pleine activit [9]. Le problme en cause est clairement le rendu GPU
et non le code. Le rendu est correct sans dsactivation du GPU sur lmulateur
Android et sur un HTC Desire X. Probablement parce que ceux-ci nont pas
dacclration matrielle du navigateur.
Le navigateur Android dorigine souffre lui dun autre bug [8], de sorte quun
canvas ne peut pas tre nettoy avant dtre redessin, laissant de nombreux
artfacts sur la page. Pour contrer ce bug apparu avec la version 4 dAndroid
et qui nest toujours pas fix ce jour, jai d peindre une zone blanche sur
lentiret du canvas avant chaque rafraichissement du plan. Ce qui a pour effet
dabmer un peu le design.
La version mobile de Firefox, elle, ne prsente aucun dfaut daffichage. Bref, il
semble que Google ait encore du travail sur son systme et quil y ait eu un peu trop
de prciptation dans la publication de ses mises jours.
6.7
Modularit
Les sections prcdentes ont port leur attention sur la modularit de certains
lments tel que le plan qui pourrait avoir aisment un autre module de rendu. La
flexibilit tait un des principaux aspects du cahier des charges. Une maison peut
6.7. MODULARIT
73
6.7.1
74
CHAPITRE 6. RSULTATS
Figure 6.25 Interface de configuration des appareils, avec le nouvel objet pole
bois"
6.8. PERFORMANCES
75
6.8
6.8.1
Performances
Base de donne
Jai utilis le plugin django django-toolbar [14], permettant de voir les requtes
excutes et le temps processeur quelles ont ncessit. Cet outil magnifique combin
au manuel doptimisation des requtes Django, permet de tirer parti du systme
de cache des requtes pour minimiser celles-ci et ma permis de diviser par 3 mon
nombre de requtes. Django utilisant un systme pour construire automatiquement les
requtes, il est plus que ncessaire den connatre son fonctionnement. Par exemple,
rcuprer la liste des maisons se fait avec liste = House.objects.all(). Si on veut
vrifier quil ny a aucune maison avant de parcourir la liste des maisons, alors
il vaut mieux utiliser len(liste) que liste.count(), car dans le premier cas Django
excutera la requte complte et la mettra en cache, tandis que dans le deuxime cas,
il excutera une requte du type SELECT COUNT(*). Et lorsque le parcours de la
liste des maisons commencera, il devra alors refaire une requte du type SELECT
*. Cela semble anondin, mais apporte un gain de 0,30ms sur le chargement de la
76
CHAPITRE 6. RSULTATS
page daccueil par exemple. Dans une boucle ou rpt, ce genre de dtail peut
faire toute la diffrence. Les divers temps de requtes sont pris sur mon serveur de
dveloppement local (ordinateur portable), le serveur ddi est gnralement plus
rapide.
Accueil
La page daccueil ne fait videmment presque pas de requtes si ce nest laffichage
des 10 dernires entres de la table log. Cette requte sexcute en 0.70ms. Les autres
requtes sont au nombre de 3 et sont faites sur toutes les pages : une pour laffichage
de la liste des maisons dans le menu droulant, une pour lidentification de lutilisateur
et enfin une pour la rcupration de la session dans la base de donnes. Le temps
cumul dexcution des 4 requtes est denviron 2,3ms.
Consommation
La aussi lanalyse de mon nombre de requtes ma permis de passer de 88 requtes
sur la page des consommations excutes en 120ms 19 faites en 8.2ms. Lalgorithme
qui prend un nombre important de requtes est ici celui de dtection de la taille relle
de la maison. En effet, il analyse la position de toutes les extrmits des murs pour
trouver les points extrmes de chaque tage, et finalement lespace maximal pris par
la maison afin que le plan puisse commencer le rendu. Ceci, en coupant le plan
ras bord avant davoir charg les donnes des murs ( pour rappel, les donnes sont
charges en AJAX). Lalgorithme de srialisation est en ralit le problme : pour
srialiser la liste des compteurs avec certaines donnes de cls trangres il prend 11
requtes, alors quil pourrait videmment le faire en une. Ceci est en fait d ce que
Django appelle les liens ManyToMany, soit les relations o plusieurs objets dun
mme type peuvent tre lis plusieurs autres objets dun second type, ce qui en
pratique ncessite de crer une 3me table liant un objet de la classe 1 la classe 2.
Django ne permet pas de faire une requte qui ira rechercher les donnes de la 1re
et de la deuxime classe en mme temps. Ceci dit, il nest pas possible dassurer avec
certitude que faire ces requtes en une serait forcment plus rapide, la taille du joint
unique pouvant tre trs consquente.
Voici la liste du temps dexcution des requtes de rcupration des donnes du
plan, excutes pour rpondre aux appels AJAX :
Liste des murs : 1 requte, 0.80ms
Liste des fentres : 1requte, 0.76ms
Liste des appareils : 25 requtes, 8ms
Le nombre de requtes pour les appareils dpend du nombre dobjets de la maison
rcuprer car il y a une relation ManyToMany.
La rcupration des donnes des compteurs pour les 24 dernires heures prend 2
requtes (une pour les donnes et une pour retrouver lID du Meter en fonction de
6.8. PERFORMANCES
77
6.8.2
Pour les essais de performances, jai dabord analys la taille des fichiers tlchargs
pour les principales pages. Jai fait trois analyses : le nombre total doctets transfrs
sans lutilisation de cache, le nombre total doctets transfrs lors de la premire visite
et lors de la deuxime visite (et les suivantes). Le rsultat est visible sur la figure
6.28. Les navigateurs possdent tous des caches, et la majorit du contenu ici chang
avec lutilisateur est statique : les fichiers JavaScript, le CSS, et les nombreuses
images.Ds lors, linterface tire parti au maximum du cache de ces navigateurs, pour
rduire le temps de rcupration de ces fichiers et donc le temps de rendu (nous le
verrons plus tard). Le nombre doctets tlchargs lors de la premire visite dune
page nest pas non plus gal au nombre total doctets transfrs sans aucun cache.
En effet, dune part, la librairie jQuery est incluse depuis les serveurs de google, or
nous lavons vu, le taux de pntration de jQuery atteint 30% des sites webs les plus
populaires, et beaucoup de sites utilisent la mme technique assurant que jQuery
soit dj dans le cache de lutilisateur. De plus, toutes les librairies JavaScript ne
sont pas inclues sur toutes les pages. Le systme de dessin du plan par exemple est
uniquement inclu sur les pages consommation, alertes et les 4 dernires tapes de
modlisation. Ainsi, lorsque lutilisateur arrive sur la page daccueil, il ne charge en
fait que les librairies communes toutes les pages. Lutilisateur ne tlchargera jamais
plus de 300Ko par page. Comme il passe toujours dabord par laccueil, il naura
jamais la situation sans cache de la page consommation qui demande plus de 680Ko.
78
CHAPITRE 6. RSULTATS
6.8. PERFORMANCES
79
Figure 6.29 Temps de rendu pour diverses pages - Moyennes de 5 rendus - Chrome
27, IE 10, Firefox 13
Smartphone haut de gamme mais datant de 2 ans et demie (la version actuelle est
le S4), et un HTC Desire X, smartphone rcent mais de bas de gamme (bien que
lun des meilleurs de sa gamme). En plus des pages du site, jai compar cette fois le
temps de chargement des pages avec le temps de chargement de la version mobile du
site du journal le Soir. Les rsultats sont visibles sur la figure 6.30. On voit ici que
les Smartphones sont plus impacts par la lourdeur du traitement JavaScript, mais
restent dans une moyenne acceptable. De plus, laffichage partiel prend ici mieux son
sens. Si la page consommation prend 7 secondes tre rendue, en ralit aprs 3,5
secondes le plan est dj affich, et la page attend simplement le chargement des
donnes du graphique. Cest important, car laisser patienter lutilisateur 7 secondes sur un cran de chargement serait par contre frustrant pour lui. Remarquons
que le HTC Desire X est lgrement plus lent que le Samsung Galaxy S2, mais ce
smartphone, quoique bas de gamme, ne sen sort pas trop mal.
80
CHAPITRE 6. RSULTATS
6.8.3
valuation quantitative
Chapitre 7
Perspectives et travail futur
Tout au long de llaboration du projet, lquipe IdP na cess dmettre de
nouvelles ides quant linterface, mais le temps est limit et nous avons d faire
des choix. Cependant, chaque groupe a veill garder une certaine modularit dans
la conception des lments qui leurs taient attribus. Le projet en son tat actuel,
bien que totalement fonctionnel, est encore une infime partie de ce quil peut devenir.
Je vais explorer dans ce chapitre diverses possibilits pour amliorer linterface et les
donnes qui lui parviennent.
7.1
Alertes
7.2
La page statistiques fera lobjet dune valuation avec le groupe IdP en septembre :
aprs deux mois denvoi de donnes avec de vrai capteurs il sera intressant de savoir
quelles seront les donnes utiles ainsi que la pertinence des graphiques.
Actuellement, aucune donne des relevs nest supprime si ce nest les doublons
81
82
discuts dans la section 4.6.1. En ralit, conserver plus de deux semaines la consommation prcise dune journe nest probablement pas ncessaire. Lutilisateur
sera intress par le dtail de sa consommation dans un pass proche, mais les
donnes agrges par jour sont suffisantes sur le long terme, car ce qui importe pour
lutilisateur, cest de pouvoir comparer la consommation par mois et par an, afin de
voir si ses efforts en matire de consommation ont port leurs fruits.
7.3
Je prvoyais lajout dune image pour chaque appareil placer dans la maison.
Cependant, cela reprsentait un travail assez consquent, tant donn quil y a plus de
35 appareils actuellement. Je me suis dbrouill pour crer dj une cinquantaine de
symboles pour linterface, et je nai pas eu le temps de dessiner chacun des appareils
pour remplacer la vue actuelle constitue d un simple carr portant le nom de
lappareil et le symbole des nergies quil utilise.
7.4
7.5
Modle nergtique
Le projet tel que dfini en dbut danne et prsent au groupe Ingnieur de Projet
prvoyait lintgration dun modle nergtique, pour placer lutilisateur entre deux
scnarii simuls : lun au niveau de la consommation optimale, un but atteindre
pour lutilisateur, et lautre au niveau de consommation minimale. Il devait galement
permettre une dsagrgation des mesures globales en secteurs de consommation, et
la simulation de la consommation en amliorant certains paramtres de la maison
(comme lisolation dun mur). Cependant, le modle devait tre conu par des acteurs
en dehors de lquipe IdP et na pas pu mtre fournis temps. Il est donc prsent
83
ici et pourrait faire lobjet dune intgration future linterface, notamment par
rapport au concours Ingnieur de Projet qui se termine en Novembre.
Cet abandon du modle explique pourquoi linterface possde toute une partie de
modlisation qui na actuellement dautre vocation que lesthtique de laffichage des
rsultats sur un plan. En ralit le modle a besoin dun utilisateur qui lui fournisse
des donnes relatives aux types dappareils prsents dans la maison, type de chaudire,
mais aussi des informations sur la disposition, lpaisseur des murs, des fentres, etc.
Lutilisateur doit pouvoir choisir avec quelle prcision il fournit ces donnes. Plus le
modle reoit de donnes, plus ses estimations seront prcises. Cest pour cela que
linterface prsente un mode basique et avanc. Lutilisateur basique est videmment
celui qui a le moins de donnes rentrer et qui surtout,ncessite le moins de connaissances techniques, par exemple celles concernant lisolation des murs de sa maison.
Le but principal du modle tait de dfinir , avec les informations acquises par
les composants prsents prcdemment, une srie de statistiques :
84
7.6
Nous lavons vu dans ltude de march, la spcificit de notre systme est son
adaptation non-intrusive aux divers compteurs dj en place dans la maison. Cependant, certaines maisons sont dj quipes en matire de domotique. Ces systmes
sont extrmement chers et je nai pu men procurer. Cependant les diffrents modes
de compteurs et la simplicit du protocole permettent dintgrer facilement diverses
couches de compatibilit avec des systmes existants. Par exemple, la smartbox
dlectrabel [49] dispose dune interface web. Il ne serait pas trs compliqu de
crer un script la manire des compteurs virtuels (Voir chapitre 5) pour parser
le code de la page HTML avec des expressions rgulires et envoyer les donnes de
consommation linterface.
De faon gnrale, le chapitre 5 a dj prsent de nombreuses possibilits
quant lextraction dinformations dautres systmes pour en tirer des donnes de
consommation envoyer aux compteurs de linterface. Beaucoup dapproximations
peuvent galement tre faites via la vision par ordinateur, puisque la plupart des
appareils disposent de LED pour indiquer leur tat et que leur consommation est
souvent fixe en fonction de celui-ci.
7.7
85
86
Chapitre 8
Conclusion
Lobjectif de ce travail tait dimplmenter une interface de prsentation des
statistiques de consommation dune maison. Loriginalit rside dans sa capacit
configurer lenveloppe nergtique de la maison, sa grande flexibilit quant aux types
de compteurs, et le support de multiples entres. Paralllement, linterface devait
respecter trois axiomes :
Accessibilit : une interface facile dutilisation et intuitive mais nanmoins
complte
Flexibilit : au niveau de la maison, des objets, des capteurs, ou encore des
nergies
Performance : linterface doit tre fluide, et utilisable sur les smartphones
Linterface a t pense entirement pour une facilit daccs pour tous les utilisateurs. Le systme de plan est simple mais permet la dfinition correcte de lenveloppe
de la maison. Le placement des appareils est aussi souple et lutilisation du glisserdplac pour les compteurs permet une approche intuitive. Les nombreux symboles
procurent une vision claire pour lutilisateur de bureau, et permettent dutiliser le
doigt pour slectionner un lment sur un smartphone.
Linterface a galement t dmontre comme assez modulable : lutilisateur peut
ajouter de nouvelles nergies, de nouveaux appareils et de nouveaux compteurs. Les
nouveaux compteurs peuvent mme tre envisags pour mesurer une production. Les
diffrents modes denvoi de donnes permettent daccepter plusieurs mthodes de
consommation : autant des donnes envoyes par des compteurs de consommation
totale que des compteurs de consommation instantane. Linterface peut galement
tre utilise comme systme de contrle des appareils de lutilisateur.
La structure interne de linterface a galement t pense modulable, autant du
ct serveur grce Django et ses prceptes bien penss utilisant le paradigme MVC,
mais aussi du ct client o le code JavaScript est en gnral divis en modules
remplaables et modifiables. Jai aussi veill coder en utilisant des objets dans les
limites du JavaScript, ou du moins des mcanismes rutilisables en proscrivant le
87
88
CHAPITRE 8. CONCLUSION
89
consommation, ou si, simplement jobserve mon rflexe lorsque je peux constater,
grce aux compteurs virtuels placs sur mes ordinateurs, ce quil men cote concrtement. Si, par exemple, il est vident que mon ordinateur portable consomme
moins que mon ordinateur de bureau, la vision de la consommation en euro force le
passage laction. Je suis intimement convaincu que cet exemple est extrapolable
la consommation de chacun des appareils mnagers, ainsi qu la consommation
gnrale de la maison, permettant ainsi datteindre les objectifs de rductions de
consommation ncessaires aux respects des accords de Kyoto, et plus largement,
ncessaire pour que lhumanit puisse perdurer dans un monde aux ressources limites.
90
CHAPITRE 8. CONCLUSION
Bibliographie
[1] 45% of the popular websites use a javascript framework. url : http : / /
elie.im/blog/web/45- of- the- popular- websites- use- a- javascriptframework/#.UaWrPOddU9t.
[2] Acqualys. Tableau comparatif PCI des nergies. url : http://www.acqualys.
fr/page/tableau-comparatif-pouvoir-calorique-inferieur-pci-desenergies.
[3] Axeiya. Comptage de lnergie : kWh, kWh PCI, kWh PCS. url : http:
//bes.axeiya.com/index.php?id=31.
[4] Blender 2.6, Python Manual. url : http://wiki.blender.org/index.php/
Doc:2.6/Manual/Extensions/Python.
[5] Megan Bray. Review of Computer Energy Consumption and Potential Savings.
url : http://dssw.co.uk/research/computer_energy_consumption.html.
[6] P. Brimblecombe. The Big Smoke (Routledge Revivals) : A History of Air
Pollution in London Since Medieval Times. Routledge revivals. Taylor & Francis
Group, 2011. isbn : 9780415671835.
[7] caniuse.com. url : http://caniuse.com/.
[8] Canvas clearRect failing to clear. url : https : / / code . google . com / p /
android/issues/detail?id=39247.
[9] Canvas line drawing on Android failure. url : https://code.google.com/p/
chromium/issues/detail?id=231082.
[10] CPU Burn. url : http://manpages.ubuntu.com/manpages/hardy/man1/
cpuburn.1.html.
[11] Cron. url : http://www.gnu.org/software/mcron/.
[12] IDD - Institut pour un Dveloppement Durable. 30 annes d volutions
des revenus et des prix. url : http://users.skynet.be/idd/documents/
indicateurs/indic05-1.pdf.
[13] Django. url : http://www.djangoproject.com/.
[14] Django Debug Toolbar. url : https://github.com/django-debug-toolbar/
django-debug-toolbar.
[15] Django Extension. url : https://github.com/django-extensions/djangoextensions.
91
92
BIBLIOGRAPHIE
BIBLIOGRAPHIE
93
94
BIBLIOGRAPHIE
Catgorie
Variable
Valeur commune
ge
Date de construction
Anne
Catgorie de maison
Type
Maison ou Appartement
Nombre de facade
2F - 3F - 4F
Situation
Gomtrie
Enveloppe
Standard
Avanc
Demande
Demande
Demande
Orientation du dessin
Toiture
Oui/Non
Fondations
1, 2 ou 3
Faades extrieures (l * h)
N - NE - E - SE - S - SO - O - NO
Composition
Isol ou non ?
Fentre - Surface
Fentre - Type
isol ou non ?
isol ou non ?
Zonage
Dessin chelle
Emission de chaleur
Type / tage
Controle / metteur
Non demand
Non demand
Production de chaleur
Programmation horaire
h/jour
Central ou dcentralis
Vecteur nergtique
gaz/mazout/butane
ge de l'installation
date d'installation
aucun
thermostat
sonde extrieure
Production d'ECS
central ou dcentralis
vecteur nergtique
Occupation
Nbre d'adultes
Nombre
ouvrier
employ
indpendant
sans emploi (par adulte)
Nombre
Nombre
Eclairage
Electromnager
Rfrigrateur
0,1,2,
0,1,2,
Conglateur
0,1,2,
Lave vaisselle
0,1,2,
Four lectrique
0,1,2,
0,1,2,
Cuisinire gaz
0,1,2,
Four micro-onde
0,1,2,
Bouilloire lectrique
0,1,2,
Machine lessiver
0,1,2,
Schoir
0,1,2,
Ordinateur de bureau
0,1,2,
Ordinateur portable
0,1,2,
Imprimante
0,1,2,
Tlvision CRT
0,1,2,
Tlvision LCD
0,1,2,
Tlvision Plasma
0,1,2,
Lecteur DVD
0,1,2,
Dcodeur numrique
0,1,2,
Chane HiFi
0,1,2,
Modem/Routeur internet
0,1,2,