Portál AbcLinuxu, 25. dubna 2024 15:58


Dotaz: Debian a Octoprint usb webcam

5.7.2019 21:48 Georgov
Debian a Octoprint usb webcam
Přečteno: 842×
Odpovědět | Admin
zdravím všechny

Prosím o radu a pomoc


jsem trochu pokročilý začátečník a nadšenec do 3D tisku, spíše se zajímám o linux okrajově jako uživatel. Oprášil jsem  starý neviužitý Asus EEbox B202 na který jsem nainstaloval systém  debian 4.9.0-9-686-pae
 bez grafického prostředí pouze terminál aby byl výkon PC co největší, ovládání je přes ssh konzoli PuTTY po místní síti z win7. Dále jsem podle tohoto návodu 

(https://community.octoprint.org/t/setting-up-octoprint-on-a-raspberry-pi-running-raspbian/2337) 


doinstaloval tiskový server Octoprin 1.3.11 a zprovoznil tak že v sítí mám funkční server pro 3D tiskárnou s vytížením pc při tisku okolo 5% což je pěkné. 


A teď co mám za problém:

Zadrhnul jsem se u webcam serveru (nebo programu), používám običejnou usb webcamerku. spíše nevím nebo jsem nepochopil jak přidat mjpeg_streamer server (program) do debianu správně tak, aby se spustil při zapnutí PC a až po Octoprintu nebo je to vcelku jedno???. Mám nainstalováno správně podle návodu toto:

Optional: Webcam

If you also want webcam and timelapse support, you'll need to download and compile MJPG-Streamer: (Pokud chcete také webovou kameru a podporu pro timelapse, musíte si stáhnout a zkompilovat 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


toto se také povedlo otevřu adresář "cd mjpg-streamer/mjpg-streamer-experimental" a tam zadám do terminálu příkaz pro spuštění ( programu? )
" ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" " 


toto je v terminálu "


pi@debian:~/mjpg-streamer/mjpg-streamer-experimental$ ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: -1 i: Format............: JPEG i: TV-Norm...........: DEFAULT UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25) o: www-folder-path......: disabled o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled "

usb camera zrejmě nepodporuje skoro nic ale v Octoprintu se spustí v pořádku video streamuje http://192.168.0.102:8080/?action=stream nastavení na webovém rozhraní jede ffmpeg taky funguje /usr/bin/ffmpeg a po ukončení 3D tisku se vytvoří timelapse video jak má. Takže po tud by se dalo říci, že jsem byl úspěšný.

Podle návodu jsem dumal jak to spouštění při startu systému udělat, ale nejsem z toho nikterak chytrý píšou v návodu toto: If you want to be able to start and stop mjpeg-streamer from within OctoPrint, put the following in (Chcete-li spustit a zastavit program mjpeg-streamer v rámci systému OctoPrint, postupujte následovně) To by nebylo špatné zprovoznit /home/pi/scripts/webcam:

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

case "$1" in
start)
/home/pi/scripts/webcamDaemon >/dev/null 2>&1 &
echo "$0: started" ;;
stop)
pkill -x webcamDaemon
pkill -x mjpg_streamer
echo "$0: stopped"
;;
*)
echo "Usage: $0 {start|stop}" >&2
;;
esac

pokračování v návodu

