Valvontakamerajärjestelmä halvalla
Halusin rakentaa omakotitalooni halvalla kelvollisen valvontakamerajärjestelmän. Aloin etsiä suhteellisen laadukkaasta kuvaa antavia IP kameroita Kiinasta. Ebaystä löysinkin noin 20€ maksavan hyvin pienen 720P IP kameran. Hieman epäillen tilasin, että katsotaan onko tästä mihinkään. Aikanaan kamera tulikin ja aloin tutkia sitä. Kuvanlaatu oli yllättävän hyvä niin halvaksi kameraksi.
Ensimmäiseksi tutustuin kameraan ja löysinkin ipcamtalk.comista kestelun juuri kyseisistä kameroista. Sieltä löysin linkin tuoreimpaan firmwareen ja hallintaohjelmistoon (CMS). Tuorein firmware löytyy aina täältä: https://pan.sohu.net/f/MTY2NzYsaGRkaWQ.htm Ja tuorein CMS puolestaan täältä: https://pan.sohu.net/f/MTY4MTUsaGR1aHE.htm
CMS:llä ensimmäiseksi configuroin kameraan kellonajat suomalaiseen tyyliin, vaihdoin IP osoitteen haluamakseni (oletuksena 192.168.1.10) ja säädin videostreamien laadut sopiviksi. Toisen streamin laitoin mahdollisimman hyvälaatuiseksi tallennusta varten ja toisen hieman heikommaksi, etäkatselua varten.
Videostreamien suorat urlit löytyi inspectorilla kameran web käyttöliittymästä. Web käyttöliittymä on tarkoitettu IE käyttäjille, niinkuin valitettavan usein IP kameroissa on ollut tapana. Käytän VLC:tä streamien katseluun suorilla rtsp osotteilla:
rtsp://192.168.1.10:554/user=admin&password=&channel=1&stream=0.sdp?real_stream--rtp-caching=100 rtsp://192.168.1.10:554/user=admin&password=&channel=1&stream=1.sdp?real_stream--rtp-caching=100
Itse configuroin niin, että stream 0 on parempilaatuinen ja 1 heikompilaatuinen etäkatselua varten.
Testasin myös kameroiden automaattitallennus- ja hälyytystoimintoja, mutta ne eivät oikein toimineen hyvin.
Asennus POE injektorilla
Asensin kameran ulos ikkunan yläosaan, jossa siihen ei vesi suoraan pääse satamaan (paitsi tosi kovalla kelillä). Kamerahan ei ole varsinaisesti mitenkään sään kestävä, eli asennuspaikka kannattaa valita huolella. Kameraanhan voisi myös tursottaa jotain silikonia tai kuumaliimaa paremman tiiveyden toivossa.
Virransyötön päätin viedä kameralle 30 metrisen ethernetkaapelin ylimääräisen parin mukana passiivisen POE injektorin avulla. Sen ajatuksena on se, että lähtöpäässä verkkokaapeliin vapaaseen pariin syötetään jännite mukaan ja loppupäässä jännite otetaan kaapelista erilleen ennen kameraa. Tässä siis etuna se, että virtalähde voidaan sijoittaa sisätiloihin ja säästytään virtakaapelin asennukselta. Kamera tarvitsee 12V, mutta näin pitkällä kaapelilla jouduin käyttämään 15V virtalähdettä jännitehäviöiden vuoksi.
Kaapeleita varten otin irti kaksi seinälautaa, jotta sain POE injektorin ja kaapelit piiloon. Kaapeloinnin kytkimelle vedin seinälaudoituksen alapuolella piilossa.
Etäkatselu VPN:llä
Kätevin tapa valvontakamerastreamin katselemiseen oli käyttää Raspberry Pi 2:ssa olemassaolevaa VPN verkkoa, koska kamerat ovat lähiverkossa NATin takana ulkoverkosta suojassa. Tämän jälkeen pystyn siis katsomaan samassa VPN verkossa olevalla kännykälläni ja läppärilläni streamia mistä tahansa.
Porttiohjauksen toteutin iptablesilla. Aluksi porttiohjaus pitää enabloida komennolla:
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Kannattaa vielä laittaa porttiohjaus oletuksena päälle bootin jälkeen. Se tapahtuu tiedostossa /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
Seuraavaksi porttiohjauksen säännöt luodaan tiedostoon /etc/iptables.up.rules
Alla olevissa säännöissä tun0 on VPN tunnelin interface ja 192.168.1.21 on IP kameran osoite. Portti 554 on rtsp protokollan oletusportti. Jos käytössä on useampia vastaavia kameroita, voi dport parametriin laittaa portiksi esim. 555, mutta kohdeportiksi oikea 554. Tällöin sama kone voi ohjata liikennettä useammalle eri kameralle.
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [2:128] -A PREROUTING -i tun0 -m tcp -p tcp --dport 554 -j DNAT --to-destination 192.168.1.21:554 -A PREROUTING -i tun0 -m udp -p udp --dport 554 -j DNAT --to-destination 192.168.1.21:554 -A POSTROUTING -d 192.168.1.21 -o eth0 -j MASQUERADE *filter :INPUT ACCEPT [1372:157627] :FORWARD ACCEPT [28:1680] :OUTPUT ACCEPT [932:149788] -A FORWARD -d 192.168.1.21 -p tcp -m tcp --dport 554 -j ACCEPT -A FORWARD -s 192.168.1.21 -p tcp -m tcp --sport 554 -j ACCEPT -A FORWARD -d 192.168.1.21 -p udp -m udp --dport 554 -j ACCEPT -A FORWARD -s 192.168.1.21 -p udp -m udp --sport 554 -j ACCEPT
Porttiohjaussäännöt otetaan käyttöön:
iptables-restore < /etc/iptables.up.rules
Säännöt saa ladatua automaattisesti käynnistyksen yhteydessä, kun luo tiedoston /etc/network/if-pre-up.d/iptables:
#!/bin/sh #This script restores iptables upon reboot iptables-restore < /etc/iptables.up.rules exit 0
Tallennus ja viikkokierto
Videon tallennukseen päätin käyttää 2TB USB asemaa. Tein scriptin Raspberry Pi:lle, joka tallentaa yhteen tiedostoon 8 tuntia kerrallaan, jonka jälkeen poistetaan kaikki yli 7 päivää vanhat tallenteet ja jatketaan taas tallennusta uuteen tiedostoon. Tämän toteutin VLC:n komentoriviversiolla, eli cvlc:llä. Kameralta tulevaa videostreamia ei käsitellä mitenkään, vaan kopioidaan semmoisenaan USB levylle tiedostoon. Tämä ei vie kuin ~7% CPU tehoista Raspberry Pi 2:lta.
Seuraavat scriptit ja muut tiedostot luodaan suoraan usb levylle hakemistoon /mnt/usblevy/valvontakamera
Aluksi luodaan soittolistatiedosto VLC:lle, jossa on videostreamin osoite, Etupiha1.vlc:
NumberOfEntries=1 File1=rtsp://192.168.1.21:554/user=admin&password=&channel=1&stream=0.sdp?real_stream--rtp-caching=100 Title1=Etupihan valvontakamera 1
Sitten luodaan varsinainen tallennusscripti recorder1.sh
Scriptin alussa tarkistetaan, onko yli viikon vanhoja tallenteita ja poistetaan jos löytyy. Sitten käynnistetään varsinainen tallennus 8 tunnin ajaksi. Sen jälkeen odotetaan sekunti ja aloitetaan taas alusta. Sekunnin odottelu siksi, että jos tallennus ei jostain syystä lähde pyörimään, niin hillitään loopin vauhtia hieman.
#!/bin/bash VLC="cvlc -vvv" while true do find Etupiha1*.mpg -mtime +7 -exec rm {} \; now=`date +"%d.%m.%Y %R"` echo "$now - Käynnistetään tallennus Etupiha1" bash -c "$VLC Etupiha1.vlc --sout '#standard{mux=ps,access=file{no-overwrite},dst=Etupiha1 $now.mpg}' -I rc --run-time=28800 vlc://quit ;" sleep 1 done
Muista antaa tallennusscriptille ajo-oikeudet
chmod +x recorder1.sh
Tallennus kannattanee käynnistää screeniin tausta-ajoon. Sen voi myös laittaa käynnistymään automaattisesti lisäämällä rivi /etc/init.d/rc.local -tiedostoon:
screen -S "Etupiha1-recorder" -d -m bash -c "cd /mnt/usblevy/valvontakamera;./recorder1.sh"
Jos haluat katsoa mitä scriptissä tapahtuu, pääset sinne näin:
screen -dr Etupiha1-recorder
Ja pois screenistä, jättäen scriptin pyörimään, pääsee näppäinyhdistelmällä ctrl+a+d.
Kameravalvonnasta ilmoittaminen
Laki velvoittaa ilmoittamaan kameravalvonnasta selkeästi. Koska valmiita kylttejä ei löytynyt havalla, tein kyltin itse. Tulostin omatekemän kyltin paperille ja laminoin sen. Kyltin kiinnitin pihatien alkuun.
Kiitoksia jutusta ja kameravinkistä! Tänään kolahti postilaatikkoon ja kyllä on hintaisekseen jokseenkin hyväkaatuinen kamera.
Tuo kyseinen kamera muuten mahtuu näppärästi sähkökytkentöihin tarkoitettuun kalvorasiaan. Niitä saa mustanakin, joten tuolla saa tehtyä valvontakameran, jota ei edes parin metrin päästä huomaa ellei tiedä mitä etsiä.
kiva jos artikkelista oli iloa! tuo tosiaan on niin pieni, että voi jemmata aika moneen huomaamattomaan paikkaan tarvittaessa..
Itseasiassa yksityistä ei koske henkilötietolaki ja siten ei myöskään valvonnasta ilmoittamisvelvollisuus, mutta se kyltti saattaa pitää kylläkin sunnuntairosmot pois, ja ohan tuo tutuillekkin hyvä saattaa tietoon.
Millä tunnuksilla tuon kameran hallintakäliin pääsee käsiksi? Kameran takana lukee User: SUPER Password: (tyhjä) mutta eipä toimi. Roottina pääsen kyllä sisään telnet-rajapintaan. Koitan parhaillaan selvittää, miten kameran ip:n saa vaihdettua.
Web käyttöliittymään tunnus on admin ja salasana jätetään tyhjäksi. Mutta sieltä ei paljoa mitään voi tehdä. IP osoite voidaan vaihtaan tolla CMS ohjelmalla, johon käyttäjätunnus on se super ja salasana tyhjä. CMS:llä voi tehdä kaikki tarvittavat conffaukset.
telnetillä kameraan root/xmhdipc. Asetuksia voi koittaa muuttaa esimerkiksi tiedostosta /mnt/mtd/Config/network tai dhcp:n päälle tiedostosta /mnt/mtd/Config/dhcp.cfg. Saattaa toimia tai olla toimimatta.
Perustin kirjoitusalustaan sivun aiheesta:
http://kirjoitusalusta.fi/top-201
Tuonne voisi koittaa alkaa purkamaan sitä admintyökalun protokollaa.
Riittääkö Raspberry Pi:ssä tehoa usean kameran videostreamien yhtäaikaiseen tallentamiseen? Onko tuo 720P kamera edelleen paras ostos vai onko nykyään jo esim. 1080P kameroita jotka ovat suositeltavampia?