ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

¿Quieres aprender a enviar notificaciones por correo electrónico utilizando un script PHP con tu ESP32 o ESP8266? En este artículo, te explicaremos paso a paso cómo crear un sistema de notificaciones por correo electrónico que te permitirá estar al tanto de lo que sucede en tu dispositivo IoT. ¡Sigue leyendo para descubrir cómo hacerlo!

En este proyecto, creará un cliente ESP32 o ESP8266 que envía una solicitud HTTP POST a un script PHP para enviar una notificación por correo electrónico con los valores del sensor.

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Actualizado el 27 de marzo de 2023

También puede establecer un umbral para que su notificación por correo electrónico solo se envíe cuando la temperatura/humedad/presión supere un determinado valor.

Como ejemplo usaremos un sensor BME280 conectado a una placa ESP32 o ESP8266. Puede modificar el código proporcionado para enviar lecturas desde otro sensor o incluso utilizar varias placas.

Esta es una excelente manera de enviar notificaciones por correo electrónico usando ESP32 o ESP8266 sin depender de IFTTT o un servidor SMTP.

Para crear este proyecto deberás:

  1. Alojar un servidor y configurar un nombre de dominio
  2. Cree un script PHP para enviar notificaciones por correo electrónico
  3. Programa ESP32 o ESP8266 con Arduino IDE

Este proyecto también es una gran adición a nuestros proyectos anteriores:

  • Inserte datos ESP32/ESP8266 en la base de datos MySQL usando PHP y Arduino IDE
  • Visualiza los valores de tus sensores desde cualquier parte del mundo

1. Alojamiento de su aplicación PHP

El objetivo de este proyecto es tener tu propio nombre de dominio y cuenta de hosting que te permita enviar notificaciones por correo electrónico (sin utilizar un servidor SMTP, IFTTT, etc.).

Aquí hay una descripción general de cómo funciona el proyecto:

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Recomiendo utilizar uno de los siguientes servicios de hosting que pueden satisfacer todas las necesidades del proyecto:

  • Bluehost (fácil de usar con cPanel): nombre de dominio gratis al comprar el plan de 3 años. Recomiendo la opción “Sitios ilimitados”;
  • Océano digital: servidor Linux que administra desde una línea de comando. Recomiendo esta opción sólo para usuarios avanzados.

Estos son dos servicios que uso y recomiendo personalmente, pero puedes utilizar cualquier otro servicio de hosting. Cualquier servicio de hosting que ofrezca PHP y MySQL funcionará con este tutorial. Si no tiene una cuenta de alojamiento, le recomiendo registrarse en Bluehost.

Obtenga alojamiento y nombres de dominio en Bluehost »

Al comprar una cuenta de hosting, también necesitarás comprar un nombre de dominio. Si te gustan nuestros proyectos, puedes registrarte en uno de los servicios de hosting recomendados ya que apoyarás nuestro trabajo.

Nota: También puedes ejecutar un servidor LAMP (Linux, Apache, MySQL, PHP) en una Raspberry Pi, pero no puede enviar correos electrónicos por sí solo. Para enviar correo electrónico a través de PHP con una Raspberry Pi, debe utilizar un servidor de Protocolo simple de transferencia de correo (SMTP).

2. PHP Script HTTP: enviar notificación por correo electrónico

Después de registrarse para obtener una cuenta de alojamiento y configurar un nombre de dominio, puede iniciar sesión en su cPanel o panel similar.

Luego siga los pasos adicionales para crear un script PHP que sea responsable de recibir solicitudes entrantes del ESP32/ESP8266 y enviar un correo electrónico.

Si está utilizando un proveedor de alojamiento con cPanel, vaya a Avanzado y busque «Administrador de archivos«:

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Luego seleccione el público_html opción y presione el botón «+ archivoBotón ”para crear uno nuevo .php Archivo.

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Nota: Si está siguiendo este tutorial y no está familiarizado con PHP, le recomiendo crear este archivo exacto. De lo contrario, deberá modificar el boceto ESP proporcionado con una ruta URL diferente.

