    {"id":34,"date":"2012-03-29T09:40:04","date_gmt":"2012-03-29T07:40:04","guid":{"rendered":"http:\/\/www2.emiwa.pl\/?p=34"},"modified":"2025-06-04T09:44:55","modified_gmt":"2025-06-04T07:44:55","slug":"zoneminder-program-do-monitoringu","status":"publish","type":"post","link":"https:\/\/www.emiwa.pl\/?p=34","title":{"rendered":"ZoneMinder program do monitoringu"},"content":{"rendered":"<p>System monitoringu. Kiedy\u015b o zainstalowaniu go we w\u0142asnym domu mogli by\u015bmy tylko pomarzy\u0107. Chyba, \u017ce zamiast marzy\u0107 dorobili\u015bmy si\u0119 grubego portfela :-).<!--more--> Ale dzi\u015b w dobie ci\u0105gle spadaj\u0105cych cen kamer przy jednoczesnym wzro\u015bcie ich mo\u017cliwo\u015bci taki kilko kamerowy systemik jest ju\u017c w finansowym zasi\u0119gu praktycznie ka\u017cdego. Najpro\u015bciej jest zakupi\u0107 kamery IP, gdy\u017c s\u0105 to w zasadzie ju\u017c gotowe jedno kamerowe systemy. Maj\u0105 wbudowane praktycznie wszystko co potrzebujemy. Tak\u0105 kamer\u0119 wystarczy pod\u0142\u0105czy\u0107 do sieci zasilaj\u0105cej oraz komputerowej i skonfigurowa\u0107 pod w\u0142asne potrzeby. Jednak je\u015bli chcieli by\u015bmy mie\u0107 kilka kamer w systemie, do tego automatyczn\u0105 rejestracj\u0119 wykrytych zdarze\u0144 to i tu producenci wychodz\u0105 nam na przeciw dodaj\u0105c do swoich produkt\u00f3w bardziej lub mniej zaawansowane programy pozwalaj\u0105ce na po\u0142\u0105czenie wielu kamer w jeden sp\u00f3jny system monitoringu. I mog\u0142o by si\u0119 wydawa\u0107 czego mo\u017cna chcie\u0107 wi\u0119cej? Po co ten poradnik skoro to wszystko takie proste? Rzeczywi\u015bcie taki system buduje si\u0119 bardzo prosto ale&#8230; Czasem bywa tak, \u017ce kamery kt\u00f3rych chcemy u\u017cy\u0107 do budowy naszego systemu pochodz\u0105 od r\u00f3\u017cnych producent\u00f3w. I tu spotyka nas du\u017ca przykro\u015b\u0107. Niestety darmowe oprogramowanie do\u0142\u0105czane do kamer chce wsp\u00f3\u0142pracowa\u0107 tylko ze sprz\u0119tem od jednego producenta i nie chce wsp\u00f3\u0142pracowa\u0107 z kamerami konkurencji.I teraz albo b\u0119dziemy jednocze\u015bnie korzystali dw\u00f3ch niezale\u017cnych program\u00f3w, co osobi\u015bcie uwa\u017cam za najmniej sensowne rozwi\u0105zanie, albo zakupimy licencj\u0119 rozszerzaj\u0105c\u0105 mo\u017cliwo\u015bci naszego systemu umo\u017cliwiaj\u0105c pod\u0142\u0105czanie do niego obcych kamer. Nierzadko zakup taki przewy\u017csza koszt zakupu samych kamer. Ja postanowi\u0142em rozejrze\u0107 si\u0119 za trzecim rozwi\u0105zaniem tego problemu i jest nim darmowy program <a href=\"http:\/\/www.zoneminder.com\/\">ZoneMinder <\/a>rozpowszechniany na licencji GNU.Program ma w zasadzie tylko jedn\u0105 wad\u0119 i to nie dla wszystkich. A mianowicie zainstalowa\u0107 go mo\u017cna jednanie na komputerach maj\u0105cych za system operacyjny kt\u00f3r\u0105\u015b z dystrybucji Linuxa.<\/p>\n<p>Tyle tytu\u0142em wst\u0119pu a teraz konkrety:<\/p>\n<p>M\u00f3j system (w zasadzie to mikro system) wykorzystuje dwie kamery IP:<\/p>\n<ol>\n<li>Megapikselow\u0105 VIVOTEK FD8133<\/li>\n<li>Obrotow\u0105 z interfejsem WiFi FOSCAM FI8918W<\/li>\n<\/ol>\n<p>Ca\u0142o\u015b\u0107 obs\u0142uguje serwer oparty na dystrybucji Linux Debian \u201csqueeze\u201d. Odpowiada on za centralne zarz\u0105dzanie kamerami oraz nagrywanie, odtwarzanie i podgl\u0105d poprzez interfejs www. A wszystko to dzi\u0119ki aplikacji ZoneMinder.<\/p>\n<p>Kamera Vivotek jest wpi\u0119ta bezpo\u015brednio do sieci po kabelku kat5. Foscam`a pod\u0142\u0105czy\u0142em z sieci\u0105 wykorzystuj\u0105c jego interfejs WiFi.Odpowiednia konfiguracja routera internetowego pozwala mi na dost\u0119p do systemu monitoringu z ka\u017cdego miejsca gdzie mam Internet. Wszystko klasycznie jak w ka\u017cdym innym systemie tego rodzaju czyli \u0142atwo szybko i przyjemnie. Troch\u0119 problem\u00f3w stworzy\u0142 sam ZoneMinder oczym pisze ni\u017cej.<\/p>\n<p>W pierwszym kroku zainstalowa\u0142em ZoneMindera z repozytorium Debiana<\/p>\n<blockquote>\n<pre>apt-get install zoneminder<\/pre>\n<\/blockquote>\n<p>Niejako przy okazji dla uzupe\u0142nienia pakiet\u00f3w potrzebnych do dzia\u0142ania ZoneMindera zosta\u0142y doinstalowane m.inn. Apache, php, Mysql itp. Niestety okaza\u0142o si\u0119, \u017ce w 64bitowej wersji dystrybucji linuxa, kt\u00f3r\u0105 mia\u0142em na serwerze system monitoringu nie pokazywa\u0142 obrazu z kamery Vivoteka. Poza brakiem obrazu w logach ZoneMinder`a pojawi\u0142y si\u0119 wpisy:<\/p>\n<blockquote>\n<pre>zmc_m2[24715]: WAR [Discarding packet for unrecognised ssrc 9ec8bd11]\r\nzmc_m2[24715]: WAR [Discarding packet for unrecognised ssrc 85b909c9]\r\n\r\nzmc_m2[24715]: WAR [Discarding packet for unrecognised ssrc c35d1619]\r\nzmc_m2[24715]: WAR [Discarding packet for unrecognised ssrc 3cecfb85]<\/pre>\n<\/blockquote>\n<p>ZoneMinder z kamer\u0105 VIVOTEKa aby w miar\u0119 w pe\u0142ni wykorzystywa\u0107 jej mo\u017cliwo\u015bci powinien komunikowa\u0107 si\u0119 z ni\u0105 z u\u017cyciem protoko\u0142u RTSP i to z nim by\u0142 problem w 64bitowej wersji ZoneMinder`a dla Debian squeeze. Dla wszystkich pragn\u0105cych g\u0142\u0119biej wej\u015b\u0107 w ten temat polecam zapoznanie si\u0119 <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=614404\">z tym<\/a> postem z forum Debiana<\/p>\n<p>Tu napisz\u0119 tylko jak poradzi\u0107 sobie z tym problemem:<\/p>\n<ol>\n<li>Odinstalowujemy szwankuj\u0105cego ZoneMinder`a<br \/>\n<blockquote>\n<pre>apt-get remove zoneminder<\/pre>\n<\/blockquote>\n<\/li>\n<li>Pobieramy \u017ar\u00f3d\u0142a pakietu Zoneminder<br \/>\n<blockquote>\n<pre>apt-get source zoneminder<\/pre>\n<\/blockquote>\n<\/li>\n<li>Tworzymy plik z \u0142atk\u0105 kt\u00f3r\u0105 trzeba zaaplikowa\u0107 pobranym \u017ar\u00f3d\u0142om, nazwijmy go np. ssrc.patch. Jego zawarto\u015b\u0107 pobra\u0142em ww. postu z forum Debiana ale musia\u0142em go troch\u0119 zmodyfikowa\u0107. Autor wida\u0107 mia\u0142 troch\u0119 inaczej sformatowane pliki \u017ar\u00f3d\u0142owe i program &#8222;patch&#8221; nie potrafi\u0142 zidentyfikowa\u0107 w\u0142a\u015bciwych linii. M\u00f3j plik z \u0142atk\u0105 wygl\u0105da\u0142 tak:<br \/>\n<blockquote>\n<pre>ZoneMinder-1.24.2.old\/src\/zm.h 2009-03-20 05:07:00.000000000 -0700+++ ZoneMinder-1.24.2\/src\/zm.h 2010-06-29 10:45:24.000000000 -0700\r\n@@ -17,6 +17,8 @@\r\n\/\/ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r\n\/\/\r\n+#include \"stdint.h\"\r\n+\r\n#ifndef ZM_H\r\n#define ZM_H\r\n@@ -34,14 +36,14 @@\r\n#endif\r\n}\r\n-typedef unsigned charU8;\r\n-typedef unsigned shortU16;\r\n-typedef unsigned longU32;\r\n-typedef unsigned long long U64;\r\n-\r\n-typedef signed charS8;\r\n-typedef signed shortS16;\r\n-typedef signed longS32;\r\n-typedef signed long longS64;\r\n+typedef uint8_t U8;\r\n+typedef uint16_t U16;\r\n+typedef uint32_t U32;\r\n+typedef uint64_t U64;\r\n+\r\n+typedef int8_t S8;\r\n+typedef int16_t S16;\r\n+typedef int32_t S32;\r\n+typedef int64_t S64;\r\n#endif \/\/ ZM_H<\/pre>\n<\/blockquote>\n<\/li>\n<li>Integrujemy \u0142atk\u0119 z pobranymi plikami \u017ar\u00f3d\u0142owymi ZoneMindera, np tak:<br \/>\n<blockquote>\n<pre>patch .\/zoneminder-1.24.2\/src\/zm.h ssrc.patch<\/pre>\n<\/blockquote>\n<\/li>\n<li>Kompilujemy \u017ar\u00f3d\u0142a.W moim przypadku okaza\u0142o si\u0119, \u017ce brakowa\u0142o jeszcze troch\u0119 plik\u00f3w nag\u0142\u00f3wkowych potrzebnych do poprawnej kompilacji ZoneMindera i to jest chyba najlepszy moment \u017ceby je doinstalowa\u0107:<br \/>\n<blockquote>\n<pre>apt-get install libpcre++-dev libavutil-dev libavcodec-dev \\\r\nlibavformat-dev libbz2-dev libgnutls-dev libswscale-dev \\\r\nlibjpeg-dev libmysqlclient-dev gnutls-openssl-dev libpcre-dev \\\r\nlibavutil-dev libavcodec-dev libavformat-dev libbz2-dev<\/pre>\n<\/blockquote>\n<\/li>\n<\/ol>\n<p>i mo\u017cemy przyst\u0105pi\u0107 do kompilacji \u017ar\u00f3de\u0142 ZoneMindera<\/p>\n<blockquote>\n<pre> .\/zoneminder-2.24.2\/debian\/rules build<\/pre>\n<\/blockquote>\n<p>Je\u015bli spodka na tu przykra niespodzianka w postaci komunikatu:<br \/>\nautoreconf:<\/p>\n<blockquote>\n<pre>Polecenie nie znalezione<\/pre>\n<\/blockquote>\n<p>musimy doinstalowa\u0107 autoconf`iga<\/p>\n<blockquote>\n<pre> apt-get install autoconf<\/pre>\n<\/blockquote>\n<p>Inna niespodzianka to koniec kompilacji z b\u0142\u0119dem:<\/p>\n<blockquote>\n<pre> zm_mpeg.cpp:325: error: \u2018img_convert\u2019 was not declared in this scope<\/pre>\n<\/blockquote>\n<p>Zwi\u0105zany jest z tym, \u017ce kompilator spodziewa si\u0119 pliku nag\u0142\u00f3wkowego do ffmpeg`a w innym miejscu ni\u017c jest w rzeczywisto\u015bci<\/p>\n<p>wystarczy plik avcodec.h z katalogu: \/usr\/include\/libavcodec skopiowa\u0107 do katalogu:\/usr\/include\/ffmpeg i po ponownym<\/p>\n<blockquote>\n<pre> .\/zoneminder-2.24.2\/debian\/rules build<\/pre>\n<\/blockquote>\n<p>\u017ar\u00f3d\u0142a powinny si\u0119 wreszcie skompilowa\u0107<\/p>\n<ul>\n<li>Instalujemy ponownie ZoneMinderBy\u0107 mo\u017ce dlatego \u017ce to moja pierwsza taka kompilacja \u017ar\u00f3de\u0142 w Debianie i brakuje mi troch\u0119 wiedzy w tym zakresie to mia\u0142em z tym ma\u0142y problem. Po komendzie:<br \/>\n<blockquote>\n<pre> .\/zoneminder-2.24.2\/debian\/rules install<\/pre>\n<\/blockquote>\n<p>ZoneMinder \u201ezainstalowa\u0142\u201d si\u0119 w katalogu &#8230; .\/zoneminder-2.24.2\/debian\/zoneminder. To mnie troch\u0119 zdziwi\u0142o, nie dywaguj\u0105c za bardzo nad t\u0105 sytuacj\u0105 ca\u0142\u0105 zawarto\u015b\u0107 tego folderu przenios\u0142em do katalogu g\u0142\u00f3wnego serwera. Struktura katalog\u00f3w jest odpowiednia wi\u0119c operacja prosta.<\/p>\n<blockquote>\n<pre> mv .\/zoneminder-2.24.2\/debian\/zoneminder\/* \/<\/pre>\n<\/blockquote>\n<\/li>\n<li>Dodajemy konfiguracj\u0119 strony ZoneMinder`a do serwera www Apache.<br \/>\n<blockquote>\n<pre> ln -s \/etc\/zm\/apache.conf \/etc\/apache2\/sites-enabled\/zm.conf\r\n \/etc\/init.d\/apache2 reload<\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Teraz mo\u017cemy wreszcie przej\u015b\u0107 do konfiguracji systemu monitoringu i doda\u0107 nasze kamery do niego.<\/p>\n<p>Bardzo mo\u017cliwe, \u017ce po dodaniu kamer pojawi si\u0119 kolejny problem (u mnie wyst\u0119powa\u0142 nie tylko w dystrybucji Linux Debian ale i Fedorze na kt\u00f3rej testuje r\u00f3\u017ce rzeczy). Mianowicie nie uzyskujemy obrazu na podgl\u0105dzie kamer lub tylko jednej kamery a w logach pojawiaj\u0105 si\u0119 wpisy nast\u0119puj\u0105cej tre\u015bci:<\/p>\n<blockquote>\n<pre> zmwatch[26154]: ERR [Can't get shared memory id '7a6d0001', 1: Nie ma takiego pliku ani katalogu]\r\n zmwatch[26154]: ERR [Can't get shared memory id '7a6d0001', 1: Nie ma takiego pliku ani katalogu]\r\n zmwatch[26154]: ERR [Can't get shared memory id '7a6d0001', 1: Nie ma takiego pliku ani katalogu]<\/pre>\n<\/blockquote>\n<p>Oznaczaj\u0105 one tylko tyle, \u017ce wielko\u015b\u0107 deklarowanej w kernelu shared memory jest zbyt ma\u0142a. ZoneMinder potrzebuje jej tym wi\u0119cej im wi\u0119ksza jest rozdzielczo\u015b\u0107 przechwytywanego z kamer obrazu. Mo\u017cna Oczywi\u015bcie zmniejszy\u0107 rozdzielczo\u015b\u0107 kamer ale to chyba nie jest w\u0142a\u015bciwa droga.<\/p>\n<p>Aby szybko sprawdzi\u0107 czy wybrana przez nas wielko\u015b\u0107 pami\u0119ci jest odpowiednia wydajemy polecenie:<\/p>\n<blockquote>\n<pre> echo 167772160 &gt;\/proc\/sys\/kernel\/shmall\r\n echo 167772160 &gt;\/proc\/sys\/kernel\/shmmax<\/pre>\n<\/blockquote>\n<p>Je\u015bli obraz ze wszystkich kamer si\u0119 pojawi\u0142 to mo\u017cemy zmieni\u0107 plik konfiguracyjny kernela tak aby pami\u0119\u0107 zosta\u0142a trwale zwi\u0119kszona<\/p>\n<p>Modyfikujemy plik \u201c\/etc\/sysctl.conf\u201d<\/p>\n<blockquote>\n<pre> # Increase the maximum shared memory\r\n kernel.shmall = 167772160\r\n kernel.shmmax = 167772160<\/pre>\n<\/blockquote>\n<p>W moim wypadku ze wzgl\u0119du na megapikselow\u0105 kamer\u0119 pami\u0119\u0107 zosta\u0142a zwi\u0119kszona do 1567772160 bajt\u00f3w.<\/p>\n<p>No i to by by\u0142o na tyle, wprawdzie pozostaje jeszcze sprawa sterowania obrotow\u0105 FOSCAM FI8918W, kt\u00f3ra mia\u0142a brzydki zwyczaj patrzenia w sufit po chwilowej utracie zasilania. Ale to ju\u017c historia na inn\u0105 okazj\u0119.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>System monitoringu. Kiedy\u015b o zainstalowaniu go we w\u0142asnym domu mogli by\u015bmy tylko pomarzy\u0107. Chyba, \u017ce zamiast marzy\u0107 dorobili\u015bmy si\u0119 grubego portfela :-).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[25,19,23,22],"class_list":["post-34","post","type-post","status-publish","format-standard","hentry","category-poradniki","tag-kamery","tag-linux","tag-monitoring","tag-zoneminder"],"_links":{"self":[{"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/posts\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34"}],"version-history":[{"count":3,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/posts\/34\/revisions"}],"predecessor-version":[{"id":114,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=\/wp\/v2\/posts\/34\/revisions\/114"}],"wp:attachment":[{"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.emiwa.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}