Multiples Webcam

OctoPrint 0.18.0 Raspberry Pi

Verificar la versión, al final de la página de octoprint verás que versión tienes, esta guía es válida para la versión 0.18.0.

Duplicamos este fichero:

sudo cp /root/bin/webcamd  /root/bin/webcamd2

Editamos el primer fichero:

sudo nano /root/bin/webcamd

Solo editaremos estos dos parámetros para la pi cam:

camera="raspi"
camera_raspi_options="-x 1280 -y 720 -fps 15 -q 75"

Podéis poner la configuración que prefiráis.

Guardamos con CRTL+X, luego Y (yes), finalmente ENTER.

Vamos a configurar la webcam por usb, en este caso será un Logitech C270.

Antes que nada, tenemos que detectar el puerto del video de la webcam. Con este comando nos saldrá lo que vemos en la imagen, en este caso donde vemos UVC Camera es la camera sub, donde encontramos el video en /dev/video0, apuntarlo porque se usará más adelante.

v4l2-ctl --list-devices

Aparte también se puede renombrar el puerto usb, al final del tutorial estará explicado.

Entramos el fichero duplicado de la segunda webcam:

sudo nano /root/bin/webcamd2

En este caso editaremos estas líneas, y las dejaremos como se indica aquí, añadiendo el puerto 8081, para la segunda camera.

camera="usb"
camera_usb_options="-d /dev/video0 -r 1280x720 -f 15"
camera_http_options="-p 8081 -n --listen 127.0.0.1"

Sin salir del fichero, vamos bajando y buscamos el apartado # add video device into options. Donde eliminaremos la parte -d /dev/$device quedando así:

    # add video device into options
    options="$options"

Guardamos y salimos de este fichero.

Duplicamos este segundo fichero:

sudo cp /etc/systemd/system/webcamd.service /etc/systemd/system/webcamd2.service

Abrimos el fichero duplicado:

sudo nano /etc/systemd/system/webcamd2.service

Editamos estos parámetros:

Description=the OctoPi webcam2 daemon with the user specified config

StandardOutput=append:/var/log/webcamd2.log
StandardError=append:/var/log/webcamd2.log
ExecStart=/root/bin/webcamd2

Activamos porque se inicie el servicio de la segunda webcam al arrancar la raspberry.

sudo systemctl enable webcamd2

Ahora editaremos el archivo haproxy para añadir la webcam 2.

sudo nano /etc/haproxy/haproxy.cfg

Hay dos tipos de configuración:

En caso de tener 2 instancias de octoprint, dejar el apartado de frontend public2, así:

frontend public2
        bind :::81 v4v6
        bind :::444 v4v6 ssl crt /etc/ssl/snakeoil.pem
        option forwardfor except 127.0.0.1
        use_backend webcam2 if { path_beg /webcam/ }
        default_backend octoprint2

backend octoprint2
        acl needs_scheme req.hdr_cnt(X-Scheme) eq 0

        reqrep ^([^\ :]*)\ /(.*) \1\ /\2
        reqadd X-Scheme:\ https if needs_scheme { ssl_fc }
        reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }
        option forwardfor
        server octoprint2 127.0.0.1:5001
        errorfile 503 /etc/haproxy/errors/503-no-octoprint.http

backend webcam2
        reqrep ^([^\ :]*)\ /webcam/(.*)     \1\ /\2
        server webcam2  127.0.0.1:8081
        errorfile 503 /etc/haproxy/errors/503-no-webcam.http

En el caso que solo tengáis una instancia de octoprint y 2 cameras, hay que añadir en frontend public la nueva línea de la webcam.

frontend public
        bind :::80 v4v6
        bind :::443 v4v6 ssl crt /etc/ssl/snakeoil.pem
        option forwardfor except 127.0.0.1
        use_backend webcam if { path_beg /webcam/ }
        use_backend webcam2 if { path_beg /webcam2/ }
        use_backend webcam_hls if { path_beg /hls/ }
        use_backend webcam_hls if { path_beg /jpeg/ }
        default_backend octoprint

.... añadir al final ....

backend webcam2
        reqrep ^([^\ :]*)\ /webcam2/(.*)     \1\ /\2
        server webcam2  127.0.0.1:8081
        errorfile 503 /etc/haproxy/errors/503-no-webcam.http

Guardamos el fichero y comprobamos que todo esté correcto con:

sudo service haproxy restart

Si no da ningún error es que todo es correcto.

En el caso que os salgo un error como este, volver a editar haproxy, revisad bien el fichero y que no este algún valor mal introducido.

Reiniciamos la raspberry con:

sudo reboot now

Una vez reiniciado octoprint, podremos verificar fácilmente si las cámaras funcionan, entrando en estos enlaces:

Camera pi cam:

http://octopi.local/webcam/
http://octopi.local:8080
http://192.168.X.XXX/webcam/
http://192.168.X.XXX:8080

Segunda webcam con multi-instancia:

http://octopi.local:81/webcam/
http://192.168.X.XXX:81/webcam/

Segunda webcam sin multi-instancia:

http://octopi.local/webcam2/
http://octopi.local:8081
http://192.168.X.XXX/webcam2/
http://192.168.X.XXX:8081

Finalmente solo queda configurar la segunda webcam en la segunda instancia de octoprint.

Vamos a Settings –> Webcam & Timelapse

Activamos Enable webcam support

En la casilla Stream URL: /webcam/?action=stream

Probamos con el botón test.

Activamos la opción de Timelapse Recordings, luego añadimos estos valores en:

Snapshot URL: http://127.0.0.1:8081/?action=snapshot

Path to FFMPEG: /usr/bin/ffmpeg

Probamos con el botón test.

Esto es todo lo necesario para poder tener múltiples cameras en octoprint 0.18.0

Renombrar puerto usb camera USB

Mandamos este comando, con el nombre del puerto asignado a nuestra webcam, recomendable solo conectar a los usb la webcam, para evitar encontrar los valores de otros dispositivos.

udevadm info -q all -n /dev/ttyUSB0 --attribute-walk

Saldrán muchos números. Nos desplazamos aproximadamente al tercer parágrafo, nos paramos en el primero mas largo, como en la foto.

Apuntamos estos dos valores:

ATTRS{idVendor}=="" 
ATTRS{idProduct}==""

En el caso que las webcams tengan los mismos valores, hay que apuntar un tercer valor y recordar a que puerto se ha conectado esa webcam.

ATTRS{devpath}==""

Editamos este fichero, si es la primera vez que accedes saldrá en blanco.

sudo nano /etc/udev/rules.d/99-usb.rules

Dentro añadimos una línea para cada webcam, rellenándolo con los valores conseguidos anteriormente. En SYMLINK+, añadimos el nombre que le daremos al nuevo puerto. Quedando algo así:

SUBSYSTEM=="video4linux", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="0825", ATTRS{devpath}=="1.3", SYMLINK+="WEBCAM"

Guardamos, y posteriormente reiniciamos la raspberry.

Vamos a configurar la webcam con su nuevo nombre.

Primera webcam:

sudo nano /root/bin/webcamd

Segunda webcam:

sudo nano /root/bin/webcamd2

Buscamos esta linea, y las dejaremos como se indica aquí:

camera_usb_options="-d /dev/WEBCAM -r 1280x720 -f 15"

Reiniciamos la raspberry, y si todo es correcto ya deberíamos ver correctamente las webcam. Extraído del manual de nuestro compañero https://t.me/rogodra que podéis encontrar aquí

Si tenéis alguna duda poder entrar en la magnífica comunidad de octoprint para telegram:

https://t.me/Octoprint

Y quiero dar mención a Chris Riley y Thomas Messmer por sus manuales para la versión de octoprint 0.17.0

Channel Chis Riley

Web Thomas Messmer

Última actualización