Crear un nuevo archivo en /público_html con exactamente este nombre y esta extensión: Notificación por correo electrónico.php

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Edite el archivo recién creado (Notificación por correo electrónico.php) y copie el siguiente script:

<?php

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-send-email-notification/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

// Receiver Email Address (where to send email notification)
$email_address = "[email protected]";

// Keep this API Key value to be compatible with the ESP code provided in the project page. If you change this value, the ESP sketch needs to match
$api_key_value = "tPmAT5Ab3j7F9";

$api_key = $value1 = $value2 = $value3 = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $api_key = test_input($_POST["api_key"]);
    if($api_key == $api_key_value) {
        $value1 = test_input($_POST["value1"]);
        $value2 = test_input($_POST["value2"]);
        $value3 = test_input($_POST["value3"]);
        
        // Email message
        $email_msg = "Temperature: " . $value1 . "ºCnHumidity: " . $value2 . "%nPressure: " . $value3 . "hPa";
        
        // Use wordwrap() if lines are longer than 70 characters
        $email_msg = wordwrap($email_msg, 70);
        
        // Uncomment the next if statement to set a threshold 
        // ($value1 = temperature, $value2 = humidity, $value3 = pressure)
        /*if($value1 < 24.0){
            echo "Temperature below threshold, don't send email";
            exit;
        }*/
        
        // send email with mail(receiver email address, email subject, email message)
        mail($email_address, "[NEW] ESP BME280 Readings", $email_msg);
        
        echo "Email sent";
    }
    else {
        echo "Wrong API Key provided.";
    }

}
else {
    echo "No data posted with HTTP POST.";
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

Ver código sin formato

Antes de guardar el archivo, debe $dirección de correo electrónico Variable con la dirección de correo electrónico del destinatario:

// Receiver Email Address (where to send email notification)
$email_address = "[email protected]";

Después de agregar el correo electrónico del destinatario, guarde el archivo y continúe con este tutorial. Cuando intentas acceder a tu nombre de dominio en la siguiente ruta URL, obtienes lo siguiente:

https://example.com/email-notification.php
ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Si ve este mensaje, significa que todo se está configurando correctamente. Puedes continuar con este proyecto.

3. Configurando tu ESP32 o ESP8266

Este proyecto es compatible con placas ESP32 y ESP8266. Sólo necesita ensamblar un circuito simple y cargar el boceto proporcionado para publicar los valores de temperatura, humedad y presión en su script PHP, que luego será responsable de procesar las notificaciones por correo electrónico. El boceto es ligeramente diferente para cada tablero.

Piezas requeridas

Para este ejemplo, obtenemos los valores del sensor BME280. Aquí hay una lista de las piezas que necesitará para construir el circuito para este proyecto:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Esquema

El módulo de sensor BME280 que utilizamos se comunica a través del protocolo de comunicación I2C, por lo que debe conectarlo a los pines I2C del ESP32 o ESP8266.

Cableado BME280 con ESP32

BME280 ESP32
SCK (pasador SCL) GPIO22
SDI (pin SDA) GPIO21

Así que monte su circuito como se muestra en el siguiente diagrama de circuito (lea las instrucciones completas para ESP32 con BME280).

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Recomendaciones de literatura: Guía de referencia de asignación de pines ESP32

Cableado BME280 con ESP8266

BME280 ESP8266
SCK (pasador SCL) GPIO5
SDI (pin SDA) GPIO4

Ensamble su circuito como en el siguiente esquema si está utilizando una placa ESP8266 (lea las instrucciones completas para ESP8266 con BME280).

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Recomendaciones de literatura: Guía de referencia de distribución de pines ESP8266

Instalación de bibliotecas

Programamos el ESP32/ESP8266 usando Arduino IDE, por lo que el complemento ESP32/ESP8266 debe estar instalado en su Arduino IDE. Dependiendo de la placa que estés utilizando, sigue uno de los siguientes tutoriales:

código ESP32

Siga esta sección si está utilizando un ESP32. Para un ESP8266 haga clic aquí.

Después de instalar los complementos de placa necesarios, copie el siguiente código en su IDE de Arduino, pero no lo cargue todavía. Deberá realizar algunos cambios para que funcione para usted.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-send-email-notification/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.

*/

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// REPLACE with your Domain name and URL path or IP address with path
const char* serverName = "https://example.com/email-notification.php";

// Keep this API Key value to be compatible with the PHP code provided in the project page. 
// If you change the apiKeyValue value, the PHP file /email-notification.php also needs to have the same key 
String apiKeyValue = "tPmAT5Ab3j7F9";


/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;  // I2C
//Adafruit_BME280 bme(BME_CS);  // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);  // software SPI

void setup() {
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) { 
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());

  // (you can also pass in a Wire library object like &Wire2)
  bool status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring or change I2C address!");
    while (1);
  }
  //Check WiFi connection status
  if(WiFi.status()== WL_CONNECTED){
    WiFiClientSecure *client = new WiFiClientSecure;
    client->setInsecure(); //don't use SSL certificate
    HTTPClient https;
    
    // Your Domain name with URL path or IP address with path
    https.begin(*client, serverName);
    
    // Specify content-type header
    https.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    // Prepare your HTTP POST request data

    String httpRequestData = "api_key=" + apiKeyValue + "&value1=" + String(bme.readTemperature())
                           + "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";
   
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    
    // You can comment the httpRequestData variable above
    // then, use the httpRequestData variable below (for testing purposes without the BME280 sensor)
    //String httpRequestData = "api_key=tPmAT5Ab3j7F9&sensor=BME280&location=Office&value1=24.75&value2=49.54&value3=1005.14";

    // Send HTTP POST request
    int httpResponseCode = https.POST(httpRequestData);
     
    // If you need an HTTP request with a content type: text/plain
    //https.addHeader("Content-Type", "text/plain");
    //int httpResponseCode = https.POST("Hello, World!");
    
    // If you need an HTTP request with a content type: application/json, use the following:
    //https.addHeader("Content-Type", "application/json");
    //int httpResponseCode = https.POST("{"value1":"19","value2":"67","value3":"78"}");
    
    if (httpResponseCode>0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
    }
    else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }
    // Free resources
    https.end();
  }
  else {
    Serial.println("WiFi Disconnected");
  } 
  // Use deep sleep to make the ESP send an email every X number of minutes/hours with low power consumption
  // ESP32 Deep Sleep Guide: https://RandomNerdTutorials.com/esp32-deep-sleep-arduino-ide-wake-up-sources/  
}

