Zoneminder kasutamine operatsioonisüsteemiga Debian

Allikas: Imre kasutab arvutit

Sissejuhatus

ZoneMinder http://www.zoneminder.com/ on Linux operatsioonisüsteemiga kasutamiseks mõeldud videovalve tarkvara, mis põhineb V4L, PHP, Perl, MySQL ja Apache kasutamisel.

Tööpõhimõte

Zoneminder valvesüsteemi komponentide võrguskeem

              brauser
               _____
              |     |
              |_____|
                 |
                 |
        --|------|--------------|-------------------|----------------|------
          |                     |                   |                |
        __|__                 __|__               __|__            __|__
       |     |               |     |             |     |          |     |
       |_____|               |_____|             |_____|          |_____|
                     
     Zoneminder        VLC, mjpg-streamer       IP kaamera 1     IP kaamera 2
       server            kaks UVC webcam
     MySQL baas            /dev/video0
     /dev/video0           /dev/video1
/var/cache/zobeminder

kus

  • /dev/video0, /dev/video1 - otse arvuti külge ühendatud UVC veebikaamerale vastava seadme nimi (tavaliselt USB pordis)
  • Zoneminder server - MySQL andmebaas, Perl keeles kirjutatud deemonid jms tarkvara, php veebirakendus
  • VLC, mjpg-streamer vms programm genereerib RTSP striimi kohalikest arvutiga ühendatud tavalistest UVC tüüpi veebikaameratest
  • IP kaamera - iseseisev seade, mis väljastab mingil nö vastuvõetaval kujul striimi, nt RTSP

Küllap peaks süsteemi käivitades arvestama sellega, et sissetungija rikub kaamera. Kuid salvestusseade peab asuma mingis muus asukohas, et kaamera rikkumisele eelnenud tegevused säilivad.

Zoneminder serveril on sellised ülesanded

  • MySQL andmebaasis salvestatakse valvesüsteemi seadistused (andmed liidestatud kaamerate kohta, süsteemi kasutajate ligipääsud jms)
  • failisüsteemis kataloogis /var/cache/zoneminder asuvad salvestatud videoandmed pildifailide kujul
  • Zoneminderile vastab hulk deemon-protsesse, mis tegelevad andmete kogumisega lokaalsetelt videoseadmetelt (nt Zoneminder serverisse endaga ühendatud veebikaamera) või üle võrgu ligipääsetavast veebikaamerast (kas wifi või traadiga võrgu kaudu)
  • veebipõhine haldusliidese rakendus, mille abil saab süsteemi seadistada (nt liidestada lokaalseid või eemal töötavaid kaameraid) ja ettevalmistatud süsteemiga töötada (nt toimunud häireid uurida)

Zoneminder serveri protsessid, http://www.zoneminder.com/wiki/index.php/Documentation#Components

  • TODO

Mõisted

  • UVC veebikaamera - Universal Video Class tüüpi veebikaamera, tundub, et tänapäeval nö kõige tavalisem USB porti ühenduv veebikaamera; linuxi seisukohast töötavad nad kõik ühe sama draiveriga
  • Alert - häire
  • Zone - ...

Riistvara

Zoneminder veebikohas on ülevaade kasutamiseks sobivatest lokaalsetest ja üle võrgu kasutatavatest kaameratest. Zoneminder serverina kasutatav arvuti peab olema pigem suurema kui väiksema arvutusvõimusega, sest ta tegeleb üsna aktiivselt videotöötlusega. Sõltub konkreetsest kasutusjuhust, kaamerate arvust, resolutsioonidest, bitrate'idest, framerate'idest, värvidest, video formaatidest jms.

UVC veebikaaamera

UVC veebikaamerad paistavad olevat 2015 aastal kõige levinumad, nn tavalised veebikaamerad.

# v4l2-ctl -D
Driver Info (not using libv4l2):
       Driver name   : uvcvideo
       Card type     : UVC Camera (046d:081b)
       Bus info      : usb-0000:00:08.0-1.4.3
       Driver version: 3.12.9
       Capabilities  : 0x84000001
               Video Capture
               Streaming
               Device Capabilities
       Device Caps   : 0x04000001
               Video Capture
               Streaming
