Arduino Nano ESP32 - Notification par e-mail d'ouverture de porte
Ce guide vous montrera comment configurer un Arduino Nano ESP32 pour envoyer des emails lorsqu'une porte s'ouvre. Nous discuterons des composants nécessaires, de leur installation, et fournirons des instructions étape par étape pour connecter un Arduino Nano ESP32 à un capteur de porte et à un service de messagerie. Cela vous aidera à recevoir des notifications par email immédiates chaque fois que la porte est ouverte, améliorant ainsi la sécurité de votre domicile.
Or you can buy the following sensor kits:
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.
Nous fournissons des guides détaillés sur les détecteurs de porte et Gmail. Chaque guide offre des informations complètes et des instructions faciles, étape par étape, pour configurer le matériel, comprendre son fonctionnement et connecter et programmer l'Arduino Nano ESP32. Pour en savoir plus sur ces guides, suivez ces liens.
This image is created using Fritzing. Click to enlarge image
#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 D2
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();
}
}
Pour commencer avec Arduino Nano ESP32, suivez ces étapes :
Connectez la carte Arduino Nano ESP32 au capteur de porte selon le schéma fourni.
Fixez le capteur de porte à votre porte.
Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
Lancez l'IDE Arduino sur votre ordinateur.
Sélectionnez la carte Arduino Nano ESP32 et son port COM correspondant.
Dans l'IDE Arduino, cliquez sur l'icône Library Manager dans le menu de gauche pour l'ouvrir.
Dans la boîte de recherche, entrez ESP Mail Client et trouvez ESP Mail Client par Mobizt.
Cliquez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Copiez le code donné et ouvrez-le dans l'IDE Arduino.
Entrez les détails de votre WiFi dans le code. Remplacez WIFI_SSID et WIFI_PASSWORD par le nom de votre réseau et le mot de passe.
Changez l'email et le mot de passe de l'expéditeur dans le code. Modifiez SENDER_EMAIL et SENDER_PASSWORD par votre propre email et mot de passe.
Mettez à jour RECIPIENT_EMAIL avec l'adresse email où vous souhaitez recevoir les messages. Cela peut être votre propre email si nécessaire.
※ Note:
Assurez-vous que l'e-mail de l'expéditeur provient de Gmail. Utilisez le mot de passe d'application que vous avez obtenu précédemment comme mot de passe de l'expéditeur. L'e-mail du destinataire peut provenir de n'importe quel fournisseur de messagerie.
Cliquez sur le bouton Upload dans l'Arduino IDE pour envoyer le code à l'Arduino Nano ESP32.
Ouvrez le Moniteur Série.
Ouvrez la porte.
Vérifiez les résultats sur le Moniteur Série.
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 Nano ESP32
----------------