Introdução
Esse artigo vem a explicar a instalação e configuração do ZoneMinder, um sistema fantástico para monitoramento com câmeras de vigilância tanto locais (analógicas) quando pela rede (câmeras IP). O ZoneMinder da suporte até 32 câmeras analógicas, e tantas quantas seu hardware aguentar para câmeras IP.
Duas características muito interessante do ZoneMinder são os métodos de Monitoramento, como apenas monitorar, gravar, detectar movimentos, gravar ao detectar movimentos, etc e também o fato de gerar arquivos em diferente extensões (mpg, swf, avi, mov, etc) e armazena-los podendo utilizar qualquer programa para gravar-los em uma mídia e poder reproduzi-la posteriormente.
Usei como sistema base a distribuição Slackware 11 com o kernel 2.6.
Pré-requisitos
Instalar as seguintes CPANs:
- Archive::Zip
- Compress::Zlib
- Date::Manip
- DBD::mysql
- DBI
- IO::Stringy
- MIME::Lite
- MIME::Tools
- MIME::Entity
- LWP::UserAgent
- PHP::Serialization
- X10::ActiveHome
- Module::Load
Baixe os seguintes pacotes do site http://www.linuxpackages.net
- a52dec-0.7.4-i686-1jto.tgz
- faad2-2.5p1-i486-1kjz.tgz
- faac-1.25p1-i486-1kjz.tgz
- lame-3.97-i686-1jto.tgz
- xvidcore-1.1.2-i486-1kjz.tgz
- x264-20070418-i486-1kjz.tgz
- ffmpeg-20070419-i486-1kjz.tgz
Verifique se os seguintes pacotes estão instalados no Slackware, se não tiver isntale-os pelo slackpkg:
- libogg
- fontconfig
- gnutls
- xproto
- renderproto
- kbproto
- libX11
- libXau
- libXdmcp
- libXpm
- libgcrypt
- libgpg-error
- libtheora
- libvorbis
- libxcb
- libXrender
- sdl
Estando tudo OK, instale usando o installpkg os tgzs que baixou anteriormente deixando o ffmpeg-20070419-i486-1kjz.tgz por último.
Tenha instalado e rodando o Apache, PHP e o MySQL.
Instalação
Baixe do site do http://www.zoneminder.com o tar.gz descompacte-o e entre na pasta src e edite o arquivo zm_mpeg.h e acrescente a seguinte linha #define INT64_C salve o arquivo. Depois edite o arquivo zm_mpeg.cpp na lina 281 e acrescente um & na frente de ofc deixando a linha desse jeito url_fclose(&ofc->pb); Volte para a pasta do ZoneMinder faça os paços a seguir:
# ./configure \
–prefix=/usr/local/zm \
–with-mysql=/usr/lib/mysql \
–with-webdir=/var/www/htdocs/zm \
–with-cgidir=/var/www/cgi-bin \
–with-ffmpeg=/usr \
–with-webuser=apache \
–with-webgroup=apache
Fiquem a vontade para alterar o configure.
# cd db
# mysql -u root -p
Logo abaixo cria-se o banco de dados e o usuário. deixei padrão, mas alterem pelo menos a senha!
mysql> \. zm_create.sql
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON zm.* to zmuser@localhost IDENTIFIED BY ‘zmpass’;
mysql> flush privileges;
mysql> exit;
# cd ..
# make
# make install
Precisamos instalar um pacote chamado Cambozola, que serve para um determinado tipo de streaming do ZoneMinder. Baixe o Cambozola do site http://www.charliemouse.com/code/cambozola/ e para instala-lo basta descompacta-lo e copiar o arquivo que está dentro da pasta dist chamado cambozola.jar para a raiz da pasta da web do ZoneMinder. Depois mude a permissão dele para 777 e o dono do arquivo e o grupo para nobody.
Se até aqui não houve nenhum erro, o ZoneMinder já está funcionando no seu http://localhost/zm
Configuração
Na primeira tela do ZoneMinder do lado superior direito, você pode alterar as opções do ZoneMinder. Abaixo segue as principais opções e seus valores.
Aba Path
ZM_PATH_ZMS = /cgi-bin/zms
Aba Web
ZM_WEB_RESIZE_CONSOLE = false
Aba Config
ZM_CAPTURES_PER_FRAME = 2 (Usando cameras analógicas, com placas com mais de um chip)
Aba Image
ZM_CAM_STREAM = auto
ZM_STREAM_METHOD = jpeg (Usando o Cambozola)
ou
ZM_STREAM_METHOD = mpeg (Usando o Flash)
ZM_MPEG_LIVE_FORMAT = asf (usando o Cambozola)
ZM_MPEG_REPLAY_FORMAT = asf (Usando o Cambozola)
ou
ZM_MPEG_LIVE_FORMAT = swf (Usando o Flash)
ZM_MPEG_REPLAY_FORMAT = swf (Usando o Flash)
ZM_OPT_CAMBOZOLA = true (Usando o Cambozola)
ZM_FFMPEG_FORMATS = Acrescentar o swf no final
ZM_OPT_MPEG = ffmpeg
ZM_PATH_FFMPEG = /usr/bin/ffmpeg
Aba Network
ZM_OPT_REMOTE_CAMERAS = true (Usando Cameras IP)
ZM_NETCAM_REGEXPS = false
ZM_HTTP_VERSION = 1.0
Existem outras opções, mas perceba que do lado de cada opção tem um (?) onde se tem a explicação de cada opção.
Placa de captura (Bt878)
Na minha experiência tenho 2 servidores rodando com o ZoneMinder configurado em um para câmeras IP e outra para câmeras analógicas. No primeiro servidor tenho 6 câmeras IP rodando e no segundo 22 câmeras locais rodando.
Utilizo no segundo servidor duas placas com chips Conexant baseados no Bt878 chamada Kodicom 4400R que da suporte cada uma a 16 câmeras e utiliza o drive bttv do kernel do Linux.
Placa Pico 2000 (4 câmeras)
Acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:
options bttv gbuffers=16 card=77
Não esquecer de dar um ENTER no final da linha para dar uma quebra de linha
Placa Kodicom 4400R (16 Câmeras)
Para 1 placa, acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:
options bttv gbuffers=16 card=133,132,133,133
Para 2 placas, acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:
options bttv gbuffers=32 card=133,132,133,133,133,132,133,133
Não esquecer de dar um ENTER no final da linha para dar uma quebra de linha
Browser (Navegador)
Recomendo e muito a utilização do Mozilla Firefox. Porém “funciona” em qualquer navegador.
No caso do FireFox tem que modificar dois parâmetros para que funcione corretamente a exibição de todas as câmeras em uma janela só (conhecida como Montagem no ZoneMinder). Entre no about:config e edite os seguintes parâmetros:
network.http.max-connections-per-server de 8 para 32
network.http.max-persistent-connections-per-server de 2 para 32
Adicionando a câmera
Clique em Add New Monitor
Aba General
NAME = Nome para a câmera
SOURCE TYPE = Local (câmeras analógicas) ou Remote (câmeras IP)
FUNCTION = Monitor (exibe as imagens das câmeras), Modect (aciona o sensor de movimento e gera Alarmes), Record (grava o tempo todo a imagem das câmeras) e Modect (grava apenas quando acionado o sensor de movimento)
Aba Source
Se escolher LOCAL:
DEVICE PATH = /dev/video0 ou /dev/video1 ou /dev/video2 ou …
DEVICE CHANNEL = Canal que vai variar de acordo com a quantidade de cameras
DEVICE FORMAT = PAL ou NTSC (geralmente NTSC)
CAPTURE WIDTH (pixels) = 320 (geralmente, depende da câmera)
CAPTURE HEIGHT (pixels) = 240 (geralmente, depende da câmera)
Se escolher REMOTE:
REMOTE HOST NAME = IP da camera IP
REMOTE HOST PORT = 80 (pode mudar de acordo com a câmera
REMOTE HOST PATH = video.cgi (no caso da minha câmera TrendNet)
REMOTE IMAGE COLORS = 24 bits
CAPTURE WIDTH (pixels) = 320 (geralmente, depende da câmera)
CAPTURE HEIGHT (pixels) = 240 (geralmente, depende da câmera)
Considerações Finais e Referências
O ZoneMinder é um sistema fantástico e serve para aplicações básicas (monitoramento residencial) ou até mesmo para aplicações empresárias (Bancos, Supermercados, etc).
No requisito hardware percebi que quanto maior é a quantidade câmeras maior a quantidade de memória (diretamente proporcional). No meu servidor com 22 câmeras só ficou legal com 2 GB de RAM.
Segue alguns sites que TÊM que ser visitado para implementar o ZoneMinder:
Documentação ZoneMinder:
http://www.zoneminder.com/fileadmin/downloads/README.html
Fórum ZoneMinder (IMPORTANTE):
http://www.zoneminder.com/forums/
Placas de Captura:
http://www.zoneminder.com/forums/viewtopic.php?t=8766&highlight=modprobe+conf+kodcon
http://www.linuxtv.org/v4lwiki/index.php/Kodicom_4400R
http://www.zoneminder.com/wiki/index.php/Kodicom_4400r
FONTE: http://www.utilidadelinux.com/2007/06/segurana-patrimonial-com-o-zoneminder.html