Arduino - Notification par Email de Fuite d'Eau

Dans ce guide, nous allons apprendre à utiliser Arduino pour détecter les fuites d'eau et envoyer instantanément des alertes par email. Nous aborderons la configuration du capteur, présenterons des exemples de code et expliquerons comment se connecter aux services de messagerie. Cela aidera à protéger votre maison ou votre bureau des dommages causés par l'eau. C'est idéal pour les personnes qui aiment les projets de bricolage et qui souhaitent améliorer leurs systèmes de détection de fuites d'eau.

Notification par email de fuite d'eau Arduino

Préparation du matériel

1×Arduino UNO R4 WiFi
1×USB Cable Type-C
1×Water Leak Detector
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Block Shield for Arduino UNO R4
1×(Recommended) Breadboard Shield For Arduino UNO R4
1×(Recommended) Enclosure For Arduino UNO R4
1×(Recommended) Power Splitter For Arduino UNO R4

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 proposons des tutoriels détaillés sur les capteurs d'eau et Gmail. Chaque guide fournit des renseignements complets et des étapes faciles à suivre sur l'installation du matériel, son fonctionnement, et comment connecter et programmer l'Arduino. Pour en savoir plus, visitez ces liens :

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

Schéma de câblage du capteur d'eau Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-water-leak-email-notification */ #include <WiFiS3.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 7 // Arduino 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 Arduino 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 Arduino"; String textMsg = "This is an email sent from Arduino.\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("Arduino"); 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.println("Connection error: "); Serial.print("- Status Code: "); Serial.println(smtp.statusCode()); Serial.print("- Error Code: "); Serial.println(smtp.errorCode()); Serial.print("- Reason: "); Serial.println(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.println("Connection error: "); Serial.print("- Status Code: "); Serial.println(smtp.statusCode()); Serial.print("- Error Code: "); Serial.println(smtp.errorCode()); Serial.print("- Reason: "); Serial.println(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()) { for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.print("Status: "); if (result.completed) Serial.println("success"); else Serial.println("failed"); Serial.print("Recipient: "); Serial.println(result.recipients.c_str()); Serial.print("Subject: "); Serial.println(result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'Arduino Uno R4, voir Comment démarrer avec Arduino Uno R4..
  • Placez le capteur d'eau là où il pourrait détecter une fuite d'eau.
  • Connectez le capteur d'eau à la carte Arduino.
  • Connectez la carte Arduino à votre PC à l'aide d'un câble micro USB.
  • Ouvrez l'IDE Arduino sur votre PC.
  • Sélectionnez la bonne carte Arduino (Arduino Uno R4 WiFi) et le port COM.
  • 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 ESP Mail Client développé par Mobizt.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Bibliothèque Arduino ESP Mail Client
  • Copiez le code fourni et ouvrez-le dans l'IDE Arduino.
  • Mettez à jour vos détails WiFi (SSID et mot de passe) dans le code en modifiant WIFI_SSID et WIFI_PASSWORD.
  • Remplacez l'email et le mot de passe de l'expéditeur par les vôtres en changeant SENDER_EMAIL et SENDER_PASSWORD.
  • Mettez à jour l'adresse e-mail du destinataire dans le code en modifiant RECIPIENT_EMAIL. Cela peut être le même que l’e-mail de l’expéditeur.

※ Note:

  • L'email de l'expéditeur doit être un compte Gmail.
  • Le mot de passe de l'expéditeur est le mot de passe de l'application obtenu à l'étape précédente.
  • L'email du destinataire peut être de n'importe quel type d'email.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur Arduino.
  • Ouvrez le Moniteur Série.
  • Versez de l'eau sur le capteur d'eau.
  • Regardez 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 Arduino ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez votre boîte de réception. Vous recevrez un email semblable au suivant :
Capteur d'eau Arduino e-mail

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!