ESP8266 - Notification par email d'ouverture de porte
Ce guide vous montrera comment configurer un ESP8266 pour envoyer des emails lorsqu'une porte s'ouvre. Nous couvrirons le processus de configuration, les pièces nécessaires, et fournirons des instructions étape par étape sur la façon de connecter un ESP8266 à un capteur de porte et à un service de messagerie. Cela améliorera la sécurité de votre maison en vous informant immédiatement par email chaque fois que la porte est ouverte.
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 proposons des guides détaillés sur les capteurs de porte et Gmail. Chaque guide contient des détails complets et des instructions faciles, étape par étape, sur l'installation du matériel, la compréhension de son fonctionnement, et comment connecter et programmer l'ESP8266. Vous pouvez en savoir plus sur ces guides en suivant ces liens :
This image is created using Fritzing. Click to enlarge image
Voir plus dans Brochage ESP8266. et Comment alimenter l'ESP8266..
#include <ESP8266WiFi.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 D7
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 ESP8266";
String textMsg = "This is an email sent from ESP8266.\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("ESP8266");
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 l'ESP8266 sur l'IDE Arduino, suivez ces étapes :
Connectez les composants comme indiqué dans le schéma.
Montez le capteur de porte sur votre porte.
Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
Ouvrez Arduino IDE sur votre ordinateur.
Choisissez la bonne carte ESP8266, par exemple (NodeMCU 1.0 (ESP-12E Module)), et son port COM respectif.
Dans Arduino IDE, cliquez sur l'icône Gestionnaire de Bibliothèque dans le menu de gauche pour l'ouvrir.
Recherchez 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 et ouvrez-le avec Arduino IDE.
Entrez vos informations WiFi (nom du réseau et mot de passe) dans le code. Mettez à jour WIFI_SSID et WIFI_PASSWORD avec vos détails.
Modifiez l'email et le mot de passe de l'expéditeur dans le code. Changez SENDER_EMAIL et SENDER_PASSWORD par votre email et mot de passe.
Mettez à jour l'adresse email du destinataire dans RECIPIENT_EMAIL par votre propre email, si nécessaire. Elle peut être la même que celle de l'expéditeur.
※ Note:
Assurez-vous que l'e-mail de l'expéditeur utilise Gmail. Utilisez le mot de passe de l'application créé précédemment comme mot de passe de l'expéditeur. L'e-mail du destinataire peut être de tout type.
Cliquez sur le bouton Télécharger dans l'IDE Arduino pour envoyer le code à l'ESP8266.
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 ESP8266
----------------