no a tady už tápu protože návod je zjevně udělaný pro raspberry pi což jsem nezkoušel i když jedno pi 1 mám ale kvůli malému víkonu jsem od něj upustil . Složku scripts a webcam v této instalaci nemám . Znamená to že musím vše vytvořit podle tohoto návodu a jak ? a nebo uplně jinak a nebo stačí nějak jednoduše přidat program (konkrétně toto ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so") do třeba systemD při spuštění a jak?, aby to bylo správně.?(nemám zkušenosti nikdy jsem to takto nedělal) Program nepotřebuji nutně spouštět z webového rozhraní v Octoprintu, stačí když pojede pořád tak jako když ho spustím ručně v terminálu (a tady zase) nevím proč nejde v terminálu program ukončit q F10 exit nebo nějaký jiný způsob prostě jede pořád dokud nezavřu terminál v putty natvrdo alt F4 s upozorněním na přerušení.

Děkuji za každou dobrou radu a pomoc třeba tento problém někdo už řešil ale nenašel jsem a když tak ne konkrétně tento.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.7.2019 22:19 debian+
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Odpovědět | | Sbalit | Link | Blokovat | Admin
UPRAVIL SOM JEHO PRISPEVOK PRE LEPSIE CITATELNOST A SPRAVNOST zdravím všechny

Prosím o radu a pomoc

jsem trochu pokročilý začátečník a nadšenec do 3D tisku, spíše se zajímám o linux okrajově jako uživatel. Oprášil jsem starý neviužitý Asus EEbox B202 na který jsem nainstaloval systém debian 4.9.0-9-686-pae bez grafického prostředí pouze terminál aby byl výkon PC co největší, ovládání je přes ssh konzoli PuTTY po místní síti z win7. Dále jsem podle tohoto návodu, doinstaloval tiskový server Octoprin 1.3.11 a zprovoznil tak že v sítí mám funkční server pro 3D tiskárnou s vytížením pc při tisku okolo 5% což je pěkné.

A teď co mám za problém:

Zadrhnul jsem se u webcam serveru (nebo programu), používám običejnou usb webcamerku. spíše nevím nebo jsem nepochopil jak přidat mjpeg_streamer server (program) do debianu správně tak, aby se spustil při zapnutí PC a až po Octoprintu nebo je to vcelku jedno???. Mám nainstalováno správně podle návodu toto:

Optional: Webcam

If you also want webcam and timelapse support, you'll need to download and compile MJPG-Streamer:
(Pokud chcete také webovou kameru a podporu pro timelapse, musíte si stáhnout a zkompilovat 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
toto se také povedlo otevřu adresář "cd mjpg-streamer/mjpg-streamer-experimental" a tam zadám do terminálu příkaz pro spuštění ( programu? ) "./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" toto je v terminálu
pi@debian:~/mjpg-streamer/mjpg-streamer-experimental$ ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"
MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: -1
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
 o: www-folder-path......: disabled
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled
"
usb camera zrejmě nepodporuje skoro nic ale v Octoprintu se spustí v pořádku video streamuje http://192.168.0.102:8080/?action=stream nastavení na webovém rozhraní jede ffmpeg taky funguje /usr/bin/ffmpeg a po ukončení 3D tisku se vytvoří timelapse video jak má. Takže po tud by se dalo říci, že jsem byl úspěšný.

Podle návodu jsem dumal jak to spouštění při startu systému udělat, ale nejsem z toho nikterak chytrý píšou v návodu toto: If you want to be able to start and stop mjpeg-streamer from within OctoPrint, put the following in (Chcete-li spustit a zastavit program mjpeg-streamer v rámci systému OctoPrint, postupujte následovně) To by nebylo špatné zprovoznit /home/pi/scripts/webcam:

#!/bin/bash
# Start / stop streamer daemon
case "$1" in
    start)
        /home/pi/scripts/webcamDaemon >/dev/null 2>&1 &
        echo "$0: started"
        ;;
    stop)
        pkill -x webcamDaemon
        pkill -x mjpg_streamer
        echo "$0: stopped"
        ;;
    *)
        echo "Usage: $0 {start|stop}" >&2
        ;;
esac
pokračování v návodu

