Odešla mi IP kamera z Dealextremu. Mám ji namontovanou na podbití střechy ve výšce 6,6 metrů nad zemí, ze střechy garáže je to o trochu míň, ale stejně je jakýkoliv servis kamery krajně otravná záležitost. Sice se nakonec ukázalo, že jenom vypadla konfigurace, ale stejně jsem uvažoval o něčem lepším, a to z následujících důvodů:
- rozlišení – kamera z DX měla pouze VGA
- falešné barvy – kamera je myšlena spíše jako bezpečnostní, okolo objektivu má řadu IR LEDek, které ale z té výšky stejně dolů nedosvítí, jenže díky citlivosti v IR sice poskytuje slušné barvy ve světle zářivek (které v IR moc nezáří), ale na denním světle je například vegetace dočervena a tak.
- lepší přístup – ke všemu kromě kamery samotné (zdroj, ethernet) mám lepší přístup z půdy, než ze žebříku. Krimpovat ethernetový konektor na žebříku opravdu není žádná lahůdka.
- cena – IP kamera s VGA rozlišením se pořídí tak od 70 dolarů dál.
A tím se dostáváme k tématu Raspberry PI. Při cenách webcamů a Raspberry PI jsem se rozhodl, že půjdu touto cestou, a budu mít lepší rozlišení za menší cenu. A někdy do budoucna třeba i více než jednu kameru, čímž nahradím natáčení. A v neposlední řadě se něco naučím. V následujícím textu popíšu, co se mi podařilo a taky s jakými problémy jsem se setkal.
Hardware
O Raspberry PI není třeba hovořit, pořídil jsem několik SD karet Kingston, k těm se ještě vrátím, a po průzkumu webu jsem došel k volbě kamery Logitech C270. Je levná, má slušně vysoké rozlišení a je dobře kompatibilní (podporuje standard USB Video Device Class). USB port Raspberry ji neutáhne, ale pomocí napájeného USB hubu se elegantně vyřeší jak napájení kamery, tak i samotného Raspberry PI.
Software
Vyzkoušel jsem několik linuxových softwarů, konkrétně motion, mjpeg-streamer a fswebcam. Mjpeg-streamer není v repository, musí se kompilovat ze zdrojáků, a i když se mi to podařilo, s výsledkem jsem nebyl spokojen. Možná se k tomuto softwaru ještě vrátím a víc si s ním pohraji, prozatím ale šel k ledu. Motion se mi také podařilo rozchodit, ale došel jsem k tomu samému, co jiní lidé na webu, na jejichž články jsem narazil a podle jejichž návodů jsem postupoval: Není boha rozchodit snímání ve větším rozlišení než 352×288. Díky požadavku na lepší rozlišení než VGA tudy tedy cesta taktéž nevedla. Nakonec jsem zakotvil u fswebcam, jehož instalaci popíšu. Podotýkám, že nejsem linuxový specialista, proto berte tento článek jako námět k diskusi.
Instalace je legrace, po standardním apt-get update/apt-get upgrade/rpi-update (návodů spousty jinde) nainstalujete
sudo apt-get fswebcam
a zbývá vám vytvořit konfigurační soubor a spustit program.
Do souboru /etc/fswebcam.conf dáte něco jako
resolution 800x600
#800x600, 864x480, 960x544, 960x720, 1024x576, 752x416, 1184x656
#verbose
skip 1
jpeg 85
loop 15
font /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
timestamp "%Y-%m-%d %H:%M:%S (%Z)"
title "Logitech C270 - Smrzice (test)"
#subtitle "Logitech C270 - Smrzice"
#info "powered by Raspberry PI 256MB and fswebcam software"
flip h,v
save /run/img.jpg
exec "/home/pi/upload.sh %F_%H-%M-%S"
Položky konfiguračního souboru jsou popsané, vypíchnu jenom pár zajímavostí:
- příkaz flip h,v převrátí oprázek horizontálně i vertikálně, protože kamera je samozřejmě namontovaná vzhůru nohama. A pozor na jednu zákeřnost, záleží na pořadí příkazů. Takže příkaz save je až po flip h,v, dokonce může být použit opakovaně.
- všimněte si, kam ukládám obrázek: Do adresáře /run/. Linuxový purista mi možná nadá, ale místa je tam dost, obrázky z kamery mívají tak maximálně 100KB. Adresář /run/ je totiž v ramdisku. Nebudu ničit SD kartu opakovaným přepisováním. Příkaz exec vyvolá libovolný linuxový příkaz, navíc v řetězci je možno používat formátovací znaky podle konvence strftime. Dávka upload.sh je zde:
curl -T /run/img.jpg -u username:password ftp://muj.server.com
curl -T /run/img.jpg -u username:password ftp://muj.server.com/img$1.jpg
(mimochodem curl je docela schopná utilitka, umí nahrávat nebo stahovat všemi možnými i nemožnými protokoly). První řádek nahraje img.jpg na ftp server vždy pod stejným jménem, abych měl pod jedním URL vždy aktuální obrázek. Druhý řádek ten samý obrázek nahraje na ftp server s datovým kódem ($1 = první parametr), se kterým exec zavolal tu dávku, jméno souboru pak vypadá pro lepší ilustraci takto:
img2013-04-19_15-28-30.jpg
čili 19. dubna 2013 v 15:28:30.
- položky title a timestamp jsou vidět v modrém proužku dole v příkladu, pokud zrušíte komentář u subtitle a info, dostanete v modrém proužku ještě druhý řádek o fous menším fontem.
Program spustíte příkazem
sudo fswebcam -c /etc/fswebcam.conf
Problémy
Bohužel se vyskytují problémy s dlouhodobou stabilitou toho řešení. Příčinou je patrně chyba USB ovladačů u Raspberry PI, a čím víc dat se přenáší, tím spíš je otázka času, než se chyba projeví. Tady se tahají značná data z kamery, a Ethernetové rozhraní je u Rapsberry taktéž interně připojeno na USB. Většinou dojde k vytuhnutí tak 1x za 24-48 hodin, rekord mám 4 dny provozu. Ve fórech okolo Pi se píše, že nový firmware problém vyřešil, evidentně tomu tak ale není, aktualizace linuxu i firmware provádím velmi pravidelně. Navíc jakmile dojde k vypadení sítě, začne Linux logovat chyby, a tady se dostávám ke druhému problému, 4GB karty Kingston jdou do kytek. Syndromy jsou takové, že Raspberry z nich nebootne, přeformátování a nahrání nového image z PC proběhne v pořádku, ale Raspberry během bootu hlásí chyby čtení a nedobootuje do přihlášení. Měl jsem dvě tyto karty, s jednou úspěšnou reklamací tři, a u všech je chování stejné.
8GB Kingston Class 10 drží, i když taková kapacita samozřejmě není potřeba, ledaže bych chtěl fotky ukládat na kartu.
Syndromy vytuhlého USB se projeví spustou hlášek
May 2 17:25:29 raspberrypi kernel: [62709.609600] smsc95xx 1-1.1:1.0: eth0: Failed to write register index 0x00000014
May 2 17:25:29 raspberrypi kernel: [62709.609631] smsc95xx 1-1.1:1.0: eth0: Failed to write HW_CFG_LRST_ bit in HW_CFG
v souboru /var/log/messages (to byla asi příčina úmrtí 4GB SD karet). V článku
https://github.com/raspberrypi/linux/issues/151 se popisuje skript, kterým se dá síťovce „domluvit“, já jsem ovšem problém provizorně vyřešil poněkud humpolácky pomocí rebootu v crontab o každé půlnoci. Tím mám aspoň ozkoušeno, že opravdu vytuhne jen ethernetová komunikace, nikoliv Raspberry jako takové.
Závěr
Spusta věcí by šla vyřešit určitě elegantněji a přivítám diskusi. Třeba vytvoření adresáře s příslušnými právy v /run/, aby se fsebcam nemusel spuštět přes sudo. Nebo automatické spuštění fswebcam po startu počítače. Ale i tak doufám, že článek pomůže někomu, kdo si chce rozchodit kameru, a pokud se setká s problémy jako já, minimálně nebude muset strávit hodiny bádáním, ale smíří se s tím, že problémy tu zatím zkrátka jsou. Osobně mně to velmi mrzí, protože díky přetrvávající nestabilitě zatím Raspberry PI není vhodné k tomu, na co jsem se těšil nejvíc: Levné zařízení s vysokou inteligencí se spotřebou, která nezatíží peněženku, vhodné jako „mozek“ pro automatizaci, logování, eventuálně mailování všeho možného, třeba pomocí Arduin coby hardwarových „prstů“.
S tím přenosem dat se mi to nějak nezdá, sice se mi nepovedlo vyčíst jaká je frekvence získávání dat z kamery a upload na web, ale zas tak moc vysokej traffic to bejt nemůže. Moje raspberry (první revize) mi tu teď běží jako NAS už 40. den v kuse a bylo přes něj přenesenejch asi 50 GB a není to výjimka že běží několik týdnů bez problémů, pak většinou následuje restart kvůli novýmu jádru.
Parametr loop 15 říká, že se opakuje akce každých 15 vteřin, čili 4x za minutu se děje načtení z kamery, a 2x upload (dva řádky curl). Údajně ty problémy trochu umocňuje, když je připojení přes USB hub, ale to jsou všechno věci, vyčtené na fórech, které nemám jak ověřit. Často to taky bývá sváděno na zdroj, ale mám 2A zdroj pro USB hub Belkin, ještě jsem zkoušel úplně jiný USB hub, chování stejné. Umře ethernet, viz chyba v článku, ale OS jinak žije.
Ja mam take zkusenosti s umiranim datoveho spojeni, ale pres wifi. Takze sem si udelal skript, ktery kazdych 10min pingne router a pokud se nepodari, tak reinicializace wifi a info s casem zapise do log souboru. Vzhledem k tomu ze uz nevyuzivam RPI pro velke toky dat (v usb je jen wifi a tiskarna) tak dle tohoto zaznamu jsou posledni dva vypadky od sebe cca 1 mesic.
Pouziti Raspi jako NAS pres wifi (dostatecne silny USB HUB co napejel Y-USB raspi + wifi a USB disk s vlastnim zdrojem) se diky vypadkum ukazalo byt jako nepouzitelne.
Mohu vas požádat o ten skript? Snazim se o to same, i když s tim rozdílem, ze když to spojeni (=internetove, nikoliv GW) umre, tak se pripojuji na jinou open sit v dosahu ( tj. vyhledat sit, zjisti IP adresu pres DHCP ). Zatím to funguje tak z 90% – stále to ladim.
#!/bin/sh
#DEBUG=YES
GOOGLE=8.8.8.8
connection_test (){
echo „`date +%d-%m-%y\ %H:%M:%S` TEST ping $1“
SUCC=`ping $GOOGLE -c 4 -q | awk ‚{if($1==4){print $4}}’`
if [ „$SUCC“ != „4“ ]; then
# Neni pristup na Google
echo „`date +%d-%m-%y\ %H:%M:%S` NO INTERNET ACCESS“
RV=1
else
echo „`date +%d-%m-%y\ %H:%M:%S` OK … INTERNET ACCESS“
RV=0
fi
return $RV
}
echo „`date +%d-%m-%y\ %H:%M:%S` START“
connection_test $GOOGLE && exit 0
cd ~/net
WLAN=`/sbin/ifconfig -a | grep wlan0 | awk ‚{ print $1 }’`
if [ „$WLAN“ = „“ ]; then
# neexistuje wlan0 – nejspise v USB neni zastrceny
echo „`date +%d-%m-%y\ %H:%M:%S` NO WLAN ADAPTER FOUND“
exit 1
else
# vystup vsech dostupnych nezabezpecenych ESSID
ESSIDS=`sudo /sbin/iwlist wlan0 scanning | awk -F ‚[ :=()“]+‘ ‚/(ESS)/{ printf $3″ “ } /Encryp/{ print $4 }‘ | grep off | awk ‚{print $1;}’`
if [ „$DEBUG“ = „YES“ ]; then
ESSIDS=“linksys“
echo „`date +%d-%m-%y\ %H:%M:%S` DEBUG MODE … ESSIDS set to $ESSIDS“
fi
echo „`date +%d-%m-%y\ %H:%M:%S` OK … WLAN adapter found ( ESSID – $ESSIDS )“
fi
for ESSID in $ESSIDS; do
sudo ip link set wlan0 down
PID_WPA=`ps -ef | grep wpa_supplicant | grep wlan0 | awk ‚{print $2;}’`
if [ „$PID_WPA“ != „“ ]; then
echo „`date +%d-%m-%y\ %H:%M:%S` KILL wpa_supplicant process ($PID_WPA)“
sudo kill -9 $PID_WPA
fi
PID_DHCLIENT=`ps -ef | grep dhclient | grep wlan0 | awk ‚{print $2;}’`
if [ „$PID_DHCLIENT“ != „“ ]; then
echo „`date +%d-%m-%y\ %H:%M:%S` KILL dhclient process ($PID_DHCLIENT)“
sudo kill -9 $PID_DHCLIENT
fi
echo „`date +%d-%m-%y\ %H:%M:%S` RECONNECTING to $ESSID“
# nejdrive zjistim, zda mam sit ve wpa_supplicant.conf, pokud ne, tak to tam pridam
WPA_SUPPLICANT=`sudo cat /etc/wpa_supplicant/wpa_supplicant.conf | grep ssid | grep $ESSID | wc -l`
if [ „$WPA_SUPPLICANT“ = 0 ]; then
echo „`date +%d-%m-%y\ %H:%M:%S` ADD ESSID TO /etc/wpa_supplicant/wpa_supplicant.conf“
echo „ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev“ > /etc/wpa_supplicant/wpa_supplicant.conf
echo „update_config=1″ >> /etc/wpa_supplicant/wpa_supplicant.conf
echo “ “ >> /etc/wpa_supplicant/wpa_supplicant.conf
echo „network={“ >> /etc/wpa_supplicant/wpa_supplicant.conf
echo “ ssid=\“$ESSID\““ >> /etc/wpa_supplicant/wpa_supplicant.conf
echo “ key_mgmt=NONE“ >> /etc/wpa_supplicant/wpa_supplicant.conf
echo „}“ >> /etc/wpa_supplicant/wpa_supplicant.conf
else
echo „`date +%d-%m-%y\ %H:%M:%S` ESSID FOUND IN /etc/wpa_supplicant/wpa_supplicant.conf“
fi
sleep 2
sudo wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -d -B > ./wpa_supplicant.$ESSID
sleep 30
echo „`date +%d-%m-%y\ %H:%M:%S` wpa_supplicant for $ESSID STARTED, iwconfig `/sbin/iwconfig wlan0 | grep ESSID | awk -F ‚[ :=()“]+‘ ‚/(ESS)/{ printf $5″ “ }’` configured“
sleep 2
sudo dhclient -v -pf /run/dhclient.wlan0.pid -lf /var/lib/dhcp/dhclient.wlan0.leases wlan0 -nw > ./dhclient.wlan0.$ESSID
echo „`date +%d-%m-%y\ %H:%M:%S` dhclient STARTED“
sleep 10
echo „`date +%d-%m-%y\ %H:%M:%S` WLAN IP: `/sbin/ifconfig wlan0 | grep „inet addr“ | awk ‚{printf $2}‘ | awk -F ‚:‘ ‚{printf $2}’`“
# Nyni se podivam, zda to nahodou nepomohlo a uz nejsme na internetu
connection_test $GOOGLE && exit 0
done
echo „`date +%d-%m-%y\ %H:%M:%S` DONE“
exit 0
Hmm divné mám kameru založenou na podobném principu, akorát tahám fotky z kamery jednou za minutu a jednou za minutu je tahám z raspi na web a běželo mě to takhle tak 14 dní, než sem se na webku vykašlal a použil pi na něco smysluplnějšího araspi to sem fotil do HD, tak nevím.,,,
Navštivte web http://www.RaspberryPi.cz a podělte se o své vědomosti
http://i01.i.aliimg.com/img/pb/879/680/280/280680879_106.jpg
http://www.ebay.com/itm/FAST-POST-Samsung-N130-Webcam-Camera-Board-Module-VC0345TLNAA-BA59-02608A-/330882720334?pt=UK_Computing_Other_Computing_Networking&hash=item4d0a25a24e
zdravim
neskušali ste na raspberry pi Camera moduly určene do notebookov,,
daju sa kupit cca od 1,5eura.
ja som kupil 3 za 7eura z Anglicka kde mam brata, čiže poštovne zadarmo,
su menšie a ľahšie a maju štandart USB
ake maju rozlišenie pred objednanim ťažko zistiť,-0,3/1,3/2Mpx…maju rôzne konektory,,bral som take kde je usporiadanie ako USB,prve dva je ZEM-obrazok hore,,Na XP sa same naištaluju,na RASPI som ešte ani netestoval tieto ,na stream vraj treba s UVC,,
diky
http://www.czc.cz/canyon-cnr-wcam113/68117/produkt som mal kocky na fotkach
http://h30434.www3.hp.com/t5/image/serverpage/image-id/7671iE28F0FA46735BB1A/image-size/original?v=mpbl-1&px=-1
Ahoj, ja som vybral webku z môjho starého nťasu. napájkoval na USB kábel, a ide v pohode s motion.
http://www.sunbizhosting.com/~spiral/Webcam/
Ja som nemal problémi s ovládačmi. Na win7 všetko OK. Raspi to isté.
Výrobce kamery zjistíš přes lsusb, a pokud jde o podporované režimy, dají se zjistit pomocí příkazu v4l2-ctl –list-formats-ext|less
ovšem musíš si napřed nainstalovat balíček
sudo apt-get install v4l-utils
Dobrý den,
chtěl bych se zeptat, zda lze využít RPi Cameru místo USB kamery.
Díky
Dobrý návod. Vyzkoušel jsem a funguje. Díky!
Jen tam chybí poznámka, že je potřeba nastavit oprávnění pro upload.sh
sudo chmod +x /home/pi/upload.sh
Ještě bych se chtěl podělit o dobrou zprávu:
Motion záhadně začalo fungovat s vyšším rozlišením než 352×288. Osobně jsem s verzí 3.2.12 vyzkoušel rozlišení 640×480 a dokonce 1280×1024 ale to už se mi zdálo, že při 3 FPS už RPi nestíhá.
Každopádně jsem rád, že už je motion konečně použitelné pro detekci pohybu.
Chci se zeptat Ládínka jak to dopadlo se stabilitou RPi + C270. Chtěl bych si nainstalovat tuhle kombinace vně domu. Případně nějaké jiné cam řešení s RPi?
Dlouhodobá stabilita se ukázala špatná. Sice jsem každou noc CRONem rebootoval PI, což výpadky síťové komunikace většinou napravilo, ale po nějaké době PI vždycky vytuhlo. Musel jsem ho vždycky demontovat z půdy a snést dolů, protože HDMI monitor na půdu jaksi nechci obětovat (teď jsem objednal na DX převodník HDMI na VGA, tak to bude s monitorem lepší), a vždycky byl rozbořený filesystem. Přeimagovavání operačního systému to zase na nějakou dobu vyřešilo, a tak pořád dokola. Bavím se o úplně první verzi PI s 256MB paměti. Ještě mám novější 512ku, tak zkusím tu, jestli je to kusové. A taky mám koupenou „oficiální“ kameru, zkusím to vestavět do pouzdra falešné kamery, co se běžně prodávají za pár stovek. Ale ještě jsem si s tím nehrál.
Vracím se k tématu. Od doby, co jsem psal článek, jsem udělal dvě věci. Zaprvé jsem koupil originální kameru PI, a nejprve ji testoval cronem/raspistill. Ukázalo se to absolutně stabilní. Teď nedávno jsem rozchodil na PI motion. A zadruhé, na půdu k Logitechu jsem dal HP T5530 (tenký klient, původně s WinCE – dal jsem do něj 8GB flash a nainstaloval Debian), rozchodil FSWEBCAM a považte, výtuhy se objevovaly stejně jako u Pi. Tak jsem pro velký úspěch rozchodil i motion, a měl jsem obrázky až 1280×960. Plánuju o tom napsat další článek, mám docela dost dalších poznatků.
Kameru zatím nemám ale budu mít k robotovi. Co jsem četl několik řešení od sledování zvěře, snímkování krmítka ptáků, vývoj kytky a podobně pak vždy si uživatel stěžoval že mu po čase celé RPi zatuhlo. Svorně všichni. prostě na tyhle věci to není. Nechápu lidi co si na tuhle hračku napojí barák. Jako by neexistovaly stabilní odzkoušené věci. Například fotopasti. Nebo kamery s velmi pomalým natáčením. Prostě věci které už byly vymýšleny s tím účelem ke kterému slouží. RPi bylo vymýšleno jako výukový nástroj pro děcka a ne proto ab tomu někdo svěřil svůj život třeba tím, že vyhodí z auta jeho počítač a napojí tam RPI jak jsem už viděl na nějakém videu. A nebo řízení celého baráku včetně jeho bezpečnosti, zámků ve dveřích a akvária a tisíci litry vody.
Tohle se mi dělo taky, ale pak jsem rozchodil fswebcam na x86 tenkém klientovi a tuhlo to stejně, naopak po rozchození motion (viz můj jiný příspěvek na tomto webu) mi jedou dvě RasPI s kamerami, jedna USB webka Logitech a druhá original RasPI, desítky dnů bez záseku. Vývojáři na Debianu za tu dobu, co je Pi venku, odvedli neskutečný kus práce, ale souhlasím s tím, že život bych tomu nesvěřil (to ostatně ani jiným platformám :-)).
Chcel by som si taktiez spravit z Raspi bezpecnostnu kameru, ale neviem sa rozhodnut ktory kamerovy modul do CSI kupit. Ci klasicku, alebo NOIR.
Co som pozeral tak s tym NOIR aj tak v noci vela neziskam, kedze vzdialenejsie objekty to aj tak nevidi. Nemate niekto s obomi skusenosti? Hlavne v noci?
Pripadne ako vyriesit viditelnost v noci.