void loop() {
}

Ver código sin formato

Configuración de sus credenciales de red

Debe cambiar las siguientes líneas con sus credenciales de red: SSID y Contraseña. El código contiene comentarios detallados sobre dónde debe realizar los cambios.

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Configurando el nombre de su servidor

También deberá ingresar su nombre de dominio para que ESP publique las métricas en su propio servidor.

const char* serverName = "https://example.com/email-notification.php";

Ahora puedes subir el código a tu tablero.

Nota: La mayoría de los servidores requieren solicitudes HTTPS. El código anterior garantiza que las solicitudes HTTPS cumplan con los requisitos de la mayoría de los servidores en la nube actuales.

¿Su servidor no soporta HTTPS? Utilice este código en su lugar.

Así es como funciona el código

Aquí hay un resumen rápido de cómo funciona el código:

  • Importe todas las bibliotecas para que funcione (las bibliotecas ESP32 o ESP8266 se importarán según la placa seleccionada en su IDE de Arduino);
  • Establezca las variables que quizás desee cambiar (Valor de clave API);
  • El Valor de clave API es solo una cadena aleatoria que puedes cambiar. Se utiliza por razones de seguridad para que solo alguien que conozca su clave API pueda enviar notificaciones por correo electrónico.
  • Inicialice las comunicaciones en serie para fines de depuración.
  • Conéctese a su enrutador a través de Wi-Fi;
  • Inicialice el sensor BME280 para obtener lecturas de temperatura, humedad y presión;
  • Inicialice un cliente WiFi seguro.