no a tady už tápu protože návod je zjevně udělaný pro raspberry pi což jsem nezkoušel i když jedno pi 1 mám ale kvůli malému víkonu jsem od něj upustil . Složku scripts a webcam v této instalaci nemám . Znamená to že musím vše vytvořit podle tohoto návodu a jak ? a nebo uplně jinak a nebo stačí nějak jednoduše přidat program (konkrétně toto ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so") do třeba systemD při spuštění a jak?, aby to bylo správně.?(nemám zkušenosti nikdy jsem to takto nedělal) Program nepotřebuji nutně spouštět z webového rozhraní v Octoprintu, stačí když pojede pořád tak jako když ho spustím ručně v terminálu (a tady zase) nevím proč nejde v terminálu program ukončit q F10 exit nebo nějaký jiný způsob prostě jede pořád dokud nezavřu terminál v putty natvrdo alt F4 s upozorněním na přerušení.

Děkuji za každou dobrou radu a pomoc třeba tento problém někdo už řešil ale nenašel jsem a když tak ne konkrétně tento.

5.7.2019 22:34 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Děkuji za úpravu textu pořád se učím. Používám celý život mrkvosoft tak se není čemu divit :-)
5.7.2019 22:36 debian+
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bezne sa pouziva Debian (testing), nie stretch (tj. stable).

A k spusteniu po starte. V navode je skript pre stare spustanie. Ten sa uz uz vychodiskovo nepouziva na spustanie a od Debian 8 sa pouziva ako vychodiskovy na spustanie. Prikazy na spusteni resp. prikaz, musis prepisat na systemd. Vid tuna.

Pokial mas ten prikaz, tak daj do systemd. A systemd sa postara o ukoncenie a spustenie.

Program nemozes ukoncit, lebo je tak spraveny. Takto ukoncene prikaz ukoncis cez prikazy kill (CLI), killall (CLI) alebo htop (GUI; klavesa F9 a SIGTERM - informuje o ukonceni programu, alebo SIGKIL L - natvrdo ukonci proces).

Lebsie je ho spustit na pozadi:
# normalne spusti prikaz
bash skript.sh

# skript spusti na pozadi
bash skript.sh &
Pokial chces, aby prikaz bezal aj po odhlaseni v konzole, pouzi program screen.
6.7.2019 01:00 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Odpovědět | | Sbalit | Link | Blokovat | Admin
Oprášil jsem
neviužitý
običejnou
víkonu
Krome Asusu doporucuji oprasit take znalosti ceskeho jazyka.
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
6.7.2019 01:02 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
V tom "Oprasil jsem" chyba neni, to jsem tam napsal kvuli tomu oprasovani...
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
6.7.2019 09:03 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
A opravdu. Rád bych to opravil, ale nějak jsem nenašel jak se tady leze do úpravy článku. Ale je to vtipné když mně někdo upozorňuje na chybu a sám nepoužívá háčky čárky.....
Jendа avatar 6.7.2019 16:27 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Odpovědět | | Sbalit | Link | Blokovat | Admin
Osobně mám Octoprint a mjpg-streamer nastavený následovně:

1) vyrobil jsem dvě systemd unity: /etc/systemd/system/stream.service a /etc/systemd/system/print.service, s následujícím obsahem:
# /etc/systemd/system/stream.service
[Unit]
Description=stream
 
[Service]
Type=simple
User=root
ExecStart=/usr/bin/screen -S stream -Dm /root/stream.sh
WorkingDirectory=/root
 
[Install]
WantedBy=multi-user.target


# /etc/systemd/system/print.service
[Unit]
Description=print
 
[Service]
Type=simple
User=root
ExecStart=/usr/bin/screen -S print -Dm /root/print.sh
WorkingDirectory=/root
 
[Install]
WantedBy=multi-user.target
2) Ty skripty dělají následující:
#!/bin/bash
cd mjpg-streamer/mjpg-streamer-experimental
./mjpg_streamer -i "./input_raspicam.so -quality 60" -o "./output_http.so" # tady si uprav ty své parametry
#!/bin/bash
for i in `seq 1 3`; do
  sleep 10
  ntpdate europe.pool.ntp.org # tohle asi nepotřebuješ, já to spouštím na Raspberry kde je problém s časem
done
~/OctoPrint/venv/bin/octoprint serve --iknowwhatimdoing
nezapomeň jim po vytvoření nastavit chmod +x.

