La société dans laquelle je travaille est certifiée ISO 14001, et dans ce cadre, cherche donc à respecter l'environnement. Il y a peu de temps, la direction a souhaité pouvoir suivre sa consommation électrique. Sachant que je “touchais un peu” en domotique, ils m'ont donc confié cette mission.
Ayant déjà installé un CM119 d'OWL chez moi, après vérification des caractéristiques, je suis donc parti sur la même solution. J'en profite donc pour vous en faire une petite présentation rapide sur un “gros” compteur électrique :D
Comme je l'avais déjà évoqué dans mon précédent test du CM119 d'OWL, l'émetteur est capable d'accueillir 3 pinces pour mesurer la consommation électrique sur une installation triphasée, il suffit pour cela d'acheter les pinces supplémentaires.
Quand on m'a demandé d'étudier la question, je suis tout d'abord allé voir le compteur général pour vérifier quelques points:
- la puissance du compteur: 400A
- la taille des cables: ici du 17mm², ce qui est très gros
- la possibilité de placer les pinces: ici c'était possible juste au départ du tableau
La pince fournie en standard avec le CM119 est une pince pour des cables allant jusqu'à 10mm et supportant 71A. Elle est clairement trop petite.
Heureusement, il existe un modèle de pince large acceptant des cables jusqu'à 17mm, et supportant 200A. En triphasé, 3 pinces de 200A supportent donc jusqu'à 600A, notre compteur faisant 400A, c'est bon. Par contre cette pince est également nettement plus grosse, et difficile à placer sur un compteur :/
A gauche, en bleu, se trouve le neutre, et les 3 cables suivants sont les 3 phases, sur lesquels nous avons attaché les pinces ampère métriques. L'émetteur, lui, a été fixé sur le côté du compteur.
Le but était ensuite de récupérer ces informations sur un serveur. Là nous avons beaucoup de chance, la salle serveur se trouve pile poil au dessus du local technique abritant le compteur électrique :D En connectant un adaptateur Usb CM120 sur l'un de nos serveurs, nous pouvons donc capter les informations de l'émetteur.
Même si le logiciel OWL fourni est plutot joli, notre but était de pouvoir exploiter nous même les informations. Il faut savoir que le logiciel d'OWL génère une base sqlite pour y enregistrer les données. Avec la version fournie (v1), il est impossible d'exploiter cette base, mais avec la version 2, disponible ici, la base est tout à fait exploitable.
Il suffit donc de lancer le logiciel OWL, de configurer les sondes à suivre, puis de le réduire, il apparait alors sous forme d'icone dans la barre des taches.
On installe ensuite un driver ODBC pour SQLite, comme celui ci afin de pouvoir se connecter à la base plus facilement.
J'ai ensuite créé un simple script vbs qui se charge de récupérer les données (à l'aide du pilote ODBC que nous avons installé), puis de les représenter dans un graphique (pour le moment j'utilise la librairie ChartDirector disponible ici).
Le script, pour récupérer la consommation heure par heure du jour, ainsi que pour la veille, pour enfin créer le graphique, est celui ci:
[sourcecode language=”vb”] dim objConn, strConnectionString, rsDay, sql, rdVeille, sqlveille
dim data(24)
dim data1(24)
dim labels (24)
dim i, j
i = 0
j = 0
Set objConn = CreateObject(“ADODB.Connection”)
‘On indique le chemin de la base de données
strConnectionString = “DRIVER=SQLite3 ODBC Driver;Database=C:\Documents and Settings\All Users\Application Data\2SE\be.db;”
objConn.Open strConnectionString
set rsDay = createObject(“ADODB.recordset”)
‘On récupère les données du jour
sql = “select hour, round(sum(ch1_kw_avg/1000),0) as consoheure from energy_history where addr = 4084 and year || ‘-‘ || substr(‘0000000000' || month, -2, 2) || ‘-‘ || substr(‘0000000000' || day, -2, 2) = date(‘now','localtime') group by year, month, day, hour;”
rsDay.open sql, objConn
set consoheure = rsDay(“consoheure”)
set heure = rsDay(“hour”)
do until rsDay.EOF
data(i) = consoheure
i = i+1
rsDay.moveNext
loop
set rsVeille = createObject(“ADODB.recordset”)
‘On recupere les donnes de la veille
sqlveille = “select hour, round(sum(ch1_kw_avg/1000),0) as consoheure from energy_history where addr = 4084 and year || ‘-‘ || substr(‘0000000000' || month, -2, 2) || ‘-‘ || substr(‘0000000000' || day, -2, 2) = date(‘now','localtime', ‘-1 day') group by year, month, day, hour;”
rsVeille.open sqlveille, objConn
set consoheureveille = rsVeille(“consoheure”)
set heureveille = rsVeille(“hour”)
do until rsVeille.EOF
data1(j) = consoheureveille
labels(j) = heureveille
j = j+1
rsVeille.moveNext
loop
‘Creation du graphique
Set cd = CreateObject(“ChartDirector.API”)
‘On crée un graphique de 500 x 300 pixels
Set c = cd.XYChart(500, 300)
‘La zone de graphique mesure 420 sur 200, placée à 45,45 du bord supérieur
Call c.setPlotArea(45, 45, 420, 200)
‘On crée les séries de données
Call c.addAreaLayer(data, &H8000ff00, “Aujourd'hui”, 5)
Call c.addAreaLayer(data1, &H80ff0000, “Hier”, 5)
‘On crée les étiquettes
Call c.xAxis().setLabels(labels)
‘On affiche une étiquette sur 2 pour plus de lisibilité
Call c.xAxis().setLabelStep(2)
‘On ajoute une légende
‘ background and border to Transparent.
Call c.addLegend(55, 260, False, “”, 8).setBackground(cd.Transparent)
‘On donne un titre au graphique
Call c.addTitle(“Consommation Electrique du Jour”, “timesbi.ttf”, 14).setMargin2(0, 0, 8, 8)
‘On donne un libellé aux axes
Call c.yAxis().setTitle(“Kw”)
Call c.xAxis().setTitle(“Heure”)
‘Et on enregistre le tout dans un fichier PNG
Call c.makeChart(“graph\conso_electrique.png”)
rsDay.close
rsVeille.close[/sourcecode]
Au final, on obtient un petit graphique de ce genre:
Il s'agit là d'un premier test, le design du graphique va être revu, et le script doit être un peu nettoyé, mais cela donne déjà un bon appercu de ce qu'il est possible de faire assez simplement. En mettant ce script en tache planifiée pour tourner toutes les heures, nous obtenons un graphique qui évolue tout au long de la journée. Affiché sur l'écran à l'accueil de la société, cela a pour but (nous verrons sur le long terme) de sensibiliser nos collaborateurs, et donc de réduire la consommation électrique.
Nous prévoyons d'appliquer le même principe sur l'arrivée électrique de la salle serveur, afin de mesurer la consommation de celle ci.
Comme on peut le voir, l'installation des capteurs et l'exploitation des données ont été relativement simples à mettre en oeuvre. Quant au cout, il est très abordable pour une société: un peu moins de 125e pour l'ensemble (CM119, CM120, et 3 pinces larges).
J'en profite enfin pour remercier au passage Mickael, qui tient la boutique Planète Domotique, pour nous avoir fourni le matériel rapidement, mais surtout pour son aide sur les questions techniques (compatibilité des pinces, et exploitation de la base Sqlite notamment !).