Sensor de ocupación para baño con Raspberry Pi: alertas por voz y SMS mediante Twilio
Resumen
Durante nuestra estancia en la Hacker School, observamos que las dos instalaciones sanitarias del centro —una junto al espacio de trabajo principal y otra en la planta baja— se beneficiarían de un indicador de ocupación en tiempo real. Saber si un baño está ocupado antes de desplazarse permite reducir esperas innecesarias y mejorar la comodidad.
Nuestra solución permite consultar el estado del baño mediante llamada telefónica o SMS. Un sencillo sensor de luz, montado en una Raspberry Pi, monitoriza la iluminación del baño; si las luces están encendidas, el sistema asume que el baño está en uso.
La Raspberry Pi envía actualizaciones periódicas a una aplicación Flask alojada en Heroku, que también recibe las peticiones entrantes de Twilio. Cuando un usuario llama o envía un mensaje al número dedicado de Twilio, la aplicación responde con el estado actual de ocupación —ya sea mediante síntesis de voz (text-to-speech) o como mensaje SMS.
Además de la interfaz de voz/SMS, @gelstudios desarrolló un panel web intuitivo que muestra el estado del sensor en tiempo real.
Servidor
Twilio
Twilio es una plataforma de comunicaciones en la nube que simplifica el envío y recepción de llamadas y SMS a través de una API RESTful. Utilizamos la librería Python de Twilio y sus tutoriales de inicio rápido para conectar nuestro número telefónico a los endpoints de Flask.
Heroku
Heroku ofrece una plataforma gestionada para desplegar aplicaciones full-stack. Siguiendo la guía de inicio de Heroku Dev Center, configuramos una aplicación Python/Flask y la expusimos mediante HTTPS para una comunicación segura con Twilio.
Código del servidor
El código fuente completo de la aplicación web está disponible en GitHub: twilio-light-sensor-server/run.py.
Las rutas /twilio/voice y /twilio/text aceptan peticiones entrantes de Twilio. Según si el usuario llamó o envió un SMS, el servidor elabora una respuesta que refleja la ocupación actual del baño y la devuelve a Twilio para su entrega como voz o texto.
La ruta /update recibe cargas HTTP POST desde el sensor de la Raspberry Pi. Cada carga debe incluir los parámetros sensor_id y sensor_val para que el servidor identifique la fuente y actualice el estado interno correspondiente.
Para más detalles, consulta la documentación original del proyecto: Sensor de luz con voz y SMS usando Raspberry Pi y Twilio.
Proceso de manufactura
- Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
- Sensor infrarrojo TMP006 con Raspberry Pi: librería Python y guía de configuración
- Registro y gráficas de eventos de termostato 24 V con optoacoplador y Raspberry Pi
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos
- Tu primer proyecto IoT con Raspberry Pi, DHT11 y ThingSpeak
- Construye un sistema aeropónico automatizado con Raspberry Pi y sensor de humedad
- Tutorial sensor de luz Raspberry Pi: cablear LDR y leer niveles de luz con Python