# v4l2-ctl --list-devices
UVC Camera (046d:081b) (usb-0000:00:08.0-1.4.3):
       /dev/video0
# v4l2-ctl --list-formats -d /dev/video1
ioctl: VIDIOC_ENUM_FMT
       Index       : 0
       Type        : Video Capture
       Pixel Format: 'YUYV'
       Name        : YUV 4:2:2 (YUYV)

       Index       : 1
       Type        : Video Capture
       Pixel Format: 'MJPG' (compressed)
       Name        : MJPEG

Trendnet TV-IP252P ip kaamera

Video aadress

http://kasutajanimi:parool@10.168.2.172/cgi/mjpg/mjpg.cgi

Video omadused

Type: Video
Codec: Motion JPEG Video (MJPG)
Resolution: 640x480
Decoded format: Planar 4:2:0 YUV full scale

AXIS 210

Üle NAT kasutades paistab pilt vlc programmiga sedasi

$ vlc rtsp://10.103.1.4/mpeg4/media.amp --rtsp-http

Zoneminder kasutamiseks http://www.zoneminder.com/wiki/index.php/How_to_Setup_an_Axis_210_with_JPEG_streaming

Add New Monitor -> 
  General -> Source Type -> Remote
  General -> Function -> Modect
  General -> Enabled -> linnuke

  Source -> Remote Protocol-> HTTP
  Source -> Remote Method -> Simple
  Source -> Remote Host Name - 10.103.1.4
  Source -> Remote Host Port - 80
  Source -> Remote Host Path - /axis-cgi/jpg/image.cgi?
  Source -> Target Colorspace - 24 bit colour
  Source -> Capture Width -> 640
  Source -> Capture Height -> 480

Tarkvara paigaldamine

Paigaldamiseks sobib Debian v. 9 Stretch puhul öelda nt

# apt-get install zoneminder

mille tulemusena tekib failisüsteemi muu hulgas

  • /usr/share/doc/zoneminder/README.Debian.gz - paigaldusjuhend
  • paigaldatakse MySQL andmebaasi server, aga rakenduse jaoks vajaliku sisuga ei initsialiseerita

2015 aasta suvel Debian v. 8 Jessie puhul paigaldada backportsidest

 # apt-get -t jessie-backports install zoneminder

Tulemusena

  • TODO
  • ei initsialiseerita andmebaasi, seda tuleb teha käsitsi, vt punkt 'Andmebaasi ettevalmistamine'

Andmebaasi ettevalmistamine

Eeldusel, et andmebaasi protsess töötab saab baasi esialgse sisuga täita selliselt (ühe sammuna moodustatakse create database andmebaas zm)

# cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/debian.cnf

ning näidata kasutaja privileegid ja seadistada parool (vaikimisi on kirjas väärtus 'zmpass' failis /etc/zm/zm.conf, tuleks kaaluda selle asendamist)

# echo 'grant lock tables, alter,select,insert,update,delete on zm.* to \
  'zmuser'@localhost identified by "zmpass";' | \
  mysql --defaults-file=/etc/mysql/debian.cnf mysql

Zoneminder protsesside sisselülitamine

Selleks, et Zoneminder deemonid käivituksid arvuti käivitamisel automaatselt sobib öelda

# systemctl enable zoneminder.service

ja käivitamine

# systemctl start zoneminder

Veebiserveri ettevalmistamine

Zoneminder jaoks on veebiserveri seadistusfail rakendusega kaasas, aktiveerimiseks tuleb öelda

# a2enconf zoneminder
# a2enmod cgi
# systemctl restart apache2
# chmod 0644 /etc/zm/zm.conf

Tulemusena avaneb brauseris aadressil http://zm.imool/zm/ sarnane pilt, kuhu hakatakse Seadistamine punktis monitore lisama jms

Zm-4.gif

Tundub, et 2015 aasta kevadel tuleb lisaks haldusliideses näidata PATH_ZMS vääruseks (muidu ei tööta monitori reaalajas jälgimine) valides veebiliideses

Options -> Paths

ning

/cgi-bin/nph-zms -> /zm/cgi-bin/nph-zms

Ubuntu

