Cómo enviar correos electrónicos a Gmail utilizando un PLC ESP32

Aprende a enviar correos electrónicos con éxito con un controlador industrial ESP32 PLC y con la librería EMailSender
11 de mayo de 2023 por
Cómo enviar correos electrónicos a Gmail utilizando un PLC ESP32
Boot & Work Corp. S.L., Joan Vilardaga Castro
How to send Emails to Gmail using an ESP32 PLC

Introducción

La librería PLC industrial ESP32 es un PLC de código abierto basado en ESP32, y tiene múltiples aplicaciones en el entorno industrial para soluciones de automatización y control industrial.

En esta guía, encontrarás un proceso paso a paso para enviar correos electrónicos mediante un PLC basado en ESP32 utilizando la biblioteca EMailSender, que puede serte útil en varios escenarios, como la configuración de alarmas o la habilitación de funcionalidades de supervisión.

Requisitos

 ESP32 PLC

An Ethernet cable, if Ethernet will be used

Cómo Instalar la biblioteca EMailSender

La librería EMailSender permite a cualquier placa compatible con Arduino enviar correos electrónicos con archivos adjuntos mediante el protocolo SMTP. El protocolo SMTP (Simple Mail Transfer Protocol) es un protocolo de comunicación ampliamente utilizado para enviar y recibir mensajes de correo electrónico a través de una red. SMTP opera en la capa de aplicación de la pila de protocolos TCP/IP y se basa en TCP para establecer la conexión entre servidores de correo y cifrar la comunicación.

Se puede instalar con el gestor de librerías del IDE de Arduino, buscando la librería que se desea instalar, o se puede instalar manualmente siguiendo estos pasos. La forma recomendada es instalarlo a través del gestor de bibliotecas:

1. Abre el gestor de bibliotecas (Herramientas > Gestionar bibliotecas...):

Administrador de la biblioteca Arduino IDE

2. Busca la biblioteca que quieres instalar (por ejemplo, EMailSender)::

EMailSender en el gestor de bibliotecas

Configuración previa para enviar correos electrónicos

Si deseas proteger la conexión entre el PLC y el servidor SMTP, también tendrás que instalar la librería SSLClient , que cifrará el tráfico TCP entre tú y el servidor SMTP. Aunque utilices Gmail como servidor SMTP, Google obliga a cifrar las conexiones, por lo que también necesitarás la biblioteca. Esta biblioteca también se puede instalar con el Gestor de Bibliotecas, siguiendo los mismos pasos para instalar la biblioteca EMailSender  

Tras la instalación, si deses activar SSL en EMailSender, deberá seguir varios pasos:

  1. Cambia la línea 469 in el archivo SSLClient.h de "unsigned char m_iobuf[2048];" a "unsigned char m_iobuf[BR_SSL_BUFSIZE_BIDI];". Puedes encontrar este archivo en tu directorio de librerías Arduino, dentro de la carpeta SSLClient/src.

  2. Pon "define SSLCLIENT_WRAPPER " en el archivo EMailSenderKey.h justo después de "#define EMailSenderKey_h ".

Además, si quieres usar Etherne con el PLC ESP32, tendrás que poner "#define EMAIL_NETWORK_TYPE NETWORK_ETHERNET " right after "#define EMailSenderKey_h ".

Ejemplo

/*
 * Modified simple esp32 Gmail send example
 */

#include "Arduino.h"
#include <EMailSender.h>

#define SENDER_EMAIL "[email protected]"
#define SENDER_PASSWORD "<YOUR-GMAIL-PASSWD>"
#define RECEIVER_EMAIL "[email protected]"
//#define USE_ETH EMailSender emailSend(SENDER_EMAIL, SENDER_PASSWORD); #ifndef USE_ETH #include <WiFi.h> const char* ssid = "<YOUR-SSID>"; const char* password = "<YOUR-PASSWD>"; uint8_t connection_state = 0; uint16_t reconnect_interval = 10000; uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr) { static uint16_t attempt = 0; Serial.print("Connecting to "); if(nSSID) { WiFi.begin(nSSID, nPassword); Serial.println(nSSID); } uint8_t i = 0; while(WiFi.status()!= WL_CONNECTED && i++ < 50) { delay(200); Serial.print("."); } ++attempt; Serial.println(""); if(i == 51) { Serial.print("Connection: TIMEOUT on attempt: "); Serial.println(attempt); if(attempt % 2 == 0) Serial.println("Check if access point available or SSID and Password\r\n"); return false; } Serial.println("Connection: ESTABLISHED"); Serial.print("Got IP address: "); Serial.println(WiFi.localIP()); return true; } void Awaits() { uint32_t ts = millis(); while(!connection_state) { delay(50); if(millis() > (ts + reconnect_interval) && !connection_state) { connection_state = WiFiConnect(); ts = millis(); } } } #endif void setup() { Serial.begin(115200); #ifdef USE_ETH uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE }; Ethernet.begin(mac); #else connection_state = WiFiConnect(ssid, password); if(!connection_state) // if not connected to WIFI Awaits(); // constantly trying to connect #endif EMailSender::EMailMessage message; message.subject = "Hello"; message.message = "Come to www.industrialshields.com"; EMailSender::Response resp = emailSend.send(RECEIVER_EMAIL, message); Serial.println("Sending status: "); Serial.println(resp.status); Serial.println(resp.code); Serial.println(resp.desc); } void loop() {}
Solución de problemas

Solución de probelmas

Si quieres utilizar Gmail como servidor SMTP, es posible que tengas que activar Less Secure Applications en la cuenta de Google que quieras utilizar para enviar correo electrónico.

Si esto no funciona, puedes visitar esta web para saber más.

Buscar en nuestro blog

Cómo enviar correos electrónicos a Gmail utilizando un PLC ESP32
Boot & Work Corp. S.L., Joan Vilardaga Castro 11 de mayo de 2023
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>