
Motion. Reutilización de webcams en HA
Seguramente tengas por algún cajón una webcam que no utilices, pues no la tires que con Motion te enseñaremos a usarla en HA.
Motion es un software mediante el cual podremos conectar webcams a nuestra raspberry o placa que uses, para posteriormente integrarlo en HA
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 enfarragoso 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:
lsusb
En mi caso me la reconoce como:
Bus 001 Device 004: ID xxxx:xxxx Microdia PC Camera
ahora tecleamos
ls -al /dev/video*
y saldrá algo parecido a esto:
crw-rw----+ 1 root video 81, 0 may 19 14:21 /dev/video0
Instalación de motion y motioneye
Comenzamos la instalación con la actualización de nuestro sistema, pues parece ser que solo funciona en versiones actualizadas de raspbian stretch.
sudo apt-get update
sudo apt-get upgrade
Continuamos con la instalación
sudo apt-get install ffmpeg v4l-utils
Instalamos las siguientes librerías para que funcione correctamente
sudo apt-get install libmariadbclient18 libpq5
Procedemos a la instalación
sudo apt-get install motion
Seguimos instalando las siguientes dependencias
sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev
Ahora instalamos motioneye
sudo pip install motioneye
Creamos el directorio de configuración
sudo mkdir -p /etc/motioneye
sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf
Creamos el siguiente directorio.
sudo mkdir -p /var/lib/motioneye
Por último añadimos un script para el inicio automático y le damos permisos de ejecución:
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:
sudo mkdir /home/pi/motioneye
Copiamos el archivo de configuración
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
sudo nano /home/pi/motioneye/motioneye.conf
e indicamos las siguientes rutas:
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
sudo nano /etc/systemd/system/motioneye.service
Dejándolo así
[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
Integración en HA
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:
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:
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:
- 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.
- 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:
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
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:
Es probable que tengas que abrir el puerto 8081 en el router para poder ver el streaming
Pues eso es todo, como siempre, si tienes cualquier duda déjanos tu comentario o pásate por el grupo de telegram de @Domology
Fuentes:
https://github.com/ccrisan/motioneye/wiki
https://community.home-assistant.io/t/intruder-alert-notification-with-pictures-from-mjpeg-stream/22386
https://community.home-assistant.io/t/motioneye-home-assistant-camera-motion-automation/41712/34
Si quieres conocer otros artículos parecidos a Motion. Reutilización de webcams en HA puedes visitar la categoría Configuraciones HA.
- Pingback: Estado de los servicios de raspbian. Comprobación en Home Assistant | Domology 2.0
Deja una respuesta