2013 aastal sobib Ubuntu keskkonnas tarkvara paigaldamiseks öelda midagi sellist

# apt-get install python-software-properties
# add-apt-repository ppa:iconnor/zoneminder
# apt-get install mysql-server
# apt-get install zoneminder

Seadistamine

Seadistuste tegemisel tuleb muu hulgas liidestada Zoneminderiga veebikaamerad

  • lokaalne kaamera
  • ip kaamera
  • UVC webcam üle võrgu VLC abil

Seadistamise ajal on väga abiks jälgida brauseris Log lingi abil avatud aknas logi.

Lokaalne kaamera

ZM seadistamiseks valida

Add New Monitor

ning General sakis täita lahtrid selliselt

  General -> Source Type -> Local
  General -> Function -> Modect
  General -> Enabled -> linnuke

Tulemusena tekib sarnane pilt

Zm-2.gif

Source sakis täita lahtrid selliselt

  Source -> Device Path -> /dev/video0
  Source -> Capture Method -> Video For Linux version 2
  Source -> Capture Width -> 752 (vaadata lokaalset seadet kasutavast vlc kliendist, Media info)
  Source -> Capture Height -> 416 (vaadata lokaalset seadet kasutavast vlc kliendist, Media info)

Tulemusena tekib sarnane pilt

Zm-3.gif

Ja kokkuvõttes ilmub ZM avalehele selline pilt

Zm-5.gif

Seadistamisel saab syslog jms failisüsteemi logist ideid, aga tundub et veel asjakohasem on küsida logi veebiliidesest

Logi akna vaade paistab selline

Zm-6.gif

kus

  • esimesel real on üldised andmed, millal viimati logiti, süsteemi olek jne

Märkused

  • kui kõik muu on ka ok, siis valesti määratud laius ja kõrgus teevad pildi esitamise ZM jaoks katki
  • tundub, et kui Probe vastuseks saab 'Unable to probe local cameras, status is 255', siis sellele ei maksa tähelepanu pöörata
  • avalehel esitatakse Source välja väärtus erinevat värvi, sõltuvalt sellest, mis olekus ta on (st töötab või on katki)

Üldised seadistused

Brauseris avatud kasutajaliidese, eriti live striimi omadusi saab valida kolme komplekti vahel valides avalehel

Logged in as admin, configured for Low Bandwidth
  • Low -
  • Medium -
  • High -

Neile väärtusele vastavate parameetrite komplekti saab seadistada valides

Options -> High B/W, Medium B/W ja Low B/W

kus

  • kas striimitakse mpeg või jpeg formaadis videot
  • millise scale'inguga
  • millise bitrate'iga

Parooliga ligipääsu seadistamine

Paroolikontrolli sisselülitamiseks valida

Options -> System -> OPT_USE_AUTH

Seejärel küsitakse kasutajanimi ja parooli, vaikimisi kasutaja admin ja parool admin. Kasutajate ja ligipääsude seadistamine toimib

Options -> Users

UVC veebikaamera üle võrgu VLC abil

Striimimiseks sobib öelda

$ cvlc v4l2:///dev/video0  --rtsp-host=192.168.10.42 --sout '#transcode{vcodec=h264,acodec=none}:rtp{sdp=rtsp://:8080/test.sdp}'

Testiks vlc programmiga avamiseks

$ vlc rtsp://192.168.10.42:8080/test.sdp

ZM seadistamiseks

Add New Monitor -> 
  General -> Source Type -> Ffmpeg
  General -> Function -> Modect
  General -> Enabled -> linnuke

  Source -> Source Path -> rtsp://192.168.10.42:8080/test.sdp
  Source -> Remote Method -> RTP/Unicast
  Source -> Capture Width -> 752 (vaadata vlc kliendist)
  Source -> Capture Height -> 418 (vaadata vlc kliendist)

VLC abil striimimisel tuleb arvestada, et see tekitab striimivale arvutile suhteliselt palju koormust. Võib-olla on asjakohasem kasutada midagi muud, nt mjpg-streamer tarkvaraga.

IP kaamera

Nt Hikvision DS-2CD2732F-IS on ip kaamera, mille seadistamiseks tuleks valida

