Monitorización segura del hogar con Home Assistant en Raspberry Pi: Movimiento, alarma y captura de vídeo
Desplegar un sistema de seguridad doméstico fiable en una Raspberry Pi con Home Assistant (HA) es sencillo una vez que comprende los componentes clave: un sensor de movimiento, un panel de alarma y captura de vídeo basada en cámara. Esta guía le lleva a través de la configuración completa –desde cablear el sensor PIR HC‑SR501 hasta configurar HA, lanzar mjpg‑streamer y enviar alertas instantáneas por email con fotos.
Requisitos previos
- Raspberry Pi ejecutando Home Assistant (recomendado 0.101.3 o superior)
- Sensor de movimiento PIR HC‑SR501
- Cámara USB o CSI (cualquiera que funcione con mjpg‑streamer)
- Cuenta de email conectada a internet (p. ej., Gmail) para notificaciones
- Familiaridad básica con YAML y Docker (si ejecuta HA en contenedor)
1. Cableado del HC‑SR501 a la Pi
El sensor tiene tres pines: VCC (+), GND (–) y OUT. Conéctelos como sigue:
- VCC → Pin 5 (3,3 V)
- GND → Pin 6 (Tierra)
- OUT → Pin 7 (GPIO 4)
Estas conexiones permiten a HA leer el estado binario del sensor vía la plataforma rpi_gpio.
2. Instalación de mjpg‑Streamer
Use esta guía para configurar mjpg‑streamer y el grabador FFMpeg opcional. Los scripts en el repositorio lanzan el stream y inician/detienen la grabación bajo demanda.
3. Configuración de Home Assistant
Abra /usr/share/hassio/homeassistant/configuration.yaml (o su carpeta de configuración HA). Añada las siguientes secciones:
# Sensor binario para PIR
binary_sensor:
- platform: rpi_gpio
ports:
7: Sensor HC‑SR501
invert_logic: false
# Panel de alarma manual
alarm_control_panel:
- platform: manual
name: Home Alarm
pending_time: 60
delay_time: 40
code: 1234
# Interruptores de línea de comandos para controlar mjpg‑streamer
switch:
- platform: command_line
switches:
start_stop_motion_rec_timelapse:
friendly_name: 'Record motion timelapse'
command_on: "curl https://localhost/start_mjpgstrm.php && curl https://localhost/rec-motion-mjpg.php"
command_off: "curl https://localhost/stop_mjpgstrm.php && curl https://localhost/rec-motion-mjpg-stop.php"
# Comandos shell para scripts personalizados
shell_command:
take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
start_mgpg_streamer: 'curl https://localhost/start_mjpgstrm.php'
stop_mgpg_streamer: 'curl https://localhost/stop_mjpgstrm.php'
start_motion_rec: 'curl https://localhost/rec-motion-mjpg.php'
stop_motion_rec: 'curl https://localhost/rec-motion-mjpg-stop.php'
# Notificador por email (ejemplo Gmail)
notify:
- name: ha_sendmail
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 15
sender: <your‑email>
encryption: starttls
username: <your‑email>
password: <app‑password>
recipient:
- <your‑email>
sender_name: My Home Assistant
Tras editar, valide la configuración vía Configuration → Server Controls → Check Config, luego recargue automatizaciones y scripts.
4. Lógica de automatización
Cree las siguientes automatizaciones en automation.yaml para vincular el sensor, la alarma y la cámara.
# 1. Disparar cuando armado away y se detecta movimiento
- alias: 'Trigger alarm while armed away'
trigger:
- platform: state
entity_id: binary_sensor.sensor_hc_sr501
to: 'on'
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: armed_away
action:
- service: shell_command.start_mgpg_streamer
- service: shell_command.start_motion_rec
- service: alarm_control_panel.alarm_trigger
target:
entity_id: alarm_control_panel.home_alarm
# 2. Detener grabación cuando la alarma se desarma
- alias: 'Stop recording when alarm disarmed'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'disarmed'
action:
- service: shell_command.stop_mgpg_streamer
- service: shell_command.stop_motion_rec
- service: persistent_notification.create
data:
message: 'The alarm is disarmed at {{ states(''sensor.date_time'') }}'
# 3. Enviar foto al disparar la alarma
- alias: 'Email alert on alarm trigger'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'triggered'
action:
- service: persistent_notification.create
data:
message: 'Alarm triggered by motion sensor.'
- delay: { seconds: 4 }
- service: script.webcam_snapshot
- service: notify.ha_sendmail
data:
title: 'Intruder alert'
message: '{{now().strftime("%H:%M %Y-%m-%d")}}: Alarm triggered by motion sensor.'
data:
images:
- /config/camera/snapshot.jpg
El script.webcam_snapshot debe invocar takeSnapshotWebcam.sh, que captura un solo frame y lo guarda como /config/camera/snapshot.jpg para el adjunto del email.
5. Nota sobre volúmenes Docker
Si HA se ejecuta dentro de Docker, recuerde que la carpeta /config del contenedor se mapea a /usr/share/hassio/homeassistant en el host. Use docker inspect homeassistant | less para confirmar los bindings de volumen.
6. Prueba del sistema
- Arme la alarma a
armed_awayvía la UI de HA. - Active el sensor PIR (p. ej., caminando frente a él).
- Verifique que mjpg‑streamer inicia, el grabador de movimiento captura un clip corto y se recibe un email con una instantánea.
- Desarme la alarma y confirme que la grabación se detiene y aparece una notificación de desarme.
Conclusión
Con estos pasos tiene una solución de seguridad doméstica autónoma, de bajo coste, que combina detección de movimiento, control de alarma y alertas fotográficas instantáneas –todo orquestado por Home Assistant en una Raspberry Pi.
Siéntase libre de adaptar los scripts y ajustes de notificación a su entorno. ¡Feliz automatización!
Proceso de manufactura
- Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Construya una estación meteorológica con Raspberry Pi que envíe datos diarios por email
- Cómo conectar un sensor de temperatura DS1820 One‑Wire a Raspberry Pi usando GPIO
- Conexión del sensor ultrasónico HC‑SR04 a Raspberry Pi 3 – Guía completa
- Construya un Sensor de Movimiento Infrarrojo DIY para Raspberry Pi – Guía Paso a Paso
- Construya una Red de Sensores Inalámbrica Económica para su Hogar
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya una Alarma de Agua Headless para Raspberry Pi 2 con Adafruit T‑Cobbler Plus
- Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
- Lectura de Sensor Hall Lineal con Raspberry Pi: Guía Java y Análisis del ADC0832