ESP8266 - Notificación por correo electrónico de puerta abierta
Esta guía te mostrará cómo configurar un ESP8266 para enviar correos electrónicos cuando se abre una puerta. Abordaremos el proceso de configuración, las piezas necesarias y proporcionaremos instrucciones paso a paso sobre cómo conectar un ESP8266 a un sensor de puerta y a un servicio de correo electrónico. Esto mejorará la seguridad de tu hogar al notificarte de inmediato por correo electrónico cada vez que se abra la puerta.
Or you can buy the following kits:
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.
Ofrecemos guías detalladas sobre sensores de puertas y Gmail. Cada guía incluye todos los detalles y instrucciones fáciles, paso a paso, para configurar el hardware, entender cómo funciona y cómo conectar y programar el ESP8266. Puedes aprender más sobre estas guías siguiendo estos enlaces:

This image is created using Fritzing. Click to enlarge image
Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.
#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();
}
}
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
Conecta los componentes como se muestra en el diagrama.
Coloca el sensor de la puerta en tu puerta.
Conecta la placa ESP8266 a tu computadora mediante un cable USB.
Abre el IDE de Arduino en tu computadora.
Elige la placa ESP8266 correcta, como por ejemplo NodeMCU 1.0 (ESP-12E Module), y su puerto COM correspondiente.
En el IDE de Arduino, haz clic en el icono Library Manager en el menú de la izquierda para abrirlo.
Busca ESP Mail Client y encuentra ESP Mail Client de Mobizt.
Haz clic en el botón Instalar para añadir la biblioteca ESP Mail Client.

Copia el código y ábrelo con Arduino IDE.
Introduce tu información de WiFi (nombre de la red y contraseña) en el código. Actualiza WIFI_SSID y WIFI_PASSWORD con tus datos.
Cambia el correo electrónico y la contraseña del remitente en el código. Cambia SENDER_EMAIL y SENDER_PASSWORD por tu correo electrónico y contraseña.
Actualiza la dirección de correo del destinatario en RECIPIENT_EMAIL con tu propio correo, si es necesario. Puede ser la misma que la del remitente.
※ Nota:
Asegúrate de que el correo electrónico del remitente utilice Gmail. Utiliza la contraseña de la aplicación creada anteriormente como la contraseña del remitente. La dirección de correo del destinatario puede ser de cualquier tipo.
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
----------------
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.
※ NUESTROS MENSAJES
No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!