ESP32 + DHT22 + OLED en el servidor
El ESP32 mide la temperatura y la humedad, las envía por Internet al servidor de Unicarlos y una página web las muestra en gráficas. Aquí tienes cómo funciona, paso a paso.
El recorrido de los datos
Cuatro piezas conectadas en cadena: el ESP32 manda los datos, el servidor los guarda y la página web los dibuja.
Cómo funciona cada etapa
Lo que ocurre desde que el sensor mide hasta que ves el dato en la pantalla.
El ESP32 se conecta a la red WiFi
Con WiFiManager no hace falta escribir la contraseña en el código: si no conoce la red, crea su propio punto de acceso y tú eliges la WiFi desde el móvil. Después se acuerda de ella.
Mide con el DHT22 y lo enseña en la OLED
El sensor da la temperatura y la humedad. La pantalla OLED las muestra al momento, sin necesidad de Internet.
Indicas la ruta del servidor en
php.hLa constante
serverUrldice a qué dirección se envían los datos. Es la ruta completa hasta php.php (se explica en el apartado siguiente). La línea comentada con//era la dirección de pruebas en la red local.Cada 10 segundos envía los datos en formato JSON
El ESP32 crea un mensaje JSON y lo manda al servidor con una petición HTTP. Es lo que ves en el monitor serie como «Enviando»:
{"accion":"guardarTemHum","temp":25.9,"hum":46.5}php.phprecibe el mensaje y lo guardaEl servidor ejecuta el archivo PHP, que lee temp y hum, les añade la fecha y la hora y los guarda al final de
json.json.El servidor responde al ESP32
El monitor serie muestra la respuesta. Si aparece
"exito":truey el mensaje «Datos guardados correctamente», el envío ha funcionado:{"exito":true,"mensaje":"Datos guardados correctamente","datos":{"temperatura":25.9,"humedad":46.5,"fecha_hora":"2026-10-22 08:44:55"}}vista_previa.htmlleejson.jsony dibuja las gráficasLa página pide el archivo cada 15 segundos y actualiza los valores actuales, las dos gráficas del tiempo, el termómetro y la dona de humedad. Por eso, cada envío nuevo del ESP32 aparece solo, sin recargar.
La dirección del servidor, por partes
Esta es la ruta que has puesto en serverUrl. Cada trozo indica un sitio distinto del servidor.
- alumnos2026.unicarlos.es: el servidor de la escuela. Se usa https, la versión segura.
- mario_alcantud_bleda: tu carpeta personal dentro del servidor.
- MER: la carpeta del módulo de Mantenimiento Electrónico.
- esp32_wifimanager_oled_dht22_php: la carpeta de este proyecto, donde están los archivos.
- php.php: el archivo que recibe los datos del ESP32.
php.php. Solo cambia el último trozo de la ruta a /vista_previa.html, y por eso json.json se encuentra sin indicar más ruta.
Los archivos de la carpeta
Los tres que has creado y esta página de presentación. Deben estar todos en la misma carpeta del servidor.
php.php
Recibe los datos que manda el ESP32, les añade la fecha y la hora y los guarda. Responde con un mensaje de éxito.
json.json
Es la «base de datos» sencilla: una lista con todas las lecturas (temperatura, humedad y fecha).
vista_previa.html
La página con las gráficas. Lee json.json y se actualiza cada 15 segundos.
index.html
Esta página: explica el proyecto y enlaza a la vista previa.
Si algo no funciona
Los fallos más habituales al subir datos a un servidor.
Permisos
PHP debe poder escribir en json.json. Si el servidor responde con error al guardar, revisa los permisos del archivo.
Hora del servidor
En tu monitor serie son las 10:44 y el servidor guarda las 08:44: va con la hora universal, dos horas por detrás de España.
El archivo crece
Cada envío añade una lectura y json.json no deja de crecer. De vez en cuando conviene vaciarlo o guardar solo las últimas.
Misma carpeta
La vista previa busca json.json junto a ella. Si los mueves a carpetas distintas, no encontrará los datos.