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.
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]
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.
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