Arduino - Waterlek Emailmelding

In deze handleiding leren we hoe u met Arduino waterlekken kunt detecteren en onmiddellijk meldingen per e-mail kunt ontvangen. We nemen stap voor stap door hoe u de sensor aansluit, tonen voorbeelden van de code en leggen uit hoe u verbinding maakt met e-maildiensten. Dit helpt uw woning of kantoor te beschermen tegen waterschade. Perfect voor mensen die van doe-het-zelf-projecten houden en hun systemen willen verbeteren voor waterlekkagedetectie.

Arduino Waterlek Emailmelding

Over de Watersensor en Gmail

Wij bieden uitgebreide tutorials over Watersensoren en Gmail. Elke handleiding geeft gedetailleerde informatie en eenvoudige stappen over de hardware-installatie, werking en hoe u de Arduino programmeert en verbindt. Wilt u meer weten, bezoek dan deze links:

Aansluitschema tussen Watersensor en Arduino

Arduino Watersensor Aansluitschema

This image is created using Fritzing. Click to enlarge image

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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(); } }

Snelle Stappen

  • Als u voor het eerst de Arduino Uno R4 gebruikt, lees dan hoe u de omgeving instelt voor Arduino Uno R4 in Arduino IDE.
  • Plaats de watersensor op een plek waar eventueel waterlekkage kan worden gedetecteerd.
  • Verbind de watersensor met het Arduino-bord.
  • Sluit het Arduino-bord via een micro USB-kabel aan op uw pc.
  • Open de Arduino IDE op uw pc.
  • Selecteer het juiste Arduino-bord (Arduino Uno R4 WiFi) en de juiste COM-poort.
  • Open de Library Manager door te klikken op het Library Manager-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar ESP Mail Client en kies de ESP Mail Client ontwikkeld door Mobizt.
  • Klik op de Installeren-knop om de ESP Mail Client-bibliotheek toe te voegen.
Arduino ESP Mail Client bibliotheek
  • Kopieer de meegeleverde code en open deze in de Arduino IDE.
  • Werk uw Wifi-gegevens bij in de code door WIFI_SSID en WIFI_PASSWORD aan te passen.
  • Vervang het e-mailadres en wachtwoord van de afzender door uw eigen gegevens bij SENDER_EMAIL en SENDER_PASSWORD.
  • Pas het e-mailadres van de ontvanger aan in de code via RECIPIENT_EMAIL. Dit kan hetzelfde zijn als het e-mailadres van de afzender.

※ Notiz:

  • Het e-mailadres van de afzender moet een Gmail-account zijn.
  • Het wachtwoord van de afzender is het App-wachtwoord dat u in een eerdere stap heeft aangemaakt.
  • Het e-mailadres van de ontvanger kan elk type e-mail zijn.
  • Klik op de Upload-knop in Arduino IDE om de code naar de Arduino te uploaden.
  • Open de Seriële Monitor.
  • Giet water op de watersensor.
  • Kijk naar het resultaat in de Seriële Monitor.
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  
  • Controleer uw e-mailinbox. U ontvangt een bericht zoals het onderstaande:
Arduino watersensor email

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap door het proces.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!