0

Kamery pre Octoprint

Keďže moja tlačiareň ide skoro nonstop rád by som sa niekedy presvedčil, či je všetko doma OK, či sa neodlepil objekt alebo sa niečo nepokazilo. Rozhodoval som sa pre rôzne kamery a umiestnenie. Poviete si a nie je to jedno? No podľa mňa nie. Najskôr som si kúpil RPi kameru priamo pre raspberry Pi. Vytlačil som si držiak na osu Z a napojil cez kábel.

[Not a valid template]

Nastavil ju cez raspi config

sudo raspi-config

[Menu]
5 Interfacing Options > P1 Camera > Enable RPi camera

no a potom v nastavení Octoprintu nechať pôvodné default nastavenie

http://127.0.0.1:8080/?action=stream

Lenže pri zázname videa timelapse pri vysokom objekte sa záznam posúval smerom hore po ose Z a vytlačený objekt sa potom nezmestí celý do videa a posúva sa smerom dole čo pre náš krajší záznam nevyhovujúce.

Preto som sa rozhodol, že kameru namontujem priamo na postel, čiže zafixujem osu Z a potom vyriešiť, aby timelapse fotku odfotilo na presnej pozícii. Musel som nájsť kryt na RPi kameru, držiak na postel a držiak na kábel na RPi kameru, aby sa nám častým pohybom postele niekde nezatrhol a nezlomil alebo neodtrhol. Moje riešenie je nasledovné.

[Not a valid template]

 

RPi holder:
RPi case:

No a potom už len použiť ten správny plugin do Octoprintu na dokonalejšie videa a správne ho nastaviť. Ja som namiesto defaultného timelapse použil Octolapse.

Octolapse Tab

No a sním sa dajú nahrávať takéto parádne videá.

No ale to nie je všetko, keďže sa mi nepáčil len pohľad z boku, potreboval som vidieť z výšky a z iného uhla. Preto som si zadovážil ďalšiu kameru, ktorá je kompatibilná a použiteľná pre Raspberry pi. Z celého zoznamu vyšla najlepšie Logitech C270.Lenže s tým bol trošku problém, použiť 2kamery naraz, plus bežiaci Octoprint a kopec pluginov trošku viac zaťažuje procesor. Bolo nutné vytvoriť ďalší cron, ktorý na inom porte bude spúšťať druhú kameru a celé to zabudovať do octoprintu.

Ak chcete aj webovú kameru a podporu časového posunu, musíte si stiahnuť a skompilovať MJPG-Streamer:

cd ~
sudo apt install subversion libjpeg62-turbo-dev imagemagick ffmpeg libv4l-dev cmake
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=.
make

a ešte doinštalujeme požadované balíčky

sudo apt install subversion libjpeg62-turbo-dev imagemagick libav-tools libv4l-dev cmake

No a teraz si skontrolujeme, či sme správne všetko nainštalovali a či nám niečo neháďže chyby:

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www -p 8081"

A mali by sme dostať podobný výstup na obrazovku:

MJPG Streamer Version: svn rev:
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
[...]
o: www-folder-path...: disabled
o: HTTP TCP port.....: 8081
o: username:password.: disabled
o: commands..........: enabled

Ak máme všetko OK možeme pokračovať ďalej. Otvoríme si nastavenia v Octoprinte v menu Webcam & Timelapse a skontrolujeme a otestujeme, či nám správne pracuje RPI kamera s nastavením na port 8080:

Stream URL: /webcam/?action=stream
Snapshot URL: http://127.0.0.1:8080/?action=snapshot
Path to FFMPEG: /usr/bin/ffmpeg

UPOZORNENIE!!!
Ak bežíme na Debian Jessie alebo starší, “Path to FFMPEG” musí byť nastavená na /usr/bin/avconv.

Teraz si nastavíme start/stop systém pre mjpeg-streamer musíme si vytvoriť niekoľko scriptov. Najskôr si vytvoríme /home/pi/scripts/webcam:

#!/bin/bash
# Start / stop streamer daemon

case "$1" in
    start)
        case "$2" in
            1)
                /home/pi/scripts/webcamDaemon1 $3 >/dev/null 2>&1 &
                ;;
            2)
                /home/pi/scripts/webcamDaemon2 $3 >/dev/null 2>&1 &
                ;;
            *)
                echo "Usage: $0 {start|stop} {1|2|all} {low|high}"
                ;;
        esac
        echo "$0: cam_$2 started with quality $3"
        ;;
    stop)
        case "$2" in
            1)
                pkill -x webcamDaemon1
                ;;
            2)
                pkill -x webcamDaemon2
                ;;
            all)
                pkill -x webcamDaemon1
                pkill -x webcamDaemon2
                pkill -x mjpg_streamer
                ;;
        esac
        echo "$0: cam $2 stopped"
        ;;
    *)
        echo "Usage: $0 {start|stop} {1|2|all} {low|high}" >&2
        ;;
esac

a vytvoríme si dva crony skopírovane z:

cd /root/bin
sudo cp webcamd /home/pi/scripts/webcamDaemon1
sudo cp webcamd /home/pi/scripts/webcamDaemon2
cd /home/pi/scripts/

nakoniec si všetky scripty spravíme spustiteľné

chmod +x /home/pi/scripts/webcam
chmod +x /home/pi/scripts/webcamDaemon1
chmod +x /home/pi/scripts/webcamDaemon2

a potom si druhý cron webcamDeamon2 upravíme nasledovne:

sudo nano /home/pi/scripts/webcamDaemon2

zeditujeme riadok z auto na usb, tym pádom prepneme Raspi cameru na USB /dev/video0
zapoznámkujeme riadky:

#if [ -e "/boot/octopi.txt" ]; then
#    source "/boot/octopi.txt"
#fi

upravíme volania kamery na port 8081

./mjpg_streamer -o "output_http.so -w ./www -p 8081" -i "$input"

a upravíme na riadku premennú $kamera na priamo -e “/dev/video1”

# keep mjpg streamer running if some camera1 is attached
while true; do
    if [ -e "/dev/video1" ] && { [ "$camera1" = "auto" ] || [ "$camera1" = "usb" ] ; }; then

po tom si vypneme porty 8080 a 8081:

sudo /sbin/iptables -A INPUT -p tcp -i wlan0 ! -s 127.0.0.1 --dport 8080 -j DROP # for ipv4
sudo /sbin/iptables -A INPUT -p tcp -i wlan0 ! -s 127.0.0.1 --dport 8081 -j DROP # for ipv4

upravíme si konfiguračný súbor pre Octoprint

sudo nano ~/.octoprint/config.yaml

a upravíme habproxy.cfg

sudo nano /etc/haproxy/haproxy.cfg

na riadku zadefinujeme obe kamery

frontend public
        bind *:80
        use_backend webcam1 if { path_beg /webcam1/ }
        use_backend webcam2 if { path_beg /webcam2/ }
        use_backend octoprint_socket if { path_beg /sockjs/ }
        default_backend octoprint

a nakoniec predefinujeme volania kazdej kamery

backend webcam1
        reqrep ^([^\ :]*)\ /webcam1/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080

backend webcam2
        reqrep ^([^\ :]*)\ /webcam2/(.*)     \1\ /\2
        server webcam2  127.0.0.1:8081

A to je všetko, teraz Raspi kamera je na linke a USB kamera na druhej linke:

http://127.0.0.1/webcam1/?action=snapshot
http://127.0.0.1/webcam2/?action=snapshot
Prosím sleduj ma a likni: