smart-energy-meter-chart.png

Après le Karotz qui parle quand vous dépassez un certain seuil de consommation d'énergie, voici une solution simple pour produire soit même des graphes de consommation électrique.

La première étape est d'installer sur votre tableau électrique un Z-Wave Smart Energy Meter de chez Aeon. Celui-ci est proposé à un tarif avoisinant les 100€ et diffuse des rapports de consommation en Z-Wave à intervalle régulier.

La seconde étape consiste à capturer les paquets Z-Wave et à les enregistrer dans une base NoSQL. Pour cela vous pouvez utiliser mon module "ZwaveBus" disponible sur Gitbub, celui-ci fonctionne parfaitement sur un petit Raspberry équipé d'un dongle Z-wave.

aeon labs compteur de consommation electrique

Il vous suffira ensuite de ne laisser que le listener "power.js" qui prend en charge les messages Z-Wave provenant du Smart Energy Meter. Il faudra au préalable vous assurer du "nodeid" de votre Smart Meter, vous pourrez le découvrir au premier lancement du module "ZwaveBus".

Enfin, vous pouvez garder que les quelques lignes de code suivantes si vous n'avez pas de Karotz à faire parler ou clignoter.

/**
 * We listen for a COMMAND_CLASS_METER event.
 * This event is sent by the Aeon HEM2 power energy meter.
 */
bus.on(COMMAND_CLASS_METER, function(nodeid, value){

	 if (nodeid == 7 && value['label'] == "Power"){
		
		// Saving the event into the mongoDB
		new Event({ nodeid: nodeid,
		    comclass: comclass,
		    type: value['type'],
		    label: value['label'],
		    value: value['value']}).save();
		
	} 
});

Une fois l'application NodeJS démarrée (node app.js) et la base mongoDB démarrée, le module expose un Webservice REST simplement accessible au travers de l'URL suivante :

http://ip-de-votre-machine:9094/data/Power?date=2014-12-30

Le paramètre "Power" correspond aux types de rapports qui sont sauvegardés dans la base MongoDB et qui sont nécessaires pour la production de graphe.

Pour fabriquer un graphe de votre consommation d'électricité journalière, il suffira de créer la page Web suivante :

<html>
<head>
 <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
</head>
<body>

<div id="powerChart" style="height: 900px; width: 100%"></div>

<script>

console.log("Appel du service JSON");

$.ajax({
  dataType: "json",
  url: "http://ip-de-votre-machine:9094/data/Power",
  success: drawChart
});

function drawChart(data){
	console.log("Affichage du résultat");

	new Morris.Area({
	  // ID of the element in which to draw the chart.
	  element: 'powerChart',
	  // Chart data records -- each entry in this array corresponds to a point on
	  // the chart.
	  data: data,
	  // The name of the data record attribute that contains x-values.
	  xkey: 'date',
	  // A list of names of data record attributes that contain y-values.
	  ykeys: ['value'],
	  // Labels for the ykeys -- will be displayed when you hover over the
	  // chart.
	  labels: ['value'],
	  // Filleds area opacity.
	  fillOpacity: 0.2,
	  // Smooth lines.
	  smooth : true,
	  // Point size.
	  pointSize : 1,
	  // Max value
	  ymax : 12000,
	  // Label suffix all y-labels.
	  postUnits: "W",
	  hideHover : true,
	});
}
</script>

</body>
</html>

Cette page appelle le Webservice exposés par l'application "ZwaveBus" permettant de récupérer la liste des rapports stockés au sein de la base MongoDB et les transmet au script "morris.js" qui se charge de produire un graphique dynamique.

Vous voilà outillé pour analyser vos consommations électriques dans le détail et identifier quels sont les appareils qui surconsomment de l'énergie. Vous découvrirez peut-être que vous n'avez pas le bon abonnement EDF et qu'un abonnement avec une puissance plus faible pourrait être suffisant pour vos besoins.

1. Le , 09:38 par ZeGuigui
dbdfe79c104b594fcde2bfd1379e6add

Bonne idée, je creuserai à l'occasion. Je graphe déjà les données que me donne mon onduleur sur la "qualité" de ma liaison EDF donc la conso ça sera un bon complément.

Par contre je suis plus "old school" : base de données RRD et polling via Cacti qui se charge aussi de faire les graphiques. L'avantage c'est qu'on peut grapher la moyenne, les pics de consommation, etc. sur un intervalle donné. Ton script ne doit pas être trop compliqué à adapter pour ce type d'architecture !

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.