PM2M-2016-Presence/Suivi: Difference between revisions
(17 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
=Contexte= |
=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= |
=Objectif du projet= |
||
Line 32: | Line 32: | ||
=Plan de développement= |
=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 : |
|||
# Installation de Emoncms; |
|||
# Configuration du cms et de l'esp8266. |
|||
[[File:flux.png]] |
|||
Ci-dessous le code source déployé sur le microcontroleur esp8266 : |
|||
<source lang="c" line start=1> |
|||
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino |
|||
//needed for library |
|||
#include <DNSServer.h> |
|||
#include <ESP8266WebServer.h> |
|||
#include <stdlib.h> |
|||
#include "EmonLib.h" // Include Emon Library |
|||
EnergyMonitor emon1; // Create an instance |
|||
const int ANALOG_PIN = A0; // The only analog pin on the Thing |
|||
const char host[] = "ec2-52-29-210-27.eu-central-1.compute.amazonaws.com"; |
|||
const int port = 80; |
|||
const char nodename[] = "sct013"; |
|||
const char apiKey[] = "&apikey=7af3b1772fa1b624ef73925ba117d562"; |
|||
//const char* ssid = "Livebox-3294"; |
|||
//const char* password = "E9D45C9A35245222FDE9DCD973"; |
|||
const char* ssid = "Xperia Z1_b5d9"; |
|||
const char* password = "dadoudidou"; |
|||
// Use WiFiClient class to create TCP connections |
|||
WiFiClient client; |
|||
void setup() |
|||
{ |
|||
Serial.begin(115200); |
|||
delay(10); |
|||
// We start by connecting to a WiFi network |
|||
Serial.println(); |
|||
Serial.println(); |
|||
Serial.print("Connecting to "); |
|||
Serial.println(ssid); |
|||
WiFi.begin(ssid, password); |
|||
while (WiFi.status() != WL_CONNECTED) { |
|||
delay(500); |
|||
Serial.print("."); |
|||
} |
|||
Serial.println(""); |
|||
Serial.println("WiFi connected"); |
|||
Serial.println("IP address: "); |
|||
Serial.println(WiFi.localIP()); |
|||
emon1.current(A0, 29.1); // Current: input pin, calibration. |
|||
} |
|||
void loop() |
|||
{ |
|||
Serial.print("waiting a delay\n"); |
|||
delay(5000); |
|||
Serial.print("connecting to "); |
|||
Serial.println(host); |
|||
double Irms = emon1.calcIrms(1480); // Calculate Irms only |
|||
Serial.println("begin loop"); |
|||
const int httpPort = 80; |
|||
if (!client.connect(host, httpPort)) { |
|||
Serial.println("connection failed"); |
|||
return; |
|||
} |
|||
// This will send the request to the server |
|||
const String url = "/input/post.json?node=" + String(nodename) + "&json={power:" + String(Irms * 1.414 * 235 / 10) + "}" + String(apiKey); |
|||
client.print("GET " + url + " HTTP/1.1\r\n" + |
|||
"Host:" + host + "\r\n" + |
|||
"Connection: close\r\n\r\n"); |
|||
Serial.print("Requesting URL: "); |
|||
Serial.println(url); |
|||
delay(10); |
|||
// Read all the lines of the reply from server and print them to Serial |
|||
while (client.available()) { |
|||
String line = client.readStringUntil('\r'); |
|||
Serial.print(line); |
|||
} |
|||
Serial.println(); |
|||
Serial.println("closing connection"); |
|||
} |
|||
</source> |
|||
==Installation de l'outil open-source Emoncms== |
|||
==Configuration du cms et de l'esp8266== |
|||
==Mise en place de l'infrastructure== |
==Mise en place de l'infrastructure== |
||
[[File:arch.png|1024px]] |
|||
==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 : |
|||
[[File:node-red.png|1024px]] |
|||
=Expérimentations et Résultats= |
=Expérimentations et Résultats= |
||
Voici quelques captures d'écran de l'outil emoncms pour la visualisation des consommations : |
|||
<gallery> |
|||
File:screen1.png|Graphe affichant la consomamtion globale |
|||
File:screen2.png|La liste des "feeds" |
|||
</gallery> |
|||
=Photos et Vidéo= |
=Photos et Vidéo= |
||
Voici quelques captures d'écran du matériel utilisé : |
|||
<gallery> |
|||
File:screen3.jpg |
|||
File:screen4.jpg |
|||
</gallery> |
Latest revision as of 10:58, 12 April 2016
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 :
Ci-dessous le code source déployé sur le microcontroleur esp8266 :
#include <ESP8266WiFi.h> //https://github.com/esp8266/Arduino
//needed for library
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <stdlib.h>
#include "EmonLib.h" // Include Emon Library
EnergyMonitor emon1; // Create an instance
const int ANALOG_PIN = A0; // The only analog pin on the Thing
const char host[] = "ec2-52-29-210-27.eu-central-1.compute.amazonaws.com";
const int port = 80;
const char nodename[] = "sct013";
const char apiKey[] = "&apikey=7af3b1772fa1b624ef73925ba117d562";
//const char* ssid = "Livebox-3294";
//const char* password = "E9D45C9A35245222FDE9DCD973";
const char* ssid = "Xperia Z1_b5d9";
const char* password = "dadoudidou";
// Use WiFiClient class to create TCP connections
WiFiClient client;
void setup()
{
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
emon1.current(A0, 29.1); // Current: input pin, calibration.
}
void loop()
{
Serial.print("waiting a delay\n");
delay(5000);
Serial.print("connecting to ");
Serial.println(host);
double Irms = emon1.calcIrms(1480); // Calculate Irms only
Serial.println("begin loop");
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// This will send the request to the server
const String url = "/input/post.json?node=" + String(nodename) + "&json={power:" + String(Irms * 1.414 * 235 / 10) + "}" + String(apiKey);
client.print("GET " + url + " HTTP/1.1\r\n" +
"Host:" + host + "\r\n" +
"Connection: close\r\n\r\n");
Serial.print("Requesting URL: ");
Serial.println(url);
delay(10);
// Read all the lines of the reply from server and print them to Serial
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
Installation de l'outil open-source Emoncms
Configuration du cms et de l'esp8266
Mise en place de l'infrastructure
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 :
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é :