Caso práctico: aviso de buzón con Raspberry Pi

Caso práctico: monitor de buzón Raspberry Pi — hero

Objetivo y caso de uso

Lo que construirás: Un monitor de buzón con Raspberry Pi que detecta cuando la puerta se abre con un interruptor magnético de láminas, elimina el rebote de la señal, registra el evento con una marca de tiempo y envía una alerta al teléfono mediante ntfy.sh. Es un proyecto ligero de automatización GPIO con notificación casi instantánea, normalmente por debajo de 1 segundo en una conexión Wi‑Fi estable.

Por qué importa / Casos de uso

  • Recibe una alerta en tiempo real cuando se entrega el correo en lugar de revisar el buzón manualmente.
  • Reduce activaciones falsas eliminando el rebote de la entrada del interruptor, útil para gabinetes exteriores con viento o puertas metálicas que vibran.
  • Crea un sensor de automatización del hogar de bajo consumo con carga de cómputo mínima, a menudo por debajo del 2% de CPU y uso de GPU despreciable en una Raspberry Pi.
  • Mantén un historial local de eventos para verificar horas de entrega, por ejemplo registrando eventos de apertura del buzón a las 10:14:32 para paquetes o cartas.
  • Usa el mismo patrón para alertas de apertura de portones, notificaciones de acceso a cobertizos o monitoreo de puertas de armarios.

Resultado esperado

  • Un circuito funcional con interruptor de láminas conectado de forma segura al GPIO de Raspberry Pi con una resistencia pull-up o pull-down.
  • Detección confiable de eventos de apertura con un tiempo de eliminación de rebote que filtra rebotes breves de contacto en milisegundos.
  • Alertas de tipo push enviadas a tu teléfono mediante ntfy.sh con una latencia típica de extremo a extremo de aproximadamente 0.5–2 segundos, según la calidad de la red.
  • Inicio automático al arrancar usando systemd para que el monitoreo se reanude tras un corte de energía o reinicio.
  • Registros locales con marca de tiempo que puedes revisar para resolución de problemas, seguimiento de entregas o comprobación de notificaciones perdidas.

Público: Principiantes de Raspberry Pi, aficionados al DIY de automatización del hogar y estudiantes que aprenden manejo de entradas GPIO; Nivel: Básico

Arquitectura/flujo: El interruptor de láminas cambia el estado GPIO cuando se abre la puerta del buzón → el script de Raspberry Pi lee la entrada y elimina el rebote → el evento se registra localmente → se envía una notificación HTTP a ntfy.sh → el teléfono recibe la alerta.

Nota educativa de validación

Antes de publicar este caso, el contenido pasó la puerta automática de validación de Prometeo con estado PASS. El validador comprobó los bloques de código, la estructura del artículo, los comandos copiables y la coherencia con el catálogo de dispositivos soportados.

Evidencia de validación publicada

  • Resultado automático: PASS.
  • Estructura parseada: 3 apartados, 3 tablas y 14 bloques de código detectados antes de publicar.
  • Código comprobado: 1 Python/py_compile, 1 bloques de configuración/servicio, 10 Bash/copy-paste checks.
  • Catálogo soportado: el texto se contrastó contra los perfiles de dispositivo validables de Prometeo y los stacks no soportados bloquean la publicación.
  • Hallazgos del informe: sin hallazgos bloqueantes.

Esta validación confirma compatibilidad sintáctica y de herramientas para el material publicado, pero no sustituye la prueba física sobre tu hardware, cableado y entorno exactos.

Nota educativa de seguridad

Este proyecto es un prototipo educativo, no un producto certificado. Antes de energizar la instalación, verifica el pinout de la revisión exacta de tu placa ULX3S, mantén las señales de E/S de la FPGA a 3.3 V, nunca conectes 5 V directamente a los pines de E/S, desconecta la alimentación antes de cambiar el cableado y usa fuentes de alimentación externas adecuadas para cargas, motores o servos, compartiendo tierra solo cuando el cableado lo requiera.


title: Alerta inteligente de apertura de buzón con Raspberry Pi
level: Básico
slug: practical-case-raspberry-pi


Alerta inteligente de apertura de buzón con Raspberry Pi

Este proyecto práctico con Raspberry Pi construye una alerta inteligente de apertura de buzón.
Un interruptor magnético de láminas detecta cuándo se abre la puerta del buzón, y la Raspberry Pi envía una alerta a tu teléfono usando ntfy.sh.

Diagrama de bloques conceptual

Vista de alto nivel: qué entra, qué procesa cada bloque y qué sale del sistema.

Arquitectura funcional

El interruptor de láminas cambia el estad…

el script de Raspberry Pi lee la entrada…

el evento se registra localmente

se envía una notificación HTTP a ntfy.sh

el teléfono recibe la alerta

Flujo conceptual de señales y responsabilidades entre bloques del dispositivo.

Ruta de validación

Código fuente

PlatformIO build

Flash

Monitor serie

Resumen conceptual de las herramientas usadas para comprobar el material publicado.

Qué hace este proyecto

  • Detecta el estado de la puerta del buzón con un interruptor de láminas
  • Elimina el rebote de la entrada para reducir activaciones falsas
  • Envía una alerta de red tipo push cuando se abre el buzón
  • Registra localmente cada evento de apertura con una marca de tiempo
  • Se ejecuta automáticamente al arrancar con systemd

Nota de seguridad
Este proyecto es solo para GPIO de bajo voltaje. No conectes los pines GPIO de la Raspberry Pi directamente a tensión de red, timbres alimentados, cerraduras eléctricas ni cableado desconocido dentro de un buzón metálico. Si el buzón está en exteriores, protege la Pi y el cableado de la humedad y usa alivio de tensión adecuado.

Componentes

  • Raspberry Pi con acceso a red
  • Tarjeta microSD con Raspberry Pi OS
  • 1 interruptor magnético de láminas, normalmente abierto
  • 1 resistencia de 10 kOhm
  • Cables jumper
  • Protoboard o placa prototipo soldada

Cableado

El interruptor de láminas se usa como sensor de contacto. Cuando se abre la puerta del buzón, el interruptor cambia de estado y la Raspberry Pi puede activar la alerta inteligente de apertura del buzón.

Tabla de pines

FunciónPin del componentePin de Raspberry Pi
Fuente pull-up de 3.3 Vextremo 1 de la resistencia de 10 kOhm3.3 V, pin físico 1
Nodo de señalextremo 2 de la resistencia de 10 kOhm + extremo 1 del interruptor de láminasGPIO17, pin físico 11
Ruta a tierraextremo 2 del interruptor de láminasGND, pin físico 6

Lógica

Estado del buzónInterruptor de láminasEstado de GPIO17
Cerrado, imán cerca del interruptorContacto cerradoLOW
Abierto, imán lejos del interruptorContacto abiertoHIGH

Este cableado usa una resistencia pull-up externa a 3.3 V. El GPIO lee:

  • 0 cuando el buzón está cerrado
  • 1 cuando el buzón está abierto

Configuración del sistema

Actualiza el sistema e instala los paquetes necesarios:

sudo apt update
sudo apt install -y python3 python3-gpiozero python3-requests

Crea un directorio de proyecto:

mkdir -p /home/pi/mailbox-alert

Aplicación en Python

Guarda este archivo como /home/pi/mailbox-alert/mailbox_alert.py.

#!/usr/bin/env python3
from gpiozero import Button
from signal import pause
from datetime import datetime
import os
import socket
import requests

PIN = 17
LOG_FILE = "/home/pi/mailbox-alert/mailbox_events.log"
HOSTNAME = socket.gethostname()
TOPIC = f"{HOSTNAME}-smart-mailbox-open-alert"
NTFY_URL = f"https://ntfy.sh/{TOPIC}"

sensor = Button(PIN, pull_up=False, bounce_time=0.2)

def write_log(message: str) -> None:
    timestamp = datetime.now().isoformat(timespec="seconds")
    line = f"{timestamp} {message}\n"
    with open(LOG_FILE, "a", encoding="utf-8") as log_file:
        log_file.write(line)

def send_alert() -> None:
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    title = "Mailbox opened"
    body = f"Smart mailbox open alert from {HOSTNAME} at {now}"
    headers = {
        "Title": title,
        "Priority": "default",
        "Tags": "mailbox,postbox,package"
    }

    try:
        response = requests.post(
            NTFY_URL,
            data=body.encode("utf-8"),
            headers=headers,
            timeout=10
        )
        response.raise_for_status()
        write_log(f"ALERT_SENT topic={TOPIC} status={response.status_code}")
    except requests.RequestException as exc:
        write_log(f"ALERT_FAILED error={exc}")

def on_open() -> None:
    write_log("MAILBOX_OPEN")
    send_alert()

