Arduino - Wasserleck-E-Mail-Benachrichtigung

In diesem Leitfaden lernen wir, wie man Arduino verwendet, um Wasserleckagen zu erkennen und Benachrichtigungen per E-Mail sofort zu senden. Wir gehen darauf ein, wie man den Sensor einrichtet, zeigen Code-Beispiele und erklären, wie man sich mit E-Mail-Diensten verbindet. Dies hilft dabei, Ihr Zuhause oder Ihr Büro vor Wasserschäden zu schützen. Das ist ideal für Menschen, die gerne Do-it-yourself-Projekte durchführen und ihre Systeme zur Erkennung von Wasserlecks verbessern möchten.

Arduino Wasserleck-E-Mail-Benachrichtigung

Über Wassersensor und Gmail

Wir bieten detaillierte Tutorials zu Wassersensoren und Gmail an. Jede Anleitung enthält ausführliche Details und leicht verständliche Schritte zum Hardwareaufbau, dazu, wie es funktioniert, und wie man Arduino anschließt und programmiert. Um mehr zu erfahren, besuchen Sie diese Links:

Schaltplan zwischen Wassersensor und Arduino

Arduino-Wassersensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino-Code

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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(); } }

Schnelle Schritte

  • Wenn Sie Arduino Uno R4 zum ersten Mal verwenden, sehen Sie wie man die Umgebung für Arduino Uno R4 in der Arduino IDE einrichtet.
  • Platzieren Sie den Wassersensor dort, wo er ein Wasserleck erkennen könnte.
  • Schließen Sie den Wassersensor an das Arduino-Board an.
  • Schließen Sie das Arduino-Board über ein Micro-USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige Arduino-Board (Arduino Uno R4 WiFi) und den COM-Port aus.
  • Öffnen Sie den Bibliotheksverwalter, indem Sie auf das Symbol Bibliotheksverwalter in der linken Navigationsleiste der Arduino IDE klicken.
  • Suchen Sie nach ESP Mail Client und finden Sie den ESP Mail Client, der von Mobizt entwickelt wurde.
  • Klicken Sie auf die Schaltfläche Installieren, um die ESP Mail Client-Bibliothek hinzuzufügen.
Arduino ESP Mail Client-Bibliothek
  • Kopiere den bereitgestellten Code und öffne ihn in der Arduino IDE.
  • Aktualisiere deine WiFi-Daten (SSID und Passwort) im Code, indem du WIFI_SSID und WIFI_PASSWORD änderst.
  • Ersetze die E-Mail-Adresse des Absenders und das Passwort durch deine eigenen, indem du SENDER_EMAIL und SENDER_PASSWORD änderst.
  • Aktualisiere die E-Mail-Adresse des Empfängers im Code, indem du RECIPIENT_EMAIL änderst. Dies kann dieselbe sein wie die E-Mail des Absenders.

※ Notiz:

  • Die E-Mail-Adresse des Absenders muss ein Gmail-Konto sein.
  • Das App-Passwort des Absenders ist das Passwort, das im vorherigen Schritt erhalten wurde.
  • Die E-Mail-Adresse des Empfängers kann jede Art von E-Mail-Adresse sein.
  • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code auf den Arduino hochzuladen.
  • Öffnen Sie den seriellen Monitor.
  • Gießen Sie Wasser auf den Wassersensor.
  • Schauen Sie sich das Ergebnis im seriellen Monitor an.
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  
  • Überprüfen Sie Ihren E-Mail-Posteingang. Sie erhalten eine E-Mail wie die folgende:
Arduino-Wassersensor-E-Mail

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!