CFTV em Linux Ubuntu - Câmeras de segurança com ZoneMinder e PICO 2000 ou Geovision GV250 / GV800
Autor: Cristiano Dienstmann | Publicado: 2010-10-07T10:45:00-03:00

Um assunto interessante mas ainda muito superficial na web é o funcionamento de câmeras de segurança (CFTV) em Linux.Aqui posto um tutorial de como instalar câmeras utilizando a placa de captura PICO 2000 em Ubuntu.HARDWARE:Placa de captura PICO 2000 com Chipset BT8XX - suporte a 4 câmerasouGeovision GV250 / GV800A princípio deve funcionar com qualquer placa que tenha este Chipset pois é compatível com o driver nativo bttv, mas só testei neste modelo. A minha PICO2000 placa veio com o Chipset BT878A, com a especificação abaixo (impressa no Chip):Fusion 878A2587813Z9T10002160941 TAIWANLink com foto: http://www.zoneminder.com/wiki/images/thumb/9/95/Pico2000_1.jpg/200px-Pico2000_1.jpgFiz um teste anterior com uma placa genérica GV-800 GEOVISION, a mais popular para uso em Windows, porém ela trabalha com um driver proprietário de codificação de vídeo, compatível a princípio somente com Windows.SOFTWARE:Ubuntu 10.10 (testei com sucesso tanto em 32 quanto 64 bits) e ZoneMinder 1.24.2 ( http://zoneminder.com/ ), uma solução WEB para CFTV robusta com muitos recursos e com a última versão estável nativa nos repositórios do Ubuntu.INSTALAÇÃO:Este tutorial pressupõe uma instalação nova do Ubuntu.Instale o Ubuntu e faça todas as atualizações.SOMENTE PARA GV250 / GV800:Abra um terminal e digite:sudo modprobe -r bttvsudo modprobe bttv card=150sudo chmod 666 /dev/video0Para verificar se a placa foi corretamente detectada, abra um terminal e digite: sudo dmesg | grep bttv O resultado deve ser semelhante ao meu:[    4.843499] bttv: driver version 0.9.18 loaded[    4.843501] bttv: using 8 buffers with 2080k (520 pages) each for capture[    4.843640] bttv: Bt8xx card found (0).[    4.843655] bttv 0000:03:02.0: PCI INT A -&gt; GSI 23 (level, low) -&gt; IRQ 23[    4.843664] bttv0: Bt878 (rev 17) at 0000:03:02.0, irq: 23, latency: 32, mmio: 0xfdffe000[    4.843677] bttv0: using:  *** UNKNOWN/GENERIC ***  [card=0,autodetected][    4.843679] IRQ 23/bttv0: IRQF_DISABLED is not guaranteed on shared IRQs[    4.843703] bttv0: gpio: en=00000000, out=00000000 in=00f36fff [init][   20.920016] bttv0: tuner type unset[   20.920088] bttv0: registered device video0[   20.920114] bttv0: registered device vbi0Aqui a informação importante é "video0", que é o endereço da placa para identificar as câmeras. Cada placa no computador deve receber um endereço similar a este.Então ainda no terminal execute: sudo aptitude install zoneminder Ele vai instalar o ZoneMinder e vários outros pacotes, incluindo o MySql. Siga as instruções da tela.Depois execute:sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf Para criar um link simbólico a fim do Apache reconhecer o caminho do ZoneMinder. Então reiniciamos o Apache: sudo /etc/init.d/apache2 force-reload E vamos configurar o banco de dados MySql. Execute na sequência:sudo mysql -u root -p &lt; /usr/share/zoneminder/db/zm_create.sql (Digite a senha informada na instalação do MySql)mysql -u root -p(Digite novamente a senha informada na instalação do MySql)grant select,insert,update,delete on zm.* to 'zmuser'@localhost identified by 'zmpass'; (deve retornar Query OK, 0 rows affected (0.00 sec)) flush privileges; quit  sudo chmod 4755 /usr/bin/zmfix zmfix -a  sudo adduser www-data video Agora vamos editar o sysctl: sudo gedit /etc/sysctl.conf Acrescente no final do arquivo a linha:kernel.shmall = 134217728kernel.shmmax = 134217728Salve e feche o GEdit.SOMENTE PARA GV250 / GV800:Edite o arquivo /etc/init.d/zonemindercoloquesudo modprobe -r bttvsudo modprobe bttv card=150sudo chmod 666 /dev/video0antes da linha "zmfix -a" e reinicie o computador.Testando:Abra o browser e digite:http://localhost/zmDeve aparecer a tela de console.Câmeras:Agora devemos configurar as câmeras. Supondo que apenas uma placa PICO 2000 está no computador, e configurada para /dev/video0. Ela deve possuir 4 "canais", numerados de 0 a 3. Na minha placa o canal zero é do conector mais afastado da placa mãe, e assim na sequência.Vamos fazer a configuração básica supondo utilizar as câmeras para gravação.Configurar Zoneminder*********************Acessando o console: localmente http://localhost/zm ou remotamente http://IPSERVIDOR/zmClicar em ADICIONAR MONITORAba GENERALNome = Escolher um nome para a cameraFunção = Monitor (só exibe vídeo) / Record (grava) / Mocord (grava com detecção de movimento)Habilitado = marcarAba ORIGEMDevice Path = /dev/video0 (conforme foi detectado no dmesg)Capture Method = Video for Linux 1Canal do Dispositivo = (0 a 3 dependendo da câmera conectada)Formato do Dispositivo = NTSCPaleta de Captura = RGB24Largura de Captura (pixels) = 320Altura da Captura (pixels) = 240Preserve Aspect Ratio = TrueClicar em Salvar.Para iniciar o serviço, clicar em "Parado" que está no título (ZoneMinder Console - Parado - vX.XX.X). Deve abrir uma janela com "iniciar" selecionado, basta clicar em "Aplicar".Se a informação em "origem" permanecer vermelha, algum parâmetro deve ser alterado.Para verificar a camera, clicar no "nome".Para visualizar todas em uma mesma tela, clique em "montagem".Dicas: - Para passar o ZoneMinder quase todo para português (br): OPTIONS &gt; SYSTEM &gt; LANG_DEFAULT (passar para pt_br).- O ZoneMider possui muitas configurações. Explore em "Opções".- Utilize uma partição separada ou outro disco para gravar os vídeos, para evitar problemas de superlotação na partição raiz. Siga a dica mais abaixo.- Quando se em várias câmeras compartilhadas em uma placa, pode-se enfrentar:  Imagem de uma câmera aparecendo em outra   Câmera sem imagem   Imagens misturadas  As soluções para estes problemas variam. Você pode tentar cada uma das opções abaixo. lembre-se de reiniciar o zoneminder após cada mudança.   Desmarque V4L_MULTI_BUFFER (em Opções &gt;&gt; config)  Mude CAPTURES_PER_FRAME para um valor como 2 ou 4 (Opções &gt;&gt; config)  Use Video For Linux version 1 para cada câmera (found in Origem &gt;&gt; Origem &gt;&gt; Capture Method)Software para testar as cameras:********************************aptitude install xawtvPara detectar as câmeras:xawtv -hwscanAtalho para acessar o modo "montagem" diretamente da raiz do Apache:*****************************************************************Criar um arquivo index.php em /var/www com o seguinte conteúdo:<!--?php header('Location: zm/index.php?view=montage&amp;group=0'); ?-->http://IPDOSERVIDOR/zm/?view=montage&amp;group=0Configurando para gravar em outro disco ou partição:************************************************Essa medida é importante para evitar problemas com o sistema operacional em função de falta de espaço em disco.Interrompa a execução do ZoneMinder:/etc/init.d/zoneminder stopConfigure um outro disco ou partição para montar no boot e crie as seguintes pastas: (No exemplo, montei o disco na pasta /cameras)mkdir /cameras/events  mkdir /cameras/images  mkdir /cameras/temp Mova a pasta antiga:mv /var/cache/zoneminder /var/cache/zoneminderOLDCrie o link simbólico:ln -s /cameras /var/cache/zoneminderDê as permissões:chown -R www-data.www-data /cameraschown -R www-data.www-data /var/cache/zoneminderReinicie o ZoneMinder:/etc/init.d/zoneminder startTrocar a porta do acesso Web - Apache***********************************Muitas vezes o seu ISP (Internet Service Provider - Provedor de Internet), como a NET, bloqueia o acesso externo pela porta 80. Para trocar a porta padrão basta alterar a porta original (80) para a porta desejada em dois arquivos:/etc/apache2/sites-enabled/000-defaultLinha:e/etc/apache2/ports.confLinhas:NameVirtualHost *:80Listen 80Após, execute:/etc/init.d/apache2 restartReinicie o ZoneMinder e acesse a partir do novo endereço (com exemplo da porta 8000):http://localhost:8000/zm ou http://IPDOSERVIDOR:8000/zmSenha de acesso**************Em função de ser "aberto" para a web, é interessante o uso de usuário e senha no Zoneminder. É bem simples e com recursos interessantes.Acesse o console:http://IPDOSERVIDOR/zmClique em "OPÇÕES"Selecione a opção  "OPT_USE_AUTH"Clique em SALVAR e reinicie o Zoneminder.O usuário padrão é "admin", e a senha "admin". Após reiniciar o Zoneminder, acesse novamente "OPÇÕES", vai ter surgido a aba "USUÁRIOS".Ali pode-se facilmente criar vários usuários determinando o que cada um poderá fazer no Zoneminder e quais câmeras poderá visualizar.Incluir Câmera HTTP remota (PTZ) (via LAN ou Wireless)*****************************************************Acessando o console: localmente http://localhost/zm ou remotamente http://IPDOSERVIDOR/zmClicar em ADICIONAR MONITORAba GENERALNome = Escolher um nome para a cameraTipo de Origem = RemotoFunção = Monitor (só exibe vídeo) / Record (grava) / Mocord (grava com detecção de movimento)Habilitado = marcarAba ORIGEMRemote Protocol = HTTPRemote Method = SimpleNome do host remoto = usuario:senha@IPDOHOSTPorta do host remoto = porta configurada no hostCaminho do host remoto = exemplo: /videostream.cgi (vai depender do modelo da câmera)Cores de imagem remota = cor 24 bitsLargura de Captura (pixels) = 320Altura da Captura (pixels) = 240Preserve Aspect Ratio = TrueClicar em Salvar.