def main() -> None:
    write_log(f"START topic={TOPIC} pin={PIN}")
    sensor.when_pressed = on_open
    pause()

if __name__ == "__main__":
    os.makedirs("/home/pi/mailbox-alert", exist_ok=True)
    main()

Hazlo ejecutable:

chmod +x /home/pi/mailbox-alert/mailbox_alert.py

Prueba manualmente la alerta inteligente de apertura de buzón

Ejecuta la aplicación en una terminal:

python3 /home/pi/mailbox-alert/mailbox_alert.py

Luego abre la puerta del buzón. Deberías ver un nuevo evento en el archivo de registro:

tail -f /home/pi/mailbox-alert/mailbox_events.log

Suscríbete en tu teléfono u otro dispositivo a:

https://ntfy.sh/<your-hostname>-smart-mailbox-open-alert

Por ejemplo, si el hostname de tu Raspberry Pi es raspberrypi, el tema es:

https://ntfy.sh/raspberrypi-smart-mailbox-open-alert

Puedes comprobar tu hostname con:

hostname

Ejecutar al arranque con systemd

Crea /etc/systemd/system/mailbox-alert.service:

[Unit]
Description=Smart Mailbox Open Alert
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/mailbox-alert
ExecStart=/usr/bin/python3 /home/pi/mailbox-alert/mailbox_alert.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Habilita e inicia el servicio:

sudo systemctl daemon-reload
sudo systemctl enable mailbox-alert.service
sudo systemctl start mailbox-alert.service
sudo systemctl status mailbox-alert.service --no-pager

Método de validación

Para validar que esta alerta inteligente de apertura de buzón funciona correctamente:

  1. Inicia el servicio.
  2. Cierra el buzón para que el imán quede cerca del interruptor de láminas.
  3. Abre el buzón una vez.
  4. Confirma:
  5. que aparece una entrada MAILBOX_OPEN en el registro local
  6. que aparece una entrada ALERT_SENT en el registro local
  7. que llega una notificación al tema ntfy.sh suscrito
  8. Repite 10 ciclos de apertura/cierre.

Evidencia esperada

ComprobaciónResultado esperado
Detección GPIOUn disparo cuando se abre la puerta
Registro localLíneas MAILBOX_OPEN y ALERT_SENT con marca de tiempo
Alerta de redUna notificación por cada evento de apertura
RepetibilidadComportamiento consistente en ciclos repetidos de apertura/cierre

Solución de problemas

No llega ninguna alerta

Comprueba que la Pi tenga acceso a internet:

ping -c 3 ntfy.sh

Comprueba los registros del servicio:

journalctl -u mailbox-alert.service --no-pager -n 50

Activaciones falsas

  • Aumenta bounce_time de 0.2 a 0.5
  • Monta el imán y el interruptor de láminas de forma más segura
  • Mantén los cables del sensor cortos o trenzados para reducir el ruido

La entrada nunca cambia

Verifica el estado del GPIO con:

python3 -c "from gpiozero import Button; from time import sleep; s=Button(17, pull_up=False); print(s.is_pressed); sleep(1)"

Resultado

Ahora tienes una alerta inteligente de apertura de buzón construida sobre una Raspberry Pi.
Cuando se abre la puerta del buzón, el interruptor de láminas cambia de estado, la Pi detecta el evento y se envía una alerta automáticamente.

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Qué evento detecta el monitor de buzón con Raspberry Pi descrito en el artículo?




Pregunta 2: ¿Para qué sirve la eliminación de rebote en este proyecto?




Pregunta 3: ¿Qué servicio se utiliza para enviar alertas al teléfono?




Pregunta 4: Según el artículo, ¿cómo suele ser la velocidad de las notificaciones en una conexión Wi‑Fi estable?




Pregunta 5: ¿Qué tipo de conexión se menciona como condición para notificaciones normalmente por debajo de 1 segundo?




Pregunta 6: ¿Qué componente se usa para detectar la apertura de la puerta del buzón?




Pregunta 7: ¿Qué información guarda el historial local de eventos?




Pregunta 8: ¿Qué consumo de CPU se indica como habitual para este sensor de automatización del hogar?




Pregunta 9: ¿Qué uso de GPU se menciona para este proyecto en una Raspberry Pi?




Pregunta 10: Además del buzón, ¿para cuál de estos casos puede reutilizarse el mismo patrón?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:
Scroll al inicio