Arduino Nano ESP32 - E-Mail-Benachrichtigung bei Wasserleck
Dieser Leitfaden zeigt Ihnen, wie Sie den Arduino Nano ESP32 verwenden, um Wasserlecks zu erkennen und sofort E-Mail-Benachrichtigungen zu senden. Wir erklären, wie man den Sensor einrichtet, geben Codebeispiele und demonstrieren, wie man ihn mit E-Mail-Diensten verbindet. Dies ist nützlich, um Ihr Zuhause oder Ihr Büro vor Wasserschäden zu schützen, und eignet sich ideal für diejenigen, die gern DIY-Projekte machen und ihre Wasserleck-Erkennungssysteme verbessern möchten.
Oder Sie können die folgenden Kits kaufen:
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.
Wir bieten klare Anleitungen zu Wassersensoren und Gmail. Jede Anleitung enthält detaillierte Anweisungen und einfache Schritte zum Einrichten der Hardware, zum Verständnis ihrer Funktionsweise sowie zum Verbinden und Programmieren des Arduino Nano ESP32. Um mehr zu erfahren, klicken Sie bitte auf diese Links.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
#include <WiFi.h>
#include <ESP_Mail_Client.h>
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"
#define SENDER_EMAIL "xxxxxx@gmail.com"
#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"
#define RECIPIENT_EMAIL "xxxxxx@gmail.com"
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 587
#define WATER_SENSOR_PIN D4
int water_state;
int prev_water_state;
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);
water_state = digitalRead(WATER_SENSOR_PIN);
}
void loop() {
prev_water_state = water_state;
water_state = digitalRead(WATER_SENSOR_PIN);
if (prev_water_state == HIGH && water_state == LOW) {
Serial.println("Water leakage is detected!");
String subject = "Email Notification from ESP32";
String textMsg = "This is an email sent from ESP32.\n";
textMsg += "Water leakage is detected";
gmail_send(subject, textMsg);
}
}
void gmail_send(String subject, String textMsg) {
MailClient.networkReconnect(true);
smtp.debug(1);
smtp.callback(smtpCallback);
Session_Config 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;
SMTP_Message message;
message.sender.name = F("ESP32");
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;
message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));
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.");
}
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());
}
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
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++) {
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");
smtp.sendingResult.clear();
}
}
Um mit dem Arduino Nano ESP32 zu beginnen, befolgen Sie diese Schritte:
Schließen Sie den Wassersensor gemäß dem bereitgestellten Diagramm an das Arduino Nano ESP32-Board an.
Schließen Sie das Arduino Nano ESP32-Board mit einem USB-Kabel an Ihren Computer an.
Starten Sie die Arduino IDE auf Ihrem Computer.
Wählen Sie das Arduino Nano ESP32-Board und den entsprechenden COM-Port aus.
Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol auf der linken Seite der Arduino IDE klicken.
Suchen Sie nach dem ESP Mail Client und finden Sie den ESP Mail Client von Mobizt.
Klicken Sie auf die Install-Schaltfläche, um die ESP Mail Client-Bibliothek zu erhalten.

Kopieren Sie den bereitgestellten Code und fügen Sie ihn in die Arduino-IDE ein.
Ändern Sie Ihre WiFi-Zugangsdaten, indem Sie WIFI_SSID und WIFI_PASSWORD im Code bearbeiten.
Geben Sie Ihre E-Mail-Adresse und Ihr Passwort anstelle der Absenderadresse ein, indem Sie SENDER_EMAIL und SENDER_PASSWORD aktualisieren.
Bearbeiten Sie die E-Mail-Adresse des Empfängers im Code, indem Sie RECIPIENT_EMAIL ändern. Sie kann dieselbe sein wie die des Absenders.
※ Notiz:
Die E-Mail des Absenders muss ein Gmail-Konto sein.
Verwenden Sie das App-Passwort aus dem vorherigen Schritt als das Passwort des Absenders.
Die E-Mail-Adresse des Empfängers kann jede Art von E-Mail sein.
Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code an den Arduino Nano ESP32 zu senden.
Öffnen Sie den seriellen Monitor.
Gießen Sie Wasser auf den Wassersensor.
Überprüfen Sie den seriellen Monitor, um das Ergebnis zu sehen.
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 Nano ESP32
----------------
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.