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

Índice
  1. Instalación de motion y motioneye
  2. Integración en HA

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:

Ahora ya puedes mostrar en tu HA mediante un iframe la imagen en directo de lo que capta tu webcam, por ejemplo:

streaming 1

streaming 2

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir