Arduino - E-Mail-Benachrichtigung bei Türöffnung
In diesem Leitfaden lernen wir, wie man einen Arduino verwendet, um E-Mails zu senden, wenn eine Tür aufgeht. Wir erklären, wie man es einrichtet, welche Teile man benötigt, und geben Ihnen detaillierte Schritte, um einen Arduino mit einem Türsensor und einem E-Mail-Dienst zu verbinden. Dies wird dazu beitragen, Ihr Zuhause sicher zu halten, indem Sie sofortige E-Mail-Benachrichtigungen erhalten, wenn die Tür geöffnet wird.
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 detaillierte Tutorials zu Türsensoren und Gmail. Jede Anleitung enthält umfassende Details und klare, schrittweise Anweisungen zur Hardwareeinrichtung, zu den Funktionsprinzipien und dazu, wie man den Arduino anschließt und programmiert. Über diese Links können Sie mehr über diese Tutorials erfahren:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
#include <WiFiS3.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 13
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 Arduino";
String textMsg = "This is an email sent from Arduino.\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("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;
message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));
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.");
}
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());
}
}
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
if (status.success()) {
for (size_t i = 0; i < smtp.sendingResult.size(); i++) {
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");
smtp.sendingResult.clear();
}
}
Befestigen Sie den Türsensor an Ihrer Tür.
Verbinden Sie das Arduino-Board mit dem Türsensor.
Verbinden Sie das Arduino-Board mit Ihrem Computer über ein Micro-USB-Kabel.
Starten Sie die Arduino IDE auf Ihrem Computer.
Wählen Sie das richtige Arduino-Board (Arduino Uno R4 WiFi) und den COM-Port aus.
Klicken Sie in der Arduino IDE im linken Menü auf das Symbol "Bibliotheks-Manager", um es zu öffnen.
Geben Sie ESP Mail Client in das Suchfeld ein und suchen Sie nach ESP Mail Client von Mobizt.
Drücken Sie die Schaltfläche Installieren, um die ESP Mail Client-Bibliothek hinzuzufügen.

Kopieren Sie den bereitgestellten Code und öffnen Sie ihn mit der Arduino-IDE.
Aktualisieren Sie Ihre WiFi-Daten (Netzwerkname und Passwort) im Code. Ändern Sie die Werte von WIFI_SSID und WIFI_PASSWORD auf Ihre eigenen Werte.
Bearbeiten Sie die Absender-E-Mail-Adresse und das Passwort im Code. Ändern Sie SENDER_EMAIL und SENDER_PASSWORD.
※ Notiz:
Stellen Sie sicher, dass die Absender-E-Mail von Gmail stammt. 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-Adresse sein.
Drücken Sie die Hochladen-Schaltfläche in der Arduino-IDE, um den Code auf den Arduino hochzuladen
Öffnen Sie den Serial Monitor
Öffnen Sie die Tür
Zeigen Sie die Ergebnisse im Serial Monitor an.
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 Arduino
----------------
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.