Add New Monitor -> 
  General -> Source Type -> Ffmpeg
  General -> Function -> Modect
  General -> Enabled -> linnuke

  Source -> Source Path -> rtsp://admin:12345@192.168.10.47:554/Streaming/Channels/1
  Source -> Remote Method -> RTP/RTSP
  Source -> Capture Width -> 1280
  Source -> Capture Height -> 720

Hikvision kaamera ip aadressi võib avastada nagu ikka seadmete ip aadresse, kuulata võrku pealt ning seadme võrku lülitamisel või käivitamisel proovida märgata arp päringuid, nt

root@moraal:~# tcpdump -nlei eth0 arp | grep -v 192.168.10.161
..
00:16:38.939438 44:19:b6:5c:ff:d4 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 192.0.0.8 tell 192.0.0.8, length 46

Kasutamine

Zoneminder kasutamine toimub veebiliidese abil, avada brauseris http://zm.imool/zm/ ning avaneb sarnane pilt

Zm-1.gif

kus

  • üleval ääres on nagu käesolev aeg, tarkvara versioon ja olek (Running) ning süsteemi koormus ning kettakasutus
  • järgmisel real kokkuvõte, et süsteemi on seadistatud kaks monitori st pildi vaatamise allikat, haldusliides töötab väikest võrguriba kasutust arvetades
  • Cycle/Montage - avab edaldi aknas monitoride live vaate (vahetab monitoride pilte/avab pildid kõrvuti)
  • Optons - üldised süsteemi tööd juhtivad seadistused
  • Log - süsteemi jooksvad logid (väga abiks seadistamisel)

Eraldi sektsioonis esitatakse iga monitori kohta

  • Name - monitori nimi
  • Function - nt Modect, mis on kõige tavalisem nn liikumistuvastus (eesti k. motion detection)
  • Source - andmete allika nimi
  • Events - TODO
  • TODO

Reaalajas pildi vaatamine

Reaalajas pildi vaatamiseks sobib valida

  • Monitori nime
  • Cycle
  • Montage

Tulemusena avatakse eraldi aknasse pilt, st online video.

Häirete läbivaatamine

Toimunud häirete läbivaatamises tuleb avada vastava monitori Events tulba arvul klõpsates nimekiri sündmustest, ning valida huvipakkuv sündmus. Nimekirjas on esitatud sündmuste kohta

  • Name - vaikimisi genereeritakse nimi kujul Event-nnn
  • Monitor -
  • Cause - nt Motion st liikumine
  • Time -
  • Duration
  • Frames
  • Alarm Frames
  • Total Score

Avades mõne konkreetse sündmuse paistab selline pilt

Zm-7.jpg

kus

  • TODO

Valides häire ekraanilt 'Frames' avaneb nimekiri häirele eelnenud, häiret tekitanud ja häirele järgnenud kaadritest

Zm-8.jpg

kus

  • punase kontuuriga on tähistatud häiret tekitanud ala

Tsoonide kirjeldamine

Kui häiret tekitab mingi seinal muutuv aknast tuleva valguse peegeldus vms ja ilmselt ei ole ette näha, et seina kaudu keegi siseneb, siis tuleks see ala jätta häire tsoonist välja. Tsooni kirjeldamiseks sobiv valida avalehelt vastava monitori Zones tulba arv ning avaneb uue aken. Tsooni kirjelduse muutmiseks hiirega vajutada pildile ja paistab midagi sellist

Zm-9.jpg

kus

  • vedada rohelise ala tippude abil tsooni kontuur sobivaks

Failisüsteemi täituvuse kontrollimine

Selleks, et failisüsteem kogemata ei täituks saab kasutada 'PurgeWhenFull' filtrit valides

mõni Events tulba arv -> Show Filter Window -> Use Filter -> PurgeWhenFull

Teadete saatmine

TODO

Märkused

  • Tundub, et nö keskmise MJPEG 640x480 pilt jälgimine kasutab ca 100 kBait/s andmekanalit.
  • Tundub, et mingite trikkide ja asjaolude puhul saab ühele arvutile ühendada külge mitu UVC veebikaamerat, aga üldiselt nad hästi ei tööta (nt 320 x 240 resoga töötab)

Kasulikud lisamaterjalid