revistaforumwikiarea51planetlinuxfestgalerie fotochatftp rss
 

Supraveghere video sub Linux folosind ZoneMinder

From linux360

ZoneMinder este cel mai profesional soft de monitorizare video disponibil pe Linux.

Am avut ocazia să îl folosesc împreună cu o cameră SOHO CAS-230/E conectată la server-ul cu ZoneMinder prin reţea.

Configuraţia software folosită:

  • ZoneMinder 1.21.0 (ruland pe ZoneMinder LiveCD)
  • ZoneMinder 1.21.3 (ruland pe Mandrake 10.0)

Din interfaţă web ZoneMinder aveţi atenţie la următoarele setări mai delicate:

  • ZM_OPT_REMOTE_CAMERAS - trebuie bifat in cazul de fata
  • ZM_OPT_USE_AUTH - nu ar trebui activat in mod normal
  • ZM_PATH_LOGS - /var/log/zm ar trebui sa fie trecut aici
  • ZM_COLOUR_JPEG_FILES - nu e nevoie in cazul de fata
  • ZM_NETCAM_REGEXPS - (nu exista in 1.21.0) debifat
  • ZM_HTTP_VERSION - in cazul de fata e 1.1 la 1.21.0 si 1.0 la 1.21.3
  • ZM_HTTP_TIMEOUT - minim 2500
  • ZM_WEB_REFRESH_METHOD - http
  • ZM_VIDEO_STREAM_METHOD - jpeg

După setarea parametrilor de mai sus şi conectarea camerei la server verificaţi următoarele:

  • Comanda
    zmc -m <monitor_ID>
    nu trebuie să returneze imediat. Daca returneaza imediat (cu, sau fara eroare), ceva nu e bine; verificati log-urile.
  • Memoria partajată (shared memory) (a se vedea Prima problema) se calculeaza astfel: buffer (tabul Buffers de la monitor) x latimea imaginii x inaltimea imaginii x 3 (pentru o imagine de 24 biti). Pentru o imagine 640x480 pe 24 biti ar necesita aproximativ 92Mb memorie shared, cu buffer-ele setate standard.

Contents

Prima problema: memoria partajată (shared memory)

Simptoma: în loguri apar mesaje referitoare la shared memory.

Se rezolva prin marirea memoriei partajate.

Memoria partajata alocata curent poate fi afisata cu comenzile:

cat /proc/sys/kernel/shmall
cat /proc/sys/kernel/shmmax

Valorile returnate sunt in octeti (bytes) si ar trebui sa fie de minim 134217728 (128 MiB). Daca valorile returnate sunt mai mici decat minimul precizat, ar trebui marite. Pentru a le mari definitiv se editeaza valorile kernel.shmall si kernel.shmmax din /etc/sysctl.conf. Daca aceste variabile nu exista in sysctl.conf, ele vor fi create. Atentie: valorile setate in sysctl.conf nu vor fi incarcate decat abia la bootare. Pentru aplicarea lor imediata, folosiţi comanda:

/sbin/sysctl -p

A doua problema: erori legate de formatul JPEG

Simptoma:

# zmc -m 1
Not a JPEG file: starts with 0x48 0x54

Camera reda imagini de dimensiunea 640x480, pe 24 biti culoare, deci acestea trebuie sa fie si setarile monitorului ZM. Atentie: cu cat imaginea are dimensiuni mai mari si culoare mai adanca, cu atat va creste si valoarea shared memory pe care ZM o cere (a se vedea mai sus).

A treia problema: Nu apare imagine

Simptoma: Nu apare nici o imagine cand se deschide un monitor, in logurile ZM (de obicei aflate in /var/log/zm) totul pare OK, dar in /var/log/messages apar mesaje de eroare de genul:

Got TERM signal, exiting
Select error: Interrupted system call
Shared memory not initialised by capture daemon

Trebuie verificat ca ZM_PATH_ZMS sa fie setat corect. In mod normal, in /var/www trebuie sa existe un director cgi-bin ce contine doua fisiere, cel putin:

# pwd
/var/www/cgi-bin
# ls
nph-zms zms

Deci, in ZM_PATH_ZMS se pot pune doua valori: /cgi-bin/zms sau /cgi-bin/nph-zms. Incercati cu ambele, pana cand functioneaza.

A patra problemă: Camera are uneori probleme şi trebuie resetată.

Dacă ZoneMinder nu mai receptează imagini, ping-ul la IP-ul camerei nu mai merge sau are pierderi, trebuie scoasă alimentarea camerei pentru câteva secunde...


Atenţie: server-ul de captura va avea nevoie de un hard disk mare pentru a putea face faţă cantităţii de date trimisă de cameră. Puteţi folosi mecanismul standard al distribuţiei (e.g. tmpwatch) sau, în lipsa acestuia, o soluţie ad-hoc de forma următoare pentru a rezolva problema.