3) systemctl enable print.service, systemctl enable stream.service
Program nepotřebuji nutně spouštět z webového rozhraní v Octoprintu, stačí když pojede pořád tak jako když ho spustím ručně v terminálu
Doporučuji kouknout na program screen, který ti umožní spustit to tak, abys mohl Putty zavřít (počítač ze kterého to spouštíš vypnout, …) a stále to běželo.
nevím proč nejde v terminálu program ukončit q F10 exit nebo nějaký jiný způsob
V Linuxu se programy ukončují Ctrl+C, případně násilněji Ctrl+\.
Já to s tou denacifikací Slovenska myslel vážně.
6.7.2019 21:39 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Děkuju moc za návod.
Takže pokud to chápu správně vytvořím soubor 
stream.service a print.service třeba ve složce uživatel a  otevřu si ho třeba v nano a vložím do těchto dvou souborů tvůj skript. 
A po uložení skriptu v nano napíšu chmod +x. 

Pak napíšu pro aktivaci těchto skriptů toto :

systemctl enable print.service, systemctl enable stream.service. 

A mělo by to běžet.?

Je to takto správně?
 Jak budu mít čas vyzkouším. 
            
6.7.2019 23:44 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Aha sorry samozřejmě že ty soubory vytvořím v etc viz bod 1 a ne ledabyle.
7.7.2019 06:14 debian+
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Vytvor hocikde, ale nezabudni potom správne nakopírovať do /etc.
11.7.2019 21:19 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Ahoj Tak teď tak trochu tápu. Mám vyzkoušeno a myslím že jsem úspěšně vytvořil systemd unit viz 1) pak jsem je přidal do práv sudo chmod +x stream.service a dále sudo chmod +x stream.print

Tady po tud myslím že tomu rozumím

a teď k tomu bodu 2) trochu nevím co s tím. Mám to chápat tak že se při vytvoření těch unit systemd nainstaluje tento skript #!/bin/bash ten je ve složce /root/stream.sh,který si pak musím otevřít v nano a vložit tam toto cetsa k souboru cd mjpg-streamer/mjpg-streamer-experimental ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" podle bodu 2) ?

Ješte to jdu zkoušet, abych přišel na ten princip.

Program screen jsem nainstaloval a spuštění mjpg-streamer jede v pohodě i po zavření Putty takže super. Díky

12.7.2019 20:36 Georgov
Rozbalit Rozbalit vše Re: Debian a Octoprint usb webcam
Asi jsem na to kápnul, ale mám to trochu jinak než ty, ale funguje to. Tak snad to je správně.(ale co je správně že :-) )

1) vytvořil jsem si skript spustitelný v
bashi
pro spuštění programu
mjpg-streamer
pod názvem
stream.sh
v textovém programu
nano

toto je obsah scriptu:
#!/bin/bash
cd /home/pi/mjpg-streamer/mjpg-streamer-experimental
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so" # tady si upravím parametry co potřebuji
a uložím ho do adresáře -
pi@debian:/usr/local/bin
nastavil jsem přístupová práva zadáním -
chmod a+x stream.sh
ověřil jsem si jeho funkčnost jednoduše příkazem
bash stream.sh
tím se spustil program
mjpg-stream
a usb camerka začala fungovat v octoprintu.

2) následovalo vytvoření

systemd
unity opět v programu
nano
který jsem vytvořil v adresáři -
pi@debian:/etc/systemd/system
s názvem -
stream.service
a uložil

toto je obsah toho scriptu:

# /etc/systemd/system/stream.service
[Unit]
Description=stream

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/stream.sh  # toto je cesta ke skriptu toho bashe
#WorkingDirectory=/root  

[Install]
WantedBy=multi-user.target

3)pro start unity jsem zadal -

sudo systemctl start stream
, pro aktivaci unity po startu systému -
sudo systemctl enable stream
, a po restartování systému a následném ověření v htop už na mě pěkně kouká
/bin/bash /user/local/bin/stream.sh
s funkčním
mjpg-stream

Díky moc za pomoc. Třeba toto někomu pomůže jako to pomohlo mě. Někdy stačí od někoho nakopnout a trochu se do toho ponořit.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.