PM2M-2016-Presence/Suivi

From air
Jump to: navigation, search

Capteurs de présence en WiFi

Etudiants M2PGI PM2M: Etudiants

Liens de la présentation : présentation

Dépôt Git : github

Documents : Rapport - Transparents - Flyer - Video


Contexte

Dans le context de notre projet M2M, nous avons mis en place une architecture pour la visualisation et la supervision en temps réel des consommations d'énergie dans une maison. Cette architecture permet la supervision des consommations de chaque appareil dans le but d'avoir un suivi plus détaillé. Cela permettra d'entamer des analyses et des traitements intéressants tels que classer les appareils par ordre de consommation (l'appareil le plus énergivore); alertes en cas de surconsommation; alertes en cas de consommation anormale.

Objectif du projet

L'objectif du projet est de mesurer les consommations d'énergie des appareils électriques.

Collecte de donnée

Pour atteindre notre objectif, nous avons un micro contrôller permettant de se connecter à un réseau wifi. Nous utiliserons l'outil EMoncms pour la manipulation des feeds et la visualisation en direct des consommations.

Matériel utilisé

  • ESP8266 : un microcontrôleur produit par la société chinoise Espressif intégrant un module Wifi.
  • SCT-013 Current Clamp : Capteur de courant alternatif auto-alimenté.

Technologies utilisées

  • Mosquitto
  • Node-RED : outil (serveur Web) développé par IBM consommant peu de ressources, capable de fonctionner sur un Raspberry Pi qui permet très rapidement de concevoir et déployer des scénarios d'automatisation dans une maison.
  • AWS EC2 : service Web qui fournit une capacité de calcul redimensionnable dans le cloud.
  • OpenEnergyMonitor : projet visant à développer des outils open-source de suivi énergétique pour nous aider à appréhender notre utilisation de l'énergie, nos systèmes énergétiques, et le défi de l'énergie soutenable.
  • Arduino

Plan de développement

Devellopement du code embarqué

Cette partie consiste à faire tourner du code sur le microcontroleur esp8266 dans le but de mettre en place un client http capable de connecter à un eborne wifi et d'envoyer une requête HTTP (GET) sur le cloud avec les valeurs de consommation collectés. Nous avons utilisé la librairie ESP8266WiFi pour la mise en place du client Wifi et la librairie emonlib pour la transformation automatiquement des entrées analogiques en valeurs exploitables. Ci-dessous le flux de données :


Flux.png


Ci-dessous le code source déployé sur le microcontroleur esp8266 :

 1 #include <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
 2 
 3 //needed for library
 4 #include <DNSServer.h>
 5 #include <ESP8266WebServer.h>
 6 #include <stdlib.h>
 7 #include "EmonLib.h"             // Include Emon Library
 8 
 9 EnergyMonitor emon1;             // Create an instance
10 const int ANALOG_PIN = A0; // The only analog pin on the Thing
11 
12 const char host[] = "ec2-52-29-210-27.eu-central-1.compute.amazonaws.com";
13 const int port = 80;
14 const char nodename[] = "sct013";
15 const char apiKey[] = "&apikey=7af3b1772fa1b624ef73925ba117d562";
16 
17 //const char* ssid     = "Livebox-3294";
18 //const char* password = "E9D45C9A35245222FDE9DCD973";
19 
20 const char* ssid     = "Xperia Z1_b5d9";
21 const char* password = "dadoudidou";
22 
23 // Use WiFiClient class to create TCP connections
24 WiFiClient client;
25 
26 
27 void setup()
28 {
29   Serial.begin(115200);
30   delay(10);
31   
32 
33   // We start by connecting to a WiFi network
34 
35   Serial.println();
36   Serial.println();
37   Serial.print("Connecting to ");
38   Serial.println(ssid);
39   WiFi.begin(ssid, password);
40 
41   while (WiFi.status() != WL_CONNECTED) {
42     delay(500);
43     Serial.print(".");
44   }
45 
46   Serial.println("");
47   Serial.println("WiFi connected");
48   Serial.println("IP address: ");
49   Serial.println(WiFi.localIP());
50   emon1.current(A0, 29.1);       // Current: input pin, calibration.
51 }
52 
53 void loop()
54 {
55   Serial.print("waiting a delay\n");
56   delay(5000);
57 
58   Serial.print("connecting to ");
59   Serial.println(host);
60 
61   double Irms = emon1.calcIrms(1480);  // Calculate Irms only
62   Serial.println("begin loop");
63 
64   const int httpPort = 80;
65   if (!client.connect(host, httpPort)) {
66     Serial.println("connection failed");
67     return;
68   }
69 
70   // This will send the request to the server
71   const String url =  "/input/post.json?node=" + String(nodename) + "&json={power:" + String(Irms * 1.414 * 235 / 10) + "}" + String(apiKey);
72   client.print("GET " + url + " HTTP/1.1\r\n" +
73                "Host:" + host + "\r\n" +
74                "Connection: close\r\n\r\n");
75   Serial.print("Requesting URL: ");
76   Serial.println(url);
77 
78   delay(10);
79 
80   // Read all the lines of the reply from server and print them to Serial
81   while (client.available()) {
82     String line = client.readStringUntil('\r');
83     Serial.print(line);
84   }
85 
86   Serial.println();
87   Serial.println("closing connection");
88 }

Installation de l'outil open-source Emoncms

Configuration du cms et de l'esp8266

Mise en place de l'infrastructure

Arch.png

Mise en place d'une similation avec Node-red

Dans le but d'avoir des résulats plus exploitables et des traitemtents plus intéressants, il était important de connecter (superviser) plusieurs appareils. Le seul soucis est que l'on dispose que d'un seul capteur de courant SCT-013. Pour remédier à cela, nous avons utlisé node-red pour mettre en place des consommations fictives.


Ci-dessous le scénario d'automatisation : Node-red.png

Expérimentations et Résultats

Voici quelques captures d'écran de l'outil emoncms pour la visualisation des consommations :

Photos et Vidéo

Voici quelques captures d'écran du matériel utilisé :