Luego, en el resto del configuración() Aquí ejecuta HTTP POST con las últimas lecturas de BME280:

// Your Domain name with URL path or IP address with path
http.begin(client, serverName);

// Specify content-type header
http.addHeader("Content-Type", "application/x-www-form-urlencoded");

// Prepare your HTTP POST request data
String httpRequestData = "api_key=" + apiKeyValue + "&value1=" + String(bme.readTemperature())
                       + "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";

int httpResponseCode = http.POST(httpRequestData);

Puedes comentar sobre el httpSolicitudDatos Variable anterior que vincula todas las lecturas del BME280 y utiliza el httpSolicitudDatos Variable a continuación para fines de prueba:

String httpRequestData = "api_key=tPmAT5Ab3j7F9&value1=24.75&value2=49.54&value3=1005.14";

Obtenga más información sobre las solicitudes HTTPS con ESP32: Solicitudes HTTPS ESP32 (Arduino IDE).

código ESP8266

Siga esta sección si está utilizando un ESP8266. Para obtener información sobre un ESP32, consulte la sección anterior..

Después de instalar los complementos de placa necesarios, copie el siguiente código en su IDE de Arduino, pero no lo cargue todavía. Deberá realizar algunos cambios para que funcione para usted.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-esp8266-send-email-notification/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.

*/

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecureBearSSL.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

// REPLACE with your Domain name and URL path or IP address with path
const char* serverName = "https://example.com/email-notification.php";

// Keep this API Key value to be compatible with the PHP code provided in the project page. 
// If you change the apiKeyValue value, the PHP file /email-notification.php also needs to have the same key 
String apiKeyValue = "tPmAT5Ab3j7F9";

/*#include <SPI.h>
#define BME_SCK 18
#define BME_MISO 19
#define BME_MOSI 23
#define BME_CS 5*/

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme;  // I2C
//Adafruit_BME280 bme(BME_CS);  // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);  // software SPI

void setup() {
  Serial.begin(115200);
  
  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) { 
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());

  // (you can also pass in a Wire library object like &Wire2)
  bool status = bme.begin(0x76);
  if (!status) {
    Serial.println("Could not find a valid BME280 sensor, check wiring or change I2C address!");
    while (1);
  }
  //Check WiFi connection status
  if(WiFi.status()== WL_CONNECTED){

    std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);

    // Ignore SSL certificate validation
    client->setInsecure();
    
    //create an HTTPClient instance
    HTTPClient https;
    
    // Your Domain name with URL path or IP address with path
    https.begin(*client, serverName);
    
    // Specify content-type header
    https.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    // Prepare your HTTP POST request data
    String httpRequestData = "api_key=" + apiKeyValue + "&value1=" + String(bme.readTemperature())
                           + "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";
    Serial.print("httpRequestData: ");
    Serial.println(httpRequestData);
    
    // You can comment the httpRequestData variable above
    // then, use the httpRequestData variable below (for testing purposes without the BME280 sensor)
    //String httpRequestData = "api_key=tPmAT5Ab3j7F9&sensor=BME280&location=Office&value1=24.75&value2=49.54&value3=1005.14";

    // Send HTTP POST request
    int httpResponseCode = https.POST(httpRequestData);
     
    // If you need an HTTP request with a content type: text/plain
    //http.addHeader("Content-Type", "text/plain");
    //int httpResponseCode = https.POST("Hello, World!");
    
    // If you need an HTTP request with a content type: application/json, use the following:
    //http.addHeader("Content-Type", "application/json");
    //int httpResponseCode = https.POST("{"value1":"19","value2":"67","value3":"78"}");
        
    if (httpResponseCode>0) {
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
    }
    else {
      Serial.print("Error code: ");
      Serial.println(httpResponseCode);
    }
    // Free resources
    https.end();
  }
  else {
    Serial.println("WiFi Disconnected");
  }
  // Use deep sleep to make the ESP send an email every X number of minutes/hours with low power consumption
  // ESP8266 Deep Sleep Guide: https://RandomNerdTutorials.com/esp8266-deep-sleep-with-arduino-ide/
}

