En este tutorial, vamos a mostrarte cómo reutilizar webcams en Home Assistant utilizando Motion. Aprovecha al máximo tus cámaras web y mejora la seguridad de tu hogar con este sencillo proceso de integración.
Motion es un software que permite conectar webcams a tu Raspberry Pi o cualquier placa que utilices sin necesidad de ser exclusivamente un NAS o dispositivo superior, para posteriormente integrarlo en Home Assistant (HA). A continuación, te explicamos cómo hacerlo:
Por otro lado, en github nos topamos con la grata sorpresa de motioneye, un web frontend a través del cual podremos configurar motion sin tener que toquetear el en farragoso archivo motion.conf, cabe destacar que el uso de webcams y motion, es un complemento perfecto para la alarma de HA.
En primer lugar, hemos de comprobar que la raspberry reconoce correctamente la webcam.
Para ello, una vez la hemos conectado a uno de los USB, tecleamos el siguiente comando:
1 |
lsusb |
En mi caso me la reconoce como:
1 |
Bus 001 Device 004: ID xxxx:xxxx Microdia PC Camera |
ahora tecleamos
1 |
ls -al /dev/video* |
y saldrá algo parecido a esto:
1 |
crw-rw----+ 1 root video 81, 0 may 19 14:21 /dev/video0 |
Comenzamos la instalación con la actualización de nuestro sistema, pues parece ser que solo funciona en versiones actualizadas de raspbian stretch.
1 2 3 |
sudo apt-get update sudo apt-get upgrade |
Continuamos con la instalación
1 |
sudo apt-get install ffmpeg v4l-utils |
Instalamos las siguientes librerías para que funcione correctamente
1 |
sudo apt-get install libmariadbclient18 libpq5 |
Procedemos a la instalación
1 |
sudo apt-get install motion |
Seguimos instalando las siguientes dependencias
1 |
sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev |
Ahora instalamos motioneye
1 |
sudo pip install motioneye |
Creamos el directorio de configuración
1 2 3 |
sudo mkdir -p /etc/motioneye sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf |
Creamos el siguiente directorio.
1 |
sudo mkdir -p /var/lib/motioneye |
Por último añadimos un script para el inicio automático y le damos permisos de ejecución:
1 2 3 4 5 6 7 |
sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service sudo systemctl daemon-reload sudo systemctl enable motioneye sudo systemctl start motioneye |
Ahora vamos a configurarlo para su uso por el usuario PI o tu usuario
Creamos el siguiente directorio:
1 |
sudo mkdir /home/pi/motioneye |
Copiamos el archivo de configuración
1 |
sudo cp /etc/motioneye/motioneye.conf /home/pi/motioneye/motioneye.conf |
(Recuerda que debes incluir esta carpeta y su contenido en el grupo y usuario correspondiente)
Editamos el siguiente archivo
1 |
sudo nano /home/pi/motioneye/motioneye.conf |
e indicamos las siguientes rutas:
1 2 3 4 5 6 7 |
conf_path /home/pi/motioneye run_path /home/pi/motioneye log_path /home/pi/motioneye media_path /home/pi/motioneye |
Por último indicamos que al arrancar debe usar el nuevo archivo de configuración.
Editamos el archivo
1 |
sudo nano /etc/systemd/system/motioneye.service |
Dejándolo así
1 2 3 4 5 6 7 8 9 10 |
[Unit] Description=motionEye Server [Service] ExecStart=/usr/local/bin/meyectl startserver -c /home/pi/motioneye/motioneye.conf User=pi Restart=on-abort [Install] WantedBy=multi-user.target |
Reinicia tu raspberry para que tengan efecto todos los cambios.
En cuanto todo esté funcionando nuevamente puedes comprobar que se emite la imagen captada por la webcam en la siguiente dirección direcciónIPdelapi:8081 así comprobamos que motion está funcionando correctamente.
Ahora nos vamos a la siguiente dirección direcciónIPdelapi:8765 y accederás al web frontend de motioneye
Te pedirá un user y password para acceder.
La primera vez podrás acceder con el user admin, y dejando el password en blanco, verás en la esquina superior izquierda un circulo con tres barras, si lo pinchas te aparecerá el menú de configuración.
En el apartado de Motion Notifications podemos configurar que mediante MQTT nos envíe una señal a HA para que se active la alarma o se ejecute un automatismo.
Seleccionamos el apartado "run a command" y añadimos el siguiente comando:
1 |
mosquitto_pub -h IPdelaPI -t cameras/motion/habitacion -u usuario -P password -m ON |
Seleccionamos el apartado "run an end command" y añadimos el siguiente comando:
1 |
mosquitto_pub -h IPdelaPI -t camaras/motion/habitacion -u usuario -P password -m OFF |
Pulsa en "apply" para guardar los cambios
Ahora debemos crearnos un binary_sensor que reciba las señales de mqtt, para ello creamos un archivo y pegamos:
1 2 3 4 5 |
- platform: mqtt name: "Movimiento despacho mqtt" state_topic: "camaras/motion/habitacion" payload_on: "ON" payload_off: "OFF" |
Con esto ya tendrás creado en HA un sensor que dependerá de que la webcam detecte o no movimiento. Este sensor, lo puedes incluir en la alarma, crearte un automatismo o hacer cualquier cosa que se te ocurra.
Por último vamos a crear un automation que nos enviará imágenes en caso por ejemplo de que salte la alarma.
En primer lugar creamos un automation que se activará en caso de que el sensor PIR de la habitación detecte movimiento.
Como condicionante se ha puesto que solo funcione en caso de que la alarma esté activada o ya haya sido disparada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
- alias: camaratelegram trigger: platform: state entity_id: switch.pir to: 'on' condition: condition: or conditions: - condition: state entity_id: alarm_control_panel.casa state: 'armed_away' - condition: state entity_id: alarm_control_panel.casa state: 'triggered' action: - service: homeassistant.turn_on entity_id: switch.luz_habitacion - service: shell_command.take_snapshots - service: shell_command.rename_snapshots - service: notify.telegram data: message: "Movimiento en la habitacion!" - service: notify.telegram data: message: "Imágenes de la habitacion" data: photo: - file: /home/pi/snapshots/snapshot1.jpg caption: "Snapshot 1" - file: /home/pi/snapshots/snapshot2.jpg caption: "Snapshot 2" - file: /home/pi/snapshots/snapshot3.jpg caption: "Snapshot 3" |
Como puedes ver, al activarse el PIR, y se cumplan las condiciones de la alarma para evitar estar recibiendo mensajes continuamente, se encenderá la luz de la habitación correspondiente, se ejecutarán dos shell_commands que explicaremos a continuación y enviará las imágenes por télegram.
En el archivo configuration.yaml debes incluir lo siguiente:
1 2 3 |
shell_command: take_snapshots: 'rm -f /home/pi/snapshots/* | vlc -q -I dummy http://IPdelaPI:8081 --video-filter=scene --vout=dummy --scene-format=jpg --scene-ratio=1 --scene-prefix=snapshot --scene-path=/home/pi/snapshots --run-time 5 --scene-ratio=40 vlc://quit' rename_snapshots: ls /home/pi/snapshots | cat -n | while read n f; do mv "/home/pi/snapshots/$f" "/home/pi/snapshots/snapshot$n.jpg"; done |
La ruta donde se crean y guardan las capturas la puede crear donde más te interese.
De no tenerlo instalado ya, deberás instalar VLC en tu raspberry.
Es conveniente que te crees un panel lateral en tu HA para acceder directamente a motioneye, incluyendo lo siguiente en el archivo panels.yaml
1 2 3 4 |
motioneye: title: 'MotionEye' icon: mdi:eye url: 'http://IPdelaPI:8765' |
Por último, si lo que quieres es crear un streaming de tu cámara en HA, lo que debes hacer es crear una cámara con la siguiente estructura:
1 2 3 |
- platform: mjpeg mjpeg_url: http://ip:de:la:pi:8081 name: nombre de la cámara. |
Ahora ya puedes mostrar en tu HA mediante un iframe la imagen en directo de lo que capta tu webcam, por ejemplo:
Ya para terminar es probable que tengas que abrir el puerto 8081 en el router para poder ver el streaming y listo, ya hemos finalizado.