Veremos cómo configurar y programar un sensor para puerta o ventana mediante la tarjeta de desarrollo NodeMCU, ¿Quieres aprender a detectar cuando una puerta se abre? ¿Recibir un correo electrónico o mensaje de texto cuando esto ocurra? Este es un proyecto genial de alarma para hogares y además bastante sencillo.
Desde hace tiempo he sentido curiosidad por la domótica por lo que cada que tengo oportunidad hago algún proyecto.
Esta vez toco el turno de detectar cuando una puerta o ventana se abre.
Con este proyecto podremos recibir un correo al instante en que la puerta es abierta.

Suscríbete a nuestra lista de correo y recíbe los últimos contenidos directamente en tu bandeja de correo electrónico, puedes elegir únicamente de que categoria del blog quieres recibir contenido.
SuscríbemeEl circuito es muy sencillo y no requiere mucha explicación, más adelante hablaremos a detalle de los materiales, conexiones, código e ideas próximas.
Materiales
Para este proyecto necesitaremos muy pocos componentes.
- NodeMCU
- Cable de alimentación
- Sensor magnético para puerta / ventana
- Protoboard
Realmente el componente principal, el sensor magnético, no tiene mucha ciencia.
Una de las partes tiene un imán que activa el mecanismo, una parte va a la puerta y otro a la pared, deben quedar pegadas al estar la puerta cerrada.
Vamos a conectar nuestro NodeMCU con el sensor magnético mediante el pin D1 y GND.
Código Arduino
Vamos a nuestro IDE Arduino, seleccionamos la placa NODE-MCU 0.9 y el puerto al que la tenemos conectada.
Escribimos el siguiente código:
/* BOARD_: NODE-MCU 0.9 */ #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> #define WIFI_SSID "****" #define WIFI_PASSWORD "******" const String URL_SENDMAIL = "....scripts/puerta/sendmail.php"; const int pinPuerta = D1; // Status: 0->cerrada, 1->abierta int puerta_status = 0; int puerta_status_old = 0; HTTPClient http; void setup() { Serial.begin(115200); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.print("Conectado."); Serial.println(WiFi.localIP()); pinMode(pinPuerta, INPUT_PULLUP); } void loop() { puerta_status = digitalRead(pinPuerta); if(puerta_status != puerta_status_old){ String tmp = ""; if(puerta_status == 1){ tmp = "Puerta abierta"; // Request http.begin(URL_SENDMAIL); http.addHeader("Content-Type", "text/plain"); int httpCode = http.POST("test"); String payload = http.getString(); Serial.println(httpCode); Serial.println(payload); http.end(); }else{ tmp = "Puerta cerrada"; } Serial.println(tmp); puerta_status_old = puerta_status; } delay(1000); }
Como puedes ver en el código anterior nos vamos a apoyar en un archivo PHP para enviar la petición para enviar un correo electrónico.
Lo demás es parte de la conexión a Internet e inicializar los pines.
Leemos el valor de D1 con digitalRead y si tiene valor alto entonces realizamos la petición a PHP.
Código PHP para enviar correo
En nuestro código PHP únicamente configuramos para enviar un correo electrónico con la fecha y hora, además de unas variables con nombre de evento y ubicación.
date_default_timezone_set('America/Mexico_City'); $evento = "Puerta Abierta"; $ubicacion = "Casa"; $fecha = date('d-m-Y H:i:s'); $to = '********@gmail.com'; $subject = $evento . ' ' . $fecha'; $message = '['.$fecha.'] Se ha detectado el evento ' . $evento . ' en la ubicación ' . $ubicacion . '.'; $headers = 'From: *****@tudominio.com' . "\r\n" . 'Reply-To: *****@tudominio.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); echo "Correo enviado..";
Si subimos nuestro código al NodeMCU y el código PHP a nuestro servidor tendremos nuestro ejemplo funcionando.
En un par de segundos de separar la parte imantada del sensor tendremos la notificación de correo en nuestro teléfono.
Realmente ha sido bastante fácil este proyecto.
¿Qué más podríamos hacer?
En mi caso, cambie el correo por un SMS pues si no tengo internet no me enteraré del evento.
También integré Firebase al proyecto Arduino para poder monitorear el status de la puerta mediante una App que tengo con algunos otros proyectos de domótica en casa.
¿Qué más se te ocurre que podríamos hacer con este proyecto?
Si esta información sobre cómo detectar cuando una puerta se abre con NodeMCU te ha sido de utilidad no olvides compartirla en tus redes sociales y si tienes cualquier duda relacionada con este tema déjanos un comentario, sería un placer poder ayudarte.
¡Hasta luego!