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.

Arduino Türöffnungs-E-Mail-Benachrichtigung

Über Türsensor und Gmail

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:

Schaltplan zwischen Türsensor und Arduino

Arduino Türsensor-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-door-open-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 DOOR_SENSOR_PIN 13 // Arduino pin connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door 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(DOOR_SENSOR_PIN, INPUT_PULLUP); // set Arduino pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> 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) { // state change: HIGH -> LOW Serial.println("The door is closed"); } } 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 sich wie man die Umgebung für Arduino Uno R4 in der Arduino IDE einrichtet an.
  • 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.
Arduino ESP-Mail-Client-Bibliothek
  • 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.
COM6
Send
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 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Schauen Sie in den E-Mail-Posteingang Ihres Empfängers. Sie erhalten eine E-Mail, die dem Folgenden ähnlich ist:
Arduino Türsensor 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!