ESP8266 - Wasserleck-E-Mail-Benachrichtigung

Dieser Leitfaden wird dir beibringen, wie man einen ESP8266 verwendet, um Wasserlecks zu erkennen und sofort E-Mail-Benachrichtigungen zu senden. Wir werden die Einrichtung des Sensors abdecken, Code-Beispiele bereitstellen und erläutern, wie man ihn mit E-Mail-Diensten verbindet. Dies kann dein Zuhause oder dein Büro vor Wasserschäden schützen. Es ist ideal für diejenigen, die gerne DIY-Projekte durchführen und ihre Wasserleck-Erkennungssysteme verbessern möchten.

ESP8266 NodeMCU-Wasserleck-E-Mail-Benachrichtigung

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Water Leak Detector
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Wassersensor und Gmail

Wir bieten detaillierte Anleitungen zur Nutzung von Wassersensoren und Gmail. Jede Anleitung enthält vollständige Anweisungen und einfache Schritte zum Einrichten der Hardware, zum Verständnis, wie sie funktioniert, sowie zum Verbinden und Programmieren des ESP8266. Für weitere Informationen besuchen Sie bitte diese Links.

Verdrahtungsdiagramm zwischen Wassersensor und ESP8266

ESP8266 NodeMCU-Wassersensor-Schaltplan

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

ESP8266-Code

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/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(); } }

Schnelle Schritte

Um mit ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Schau dir das Tutorial zur Einrichtung der Entwicklungsumgebung für ESP8266 in der Arduino IDE an, falls dies dein erstes Mal mit ESP8266 ist.
  • Verbinde die Komponenten wie im Diagramm gezeigt.
  • Platziere den Wassersensor an einem Ort, an dem er Lecks erkennen kann.
  • Schließe das ESP8266-Board mit einem USB-Kabel an deinen Computer an.
  • Öffne die Arduino IDE auf deinem Computer.
  • Wähle das richtige ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E Module), und den entsprechenden COM-Port.
  • Öffne den Library Manager, indem du auf das Symbol Library Manager in der linken Navigationsleiste der Arduino IDE klickst.
  • Suche nach ESP Mail Client und finde die Bibliothek von Mobizt.
  • Klicke auf die Install-Schaltfläche, um die ESP Mail Client-Bibliothek hinzuzufügen.
ESP8266 NodeMCU ESP Mail Client-Bibliothek
  • Kopieren Sie den bereitgestellten Code und öffnen Sie ihn mit der Arduino IDE.
  • Geben Sie Ihre WiFi-Informationen einschließlich Netzwerkname (SSID) und Passwort ein, indem Sie WIFI_SSNID und WIFI_PASSWORD ändern.
  • Ändern Sie die Absender-E-Mail-Daten entsprechend Ihrer Daten, indem Sie SENDER_EMAIL und SENDER_PASSWORD bearbeiten.
  • Geben Sie die E-Mail-Adresse des Empfängers in den Code ein, indem Sie RECIPIENT_EMAIL aktualisieren. Dies kann dieselbe E-Mail-Adresse wie die des Absenders sein.

※ Notiz:

  • Der Absender muss ein Gmail-Konto verwenden.
  • Das Passwort des Absenders sollte das App-Passwort sein, das Sie zuvor erhalten haben.
  • Jede Art von E-Mail-Adresse kann für die E-Mail-Adresse des Empfängers verwendet werden.
  • Drücken Sie die Schaltfläche Upload in der Arduino-IDE, um den Code an den ESP8266 zu senden.
  • Öffnen Sie den seriellen Monitor.
  • Gießen Sie Wasser auf den Wassersensor.
  • Überprüfen Sie das Ergebnis im seriellen 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 ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Prüfen Sie Ihre E-Mail. Sie erhalten eine E-Mail, die der folgenden ähnlich ist:
ESP8266 NodeMCU-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!