Personal tools

Supraveghere video sub Linux folosind ZoneMinder

From linux360

Revision as of 03:06, 30 January 2007 by Syl (talk | contribs)
Jump to: navigation, search

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:

  • Comandazmc -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.

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 biti si ar trebui sa fie minim 134217728 (128 Mb). 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 si daca nu puteti reboot-a sistemul chiar acum, puteti modifica valorile si din mers cu comenzile: echo VALOARE_NOUA >/proc/sys/kernel/shmall echo VALOARE_NOUA >/proc/sys/kernel/shmmax De exemplu:echo 134217728 >/proc/sys/kernel/shmall

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

  1. 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 acest script pentru a rezolva problema.