void loop() {

}

Ver código sin formato

Configuración de sus credenciales de red

Debe cambiar las siguientes líneas con sus credenciales de red: SSID y Contraseña. El código contiene comentarios detallados sobre dónde debe realizar los cambios.

// Replace with your network credentials
const char* ssid     = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";

Configurando el nombre de su servidor

También deberá ingresar su nombre de dominio para que ESP publique las métricas en su propio servidor.

const char* serverName = "https://example.com/email-notification.php";

Ahora puedes subir el código a tu tablero.

Nota: La mayoría de los servidores requieren solicitudes HTTPS. El código anterior garantiza que las solicitudes HTTPS cumplan con los requisitos de la mayoría de los servidores en la nube actuales.

¿Su servidor no soporta HTTPS? Utilice este código en su lugar.

Obtenga más información sobre las solicitudes HTTPS con ESP8266: Solicitudes HTTPS ESP8266 NodeMCU (Arduino IDE).

demostración

Después de completar todos los pasos, encienda su placa ESP y haga que envíe una solicitud HTTP a su servidor:

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Si todo funciona correctamente, debería ver lo siguiente en su monitor serie Arduino IDE:

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Abra su cliente de correo electrónico. Debes enviar un nuevo correo electrónico con el asunto “[NEW] Lecturas ESP BME280“ con los últimos valores de temperatura:

ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP

Para enviar un nuevo correo electrónico, presione el botón RESET/ENABLE incorporado del ESP para reiniciarlo. Luego se envían los nuevos valores medidos por correo electrónico.

Para una aplicación final, recomiendo usar el modo de suspensión profunda para que el ESP envíe un correo electrónico cada X minutos/horas mientras usa poca energía. Consulta una de estas guías para agregar sueño profundo a tu boceto:

  • ESP32 Deep Sleep con Arduino IDE y fuentes de activación
  • ESP8266 Sueño profundo con Arduino IDE

Habilitar notificación de umbral

Finalmente, recuerde que cada vez que su ESP se reinicia (o se despierta del sueño profundo) envía una nueva notificación por correo electrónico con los valores actuales. Es posible que desee establecer un umbral para recibir solo una notificación por correo electrónico cuando sus métricas estén por encima o por debajo del umbral.

En su script PHP (Notificación por correo electrónico.php), descomente la siguiente declaración if:

// Uncomment the next if statement to set a threshold 
// ($value1 = temperature, $value2 = humidity, $value3 = pressure)
/*if($value1 < 24.0){
    echo "Temperature below threshold, don't send email";
    exit;
}*/

Se verá así:

// Uncomment the next if statement to set a threshold 
// ($value1 = temperature, $value2 = humidity, $value3 = pressure)
if($value1 < 24.0){
    echo "Temperature below threshold, don't send email";
    exit;
}

Puede modificar esta declaración if con umbral de valor y enviar correo electrónico solo bajo esta condición. Con el código actual, solo se envía una notificación por correo electrónico cuando la temperatura supera los 24,0ºC.

Envolver

En este tutorial aprendiste cómo enviar correos electrónicos con ESP32 y ESP8266 usando tu propio servidor y nombre de dominio.

El ejemplo proporcionado es lo más simple posible para ayudarlo a comprender cómo funciona todo. Después de comprender este ejemplo, puede cambiar el contenido del correo electrónico, publicar diferentes valores de sensores, usar múltiples placas ESP y más.

Usted también puede estar interesado en:

  • Inserte datos ESP32/ESP8266 en la base de datos MySQL usando PHP y Arduino IDE
  • Visualiza los valores de tus sensores desde cualquier parte del mundo
  • ESP32 Deep Sleep con Arduino IDE y fuentes de activación
  • ESP8266 Sueño profundo con Arduino IDE

Obtenga más información sobre el ESP32 con nuestros recursos:

  • Aprenda ESP32 con Arduino IDE
  • Construya servidores web con ESP32 y ESP8266
  • Aplicación web Firebase con ESP32 y ESP8266
  • HOGAR INTELIGENTE con Raspberry Pi, ESP32 y ESP8266
  • Proyectos y tutoriales ESP32 gratuitos…

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Enviar notificación por correo electrónico usando un script PHP con ESP32/ESP8266 – Preguntas Frecuentes

Inspiración del Contenido

En este proyecto, construirás un cliente ESP32 o ESP8266 que realiza una solicitud POST HTTP a un script PHP para enviar una notificación por correo electrónico con lecturas de sensores.

Actualizado el 27 de marzo de 2023

También puedes establecer un valor umbral, para que la notificación por correo electrónico se envíe solo si la temperatura/humedad/presión está por encima de cierto valor.

Como ejemplo, utilizaremos un sensor BME280 conectado a una placa ESP32 o ESP8266. Puedes modificar el código proporcionado para enviar lecturas de diferentes sensores o incluso usar múltiples placas.

Esta es una excelente manera de enviar notificaciones por correo electrónico utilizando el ESP32 o ESP8266 sin depender de IFTTT o un servidor SMTP.

Preguntas Frecuentes

1. ¿Cómo puedo enviar notificaciones por correo electrónico con ESP32/ESP8266?

Para enviar notificaciones por correo electrónico con ESP32/ESP8266, debes configurar un servidor y un nombre de dominio, crear un script PHP para enviar las notificaciones por correo electrónico y programar tu ESP32/ESP8266 con el Arduino IDE.

2. ¿Cuáles son los requisitos para este proyecto?

Debes tener acceso a un servidor con PHP y MySQL, un sensor BME280, una placa ESP32 o ESP8266, y conexión a Internet para enviar las notificaciones por correo electrónico.

3. ¿Es posible modificar el código para enviar diferentes lecturas de sensores?

Sí, puedes modificar el código para enviar lecturas de diferentes sensores simplemente ajustando las variables en el script PHP y el código del ESP32/ESP8266.

4. ¿Es necesario configurar un valor umbral para las notificaciones por correo electrónico?

No es estrictamente necesario, pero puedes establecer un valor umbral para controlar cuándo se envían las notificaciones por correo electrónico, por ejemplo, solo cuando la temperatura sea superior a cierto valor.

5. ¿Puedo agregar funcionalidades adicionales a este proyecto?

Sí, una vez que entiendas cómo funciona este proyecto, puedes agregar múltiples sensores, crear gráficos de datos, o incluso implementar la funcionalidad de hibernación para un menor consumo de energía.

Conclusión

En este tutorial, has aprendido cómo enviar notificaciones por correo electrónico con ESP32/ESP8266 utilizando tu propio servidor y nombre de dominio. Este ejemplo simple te permite comprender cómo funciona todo el proceso y te brinda la base para personalizar y expandir este proyecto según tus necesidades.

Para obtener más información y tutoriales sobre ESP32, te recomendamos revisar los siguientes recursos:

  1. Enviar notificación por correo electrónico con ESP32/ESP8266
  2. Insertar datos en una base de datos MySQL con ESP32/ESP8266
  3. Guía de Hibernación Profunda con ESP32

3 comentarios en «ESP32/ESP8266 Enviar notificación por correo electrónico usando un script PHP»

Deja un comentario