#include <ESP8266WiFi.
h>
#include <BlynkSimpleEsp8266.h>
// Pin pour le capteur de tension ZMPT100B
const int pinTension = A0;
// Pin pour le capteur de courant ACS712
const int pinCourant = D0;
// Variables pour les mesures
float tension;
float courant;
float puissanceActive;
float facteurPuissance;
float energieConsommee = 0;
float prixKWh = 0.069;
float totalKWh = 0;
// Variables pour la connexion WiFi
char ssid[] = "Itel S32";
char pass[] = "12345LTL";
// Configuration Blynk
char auth[] = "n9pNRAQ0hRfpIiMHS05IAt3XfR6X_8Ya";
// Objet pour le timer
Ticker timer;
// Fonction pour lire la tension
float lireTension() {
int tensionBrute = analogRead(pinTension);
float tension = map(tensionBrute, 0, 1023, 0, 250);
return tension;
// Fonction pour lire le courant
float lireCourant() {
int courantBrute = analogRead(pinCourant);
float courant = map(courantBrute, 0, 1023, -30, 30);
return courant;
// Fonction pour calculer la puissance active
float calculerPuissanceActive() {
float puissanceActive = tension * courant;
return puissanceActive;
// Fonction pour calculer l'énergie consommée
float calculerEnergieConsommee() {
energieConsommee += (puissanceActive / 1000) * (1000 / 3600); // intervalle de temps fixe à 1
seconde
return energieConsommee;
}
// Fonction pour mettre à jour les mesures et l'interface Blynk
void actualiserMesures() {
tension = lireTension();
courant = lireCourant();
puissanceActive = calculerPuissanceActive();
facteurPuissance = cos(puissanceActive / (tension * courant));
[Link](V0, tension);
[Link](V1, courant);
[Link](V2, puissanceActive);
[Link](V3, energieConsommee);
[Link](V4, facteurPuissance);
// Fonction pour commander le relais
BLYNK_WRITE(V5) {
int valeurRelais = [Link]();
if(valeurRelais == 1) {
// Mettre ici le code pour activer le relais
} else {
// Mettre ici le code pour désactiver le relais
void setup() {
// Initialize la carte ESP8266
[Link](115200);
[Link](ssid, pass);
while ([Link]() != WL_CONNECTED) {
delay(1000);
[Link](auth, ssid, pass, IPAddress(192, 168, 1, 100), 8080);
// Configure le timer pour les mesures avec une interruption toutes les 1 seconde
[Link](1, actualiserMesures);
void loop() {
// Mettre à jour le total d'énergie consommée
totalKWh = energieConsommee / 1000;
// Vérifie si l'objectif de 2 kWh est atteint
if (totalKWh >= 2) {
[Link](V5, 0);
char subject[] = "Alerte : Objectif atteint";
char message[] = "L'objectif de 2 kWh est atteint. Arrêt du système automatique.";
// envoyerEmail(emailToSend, subject, message);
// Mettre ici le code pour arrêter le système automatiquement
[Link]();
}
// Fonction pour commander le relais
BLYNK_WRITE(V5) {
int valeurRelais = [Link]();
if(valeurRelais == 1) {
digitalWrite(RELAIS_PIN, HIGH); // Activer le relais
} else {
digitalWrite(RELAIS_PIN, LOW); // Désactiver le relais
void stopSystem() {
// Mettre ici le code pour arrêter le système automatiquement
void loop() {
// Mettre à jour le total d’énergie consommée
totalKWh = energieConsommee / 1000;
// Vérifie si l’objectif de 2 kWh est atteint
if (totalKWh >= 2) {
[Link](V5, 0);
char subject[] = “Alerte : Objectif atteint”;
char message[] = “L’objectif de 2 kWh est atteint. Arrêt du système automatique.”;
// envoyerEmail(emailToSend, subject, message);
stopSystem();
[Link]();
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = “Votre_Cle_Authentification”;
char ssid[] = “Votre_Réseau_WiFi”;
char password[] = “Votre_Mot_De_Passe_WiFi”;
const int RELAIS_PIN = D1; // Broche à laquelle le relais est connecté
float energieConsommee = 0; // Variable pour stocker l’énergie consommée en Wh
WidgetLED led(V5); // Widget LED sur V5 pour indiquer l’état du relais
void setup() {
pinMode(RELAIS_PIN, OUTPUT);
digitalWrite(RELAIS_PIN, LOW); // Désactiver le relais au démarrage
[Link](9600);
[Link](auth, ssid, password);
BLYNK_WRITE(V5) {
int valeurRelais = [Link]();
if (valeurRelais == 1) {
digitalWrite(RELAIS_PIN, HIGH); // Activer le relais
[Link](); // Allumer la LED sur l’interface Blynk
} else {
digitalWrite(RELAIS_PIN, LOW); // Désactiver le relais
[Link](); // Éteindre la LED sur l’interface Blynk
void loop() {
[Link]();
// Simuler la consommation d’énergie (1 Wh toutes les 10 secondes)
energieConsommee += 1;
delay(10000);
// Mettre à jour le total d’énergie consommée
float totalKWh = energieConsommee / 1000;
[Link](”Total consommé : “ + String(totalKWh) + “ kWh”);
// Afficher le total d’énergie consommée sur Blynk
[Link](V6, totalKWh);
// Vérifier si l’objectif de 2 kWh est atteint
if (totalKWh >= 2) {
[Link](V5, 0); // Désactiver le bouton du relais sur Blynk
char subject[] = “Alerte : Objectif atteint”;
char message[] = “L’objectif de 2 kWh est atteint. Arrêt du système automatique.”;
// Envoyer un e-mail avec l’alerte
// envoyerEmail(emailToSend, subject, message);
stopSystem(); // Appeler la fonction pour arrêter le système
void stopSystem() {
// Mettre ici le code pour arrêter le système automatiquement
digitalWrite(RELAIS_PIN, LOW); // Désactiver le relais
[Link](); // Éteindre la LED sur l’interface Blynk
[Link](); // Déconnecter de Blynk