ESP8266 - Notification par email de fuite d'eau

Ce guide vous apprendra à utiliser un ESP8266 pour détecter les fuites d'eau et envoyer des alertes par e-mail immédiatement. Nous aborderons la configuration du capteur, fournirons des exemples de code et décrirons comment se connecter avec des services de messagerie. Cela peut protéger votre maison ou votre bureau des dégâts d'eau. C'est idéal pour ceux qui aiment les projets de bricolage et souhaitent améliorer leurs systèmes de détection de fuites d'eau.

Notification par e-mail de fuite d'eau ESP8266 NodeMCU

Préparation du matériel

1×ESP8266 NodeMCU
1×USB Cable Type-C
1×Water Leak Detector
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Expansion Board for ESP8266
1×(Recommended) Power Splitter For ESP8266 Type-C

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur d'eau et de Gmail

Nous fournissons des guides détaillés sur l'utilisation des capteurs d'eau et de Gmail. Chaque guide comprend des instructions complètes et des étapes simples pour configurer le matériel, comprendre son fonctionnement et connecter et programmer l'ESP8266. Pour plus d'informations, veuillez visiter ces liens.

Schéma de câblage entre le capteur d'eau et l'ESP8266

Diagramme de câblage du capteur d'eau ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans Brochage ESP8266. et Comment alimenter l'ESP8266..

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp8266/esp8266-water-leak-email-notification */ #include <ESP8266WiFi.h> #include <ESP_Mail_Client.h> #define WIFI_SSID "YOUR_WIFI_SSID" // CHANGE IT #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" // CHANGE IT // the sender email credentials #define SENDER_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SENDER_PASSWORD "xxxx xxxx xxxx xxxx" // CHANGE IT to your Google App password #define RECIPIENT_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SMTP_HOST "smtp.gmail.com" #define SMTP_PORT 587 #define WATER_SENSOR_PIN D7 // ESP8266 pin D7 connected to water sensor's pin int water_state; // current state of water sensor int prev_water_state; // previous state of water sensor SMTPSession smtp; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to Wi-Fi"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(300); } Serial.println(); Serial.print("Connected with IP: "); Serial.println(WiFi.localIP()); Serial.println(); pinMode(WATER_SENSOR_PIN, INPUT_PULLUP); // set ESP8266 pin to input pull-up mode water_state = digitalRead(WATER_SENSOR_PIN); // read state } void loop() { prev_water_state = water_state; // save the last state water_state = digitalRead(WATER_SENSOR_PIN); // read new state if (prev_water_state == HIGH && water_state == LOW) { Serial.println("Water leakage is detected!"); String subject = "Email Notification from ESP8266"; String textMsg = "This is an email sent from ESP8266.\n"; textMsg += "Water leakage is detected"; gmail_send(subject, textMsg); } } void gmail_send(String subject, String textMsg) { // set the network reconnection option MailClient.networkReconnect(true); smtp.debug(1); smtp.callback(smtpCallback); Session_Config config; // set the session config config.server.host_name = SMTP_HOST; config.server.port = SMTP_PORT; config.login.email = SENDER_EMAIL; config.login.password = SENDER_PASSWORD; config.login.user_domain = F("127.0.0.1"); config.time.ntp_server = F("pool.ntp.org,time.nist.gov"); config.time.gmt_offset = 3; config.time.day_light_offset = 0; // declare the message class SMTP_Message message; // set the message headers message.sender.name = F("ESP8266"); message.sender.email = SENDER_EMAIL; message.subject = subject; message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL); message.text.content = textMsg; message.text.transfer_encoding = "base64"; message.text.charSet = F("utf-8"); message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low; // set the custom message header message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>")); // connect to the server if (!smtp.connect(&config)) { Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); return; } if (!smtp.isLoggedIn()) { Serial.println("Not yet logged in."); } else { if (smtp.isAuthenticated()) Serial.println("Successfully logged in."); else Serial.println("Connected with no Auth."); } // start sending Email and close the session if (!MailClient.sendMail(&smtp, &message)) Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); } // callback function to get the Email sending status void smtpCallback(SMTP_Status status) { // print the current status Serial.println(status.info()); // print the sending result if (status.success()) { Serial.println("----------------"); Serial.printf("Email sent success: %d\n", status.completedCount()); Serial.printf("Email sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.printf("Message No: %d\n", i + 1); Serial.printf("Status: %s\n", result.completed ? "success" : "failed"); Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); Serial.printf("Recipient: %s\n", result.recipients.c_str()); Serial.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

Étapes rapides

Pour commencer avec l'ESP8266 sur l'Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel Installation du logiciel ESP8266. si c'est votre première utilisation de l'ESP8266.
  • Connectez les composants comme indiqué dans le schéma.
  • Placez le capteur d'eau à un endroit où il peut détecter les fuites.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez l'IDE Arduino sur votre ordinateur.
  • Choisissez la carte ESP8266 correcte, telle que (par exemple NodeMCU 1.0 (ESP-12E Module)), et son port COM respectif.
  • Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de l'IDE Arduino.
  • Recherchez ESP Mail Client et trouvez la bibliothèque par Mobizt.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Bibliothèque client de messagerie ESP8266 NodeMCU ESP
  • Copiez le code fourni et ouvrez-le avec Arduino IDE.
  • Entrez vos informations WiFi, y compris le nom du réseau (SSID) et le mot de passe, en modifiant WIFI_SSID et WIFI_PASSWORD.
  • Remplacez les détails de l'expéditeur de l'e-mail par les vôtres en modifiant SENDER_EMAIL et SENDER_PASSWORD.
  • Indiquez l'adresse e-mail du destinataire dans le code en mettant à jour RECIPIENT_EMAIL. Cela peut être la même adresse e-mail que celle de l'expéditeur.

※ Note:

  • L'expéditeur doit utiliser un compte Gmail.
  • Le mot de passe pour l'expéditeur doit être le mot de passe d'application que vous avez obtenu auparavant.
  • Tout type d'email peut être utilisé pour l'email du destinataire.
  • Appuyez sur le bouton Télécharger dans Arduino IDE pour envoyer le code à l'ESP8266.
  • Ouvrez le Moniteur Série.
  • Versez de l'eau sur le capteur d'eau.
  • Vérifiez le résultat sur le Moniteur Série.
COM6
Send
Water leakage is detected #### Email sent successfully > C: Email sent successfully ---------------- Message sent success: 1 Message sent failed: 0 ---------------- Message No: 1 Status: success Date/Time: May 27, 2024 04:42:50 Recipient: xxxxxx@gmail.com Subject: Email Notification from ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez votre courriel. Vous recevrez un courriel similaire à celui-ci :
Capteur d'eau ESP8266 NodeMCU email

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!