ESP32 - Türöffnung E-Mail-Benachrichtigung
In diesem Tutorial lernen wir, wie man einen ESP32 verwendet, um E-Mail-Benachrichtigungen zu senden, wenn eine Tür geöffnet wird. Dieser umfassende Leitfaden behandelt den Einrichtungsprozess, die benötigten Komponenten sowie Schritt-für-Schritt-Anweisungen zur Integration eines ESP32 mit einem Türsensor und einem E-Mail-Dienst. Sichern Sie Ihr Zuhause und bleiben Sie informiert mit Echtzeit-Benachrichtigungen, die direkt in Ihren Posteingang gesendet werden – dank ESP32.
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 haben spezielle Tutorials zum Türsensor und zu Gmail. Jedes Tutorial enthält detaillierte Informationen und eine Schritt-für-Schritt-Anleitung zur PIN-Belegung, zum Funktionsprinzip, zur Verdrahtung mit dem ESP32 und zum ESP32-Code… Erfahren Sie mehr darüber unter den folgenden Links:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.
#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 DOOR_SENSOR_PIN 19
int door_state;
int prev_door_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(DOOR_SENSOR_PIN, INPUT_PULLUP);
door_state = digitalRead(DOOR_SENSOR_PIN);
}
void loop() {
prev_door_state = door_state;
door_state = digitalRead(DOOR_SENSOR_PIN);
if (prev_door_state == LOW && door_state == HIGH) {
Serial.println("The door is opened");
String subject = "Email Notification from ESP32";
String textMsg = "This is an email sent from ESP32.\n";
textMsg += "Your door is opened";
gmail_send(subject, textMsg);
} else if (prev_door_state == HIGH && door_state == LOW) {
Serial.println("The door is closed");
}
}
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();
}
}
Falls dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich [wie Sie die ESP32-Umgebung in der Arduino IDE einrichten] an.
Installieren Sie den Türsensor an Ihrer Tür.
Verbinden Sie das ESP32-Board mit dem Türsensor.
Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
Öffnen Sie die Arduino-IDE auf Ihrem PC.
Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
Öffnen Sie den Library Manager, indem Sie auf das Symbol Library Manager in der linken Navigationsleiste der Arduino IDE klicken.
Suchen Sie ESP Mail Client, und finden Sie anschließend den ESP Mail Client, der von Mobizt erstellt wurde.
Klicken Sie auf die Install-Schaltfläche, um die ESP Mail Client-Bibliothek zu installieren.

Kopiere den obigen Code und öffne ihn mit der Arduino IDE
Ändere die WiFi-Informationen (SSID und Passwort) im Code auf deine, indem du zwei Konstanten WIFI_SSID und WIFI_PASSWORD änderst
Ändere die Absender-E-Mail-Adresse und das Passwort im Code auf deine, indem du zwei Konstanten SENDER_EMAIL und SENDER_PASSWORD änderst
Ändere die Empfänger-E-Mail im Code auf deine, indem du zwei Konstanten RECIPIENT_EMAIL änderst. Die Empfänger-E-Mail kann dieselbe wie die Absender-E-Mail sein
※ Notiz:
Absender-E-Mail MUSS Gmail sein
Absender-Passwort ist das App-Passwort, das du im vorherigen Schritt erhalten hast
Empfänger-E-Mail-Adresse kann jede Art von E-Mail sein
Klicken Sie in der Arduino-IDE auf die Hochladen-Schaltfläche, um Code auf ESP32 hochzuladen
Öffnen Sie den seriellen Monitor
Öffnen Sie die Tür
Überprüfen Sie das Ergebnis im seriellen Monitor
The door is opened
#### 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 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.