CFTV em Linux Ubuntu - Câmeras de segurança com ZoneMinder e PICO 2000 ou Geovision GV250 / GV800

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 -> GSI 23 (level, low) -> 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 < /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 > SYSTEM > 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 >> config)
Mude CAPTURES_PER_FRAME para um valor como 2 ou 4 (Opções >> config)
Use Video For Linux version 1 para cada câmera (found in Origem >> Origem >> 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:
http://IPDOSERVIDOR/zm/?view=montage&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.

Comentários

Anônimo disse…
Olá

Já teria usado o Zoneminder com webcam usb?

estou tentando.. mas a tela onde deveria mostar as imagens permanece escuta...
Alô, anônimo,

Ainda não testei, mas vou testar. Pelo que estou entendendo so software a chave é descobrir exatamente qual é o device path (que nas câmeras CCD costuma ser /dev/video0, por exemplo), qual o device format e capture palette que a tua câmera utiliza. Nas próprias câmeras CCD alterando uma dessas configurações a imagem some.
Francyvaldo disse…
é verdade. E a webcam está mesmo no /dev/video0, tanto que no cheese (não sei se conhece mas é um programinha em linux para webcam) a imagem fica ótima.

vou continuar a luta.

hah! muito obrigado por responder
Antena Digital disse…
As câmeras de segurança são hoje em dia as grandes responsáveis pela identificação de assaltos, furtos e roubos, sempre que a polícia não chega a tempo de ver quem são os infratores as câmeras fazem esse papel.


danilo
Marcos disse…
Ola.
Onde você comprou essa placa. Pergunto porque no mercado livre, tem varias referencias dela, mas quando faço uma pergunta ao vendedor ele me diz que não é compativel com nenhum linux.

Grato.
Oi, Marcos. Na real eles NÃO SABEM que ela é compatível, mas é sim. Por sinal, teoricamente qualquer placa com chipset Bt8xx deve funcionar com ZoneMinder em Linux, mas só testei com a PICO2000. Pode comprar sem medo.
Marcos disse…
Seria mais facil se usar um Ubuntu Server com interface gnome para instalar as cameras? Estou pensando em usar uma nitrix para poder colocar as cameras para rodar, pois fiquei sabendo que pico2000 ela não compacta imagens e as espalha no hd deixando um hd de 1TB comprometido só com as imagens...O que você me diz?
Bom dia, Marcos.
Eu utilizo com sucesso Ubuntu Desktop com o Zoneminder. E na instalação padrão do repositório. Sobre o espaço, o recomendável é deixar uma partição exclusiva para as imagens, quanto ao tamanho depende da tua necessidade de histórico. E na realidade as imagens são compactadas não pela PICO2000 mas sim pelo Zoneminder, gravadas frame a frame em JPG.
Marcos disse…
Cristiano estou numa empreitada muito interessante pra mim que sou iniciante em linux...Montei um servidor com as seguites caracteristicas: Core i7 870, Intel DP55WG, 8GB Kingston 1333mhz, dois HD´s 500gb em raid 0, e 1TB em outro hd só para as cameras, fonte seventeam 550w... essa maquina vai fazer o serviço de rede com samba, apache, mysql, php, para 6 pc´s XP e tres impressoras HP e ainda abrigar as 4 cameras. E não sei nada a não ser instalar o sistema. Vou precisar muito da sua ajuda para colocar essas cameras on line, pois na net todos tem boa vontade, mas cada um faz de um jeito o tutorial e assim não existe padrão e pra mim fica dificil escolher um. Pode me ajudar? Vc tem msn ou e-mail que queira disponibilizar pra mim, ou prefere que seja aqui no blog mesmo?
Marcos, me mande um email para cristianogd@gmail.com. Aí te passo meu MSN e podemos seguir contato.
Hot Rod Project disse...

Ola Cristiano! Seguindo as suas dicas eu consegui instalar perfeito o ubuntu 10.10 com o zoneminder. O problema é quando eu tento vizualizar as cameras pelo mozilla! Em questão de 2 horas (opção monitor do ZM) minha memoria fica lotada causando lerdeza e trancando tudo. Não sei o que fazer! Teria alguma dica. pentium core duo 3ghz, 4ghz-ram.

30 de março de 2011 11:59

Olá, HOT ROD. Copiei para cá teu comentário pois colocaste em outro post. Bom, por "memória lotada" falas no HD ? Se for, muda a função das câmeras para MONITOR (para evitar que gravem) e pode apagar o conteúdo da pasta /var/cache/zoneminder. Se teu disco é pequeno no mesmo post tem uma dica de como gravar os eventos em outro disco. Caso o problema seja outro, posta mais detalhes para eu tentar ajudar, como a carga (TOP) do sistema.
Ursim disse…
Ola Cristiano,

Realmente funciona com as dicas acima, eu instalei uma GV800 com 16 cameras no UBUNTU 10.10 com oZoneminder 1.24 e funcionou belezinha, soh adicionei a parte o pacote do ffmpeg e a inicializacao automatica do Zoneminder.
Esta de parabens.

Abracos
Unknown disse…
Excelente tutorial. depois de bater cabeça a dias desinstalei o zoneminder e segui direito por aqui. consigo tirar jpeg das câmaras no xawtc. Mas no http ip../zm/ source em vermelho e não vejo nada. Alguma luz ?
Thompson disse…
Ola gostei mto do tuto, mais nao to conseguindo ver as cameras... tentei no ubuntu 10.10 e 11.10 e da o mesmo problema. configuro td direitinho, ai la quando coloco /dev/video0 ou 1 ou 2 e salvo as alteracoes, na pagina inicial do zm fica vermelho o caminho do source. to usando uma placa generica da gv800 escrito nela 650/750/800 v3.01 chip fusion 878A.
abs
Desculpem a demora na resposta. Gavinho, às vezes o Zoneminder sobe antes de outros serviços necessários para ele. Experimenta reiniciar o serviço em um terminal executando como root /etc/init.d/zoneminder stop e depois start.
Thompson, o importante é primeiro fazer funcionar com o xawtv, segue as orientações para isso e caso não consigas me avise.
Cristiano..

Esse tutorial é excelente, funciona 100%.

ESTÁ DE PARABÉNS.

Um detalhe, ao instalar use esse comando:

sudo apt-get install zoneminder

e

sudo apt-get install xawtv

PARABÉNS.
Anônimo disse…
Alguem poderia me ajudar instalei como no tutorial mas quando fica em vermelho as configuracoes da camera e quando clico nelas e em probe me da o seguinte erro Unable to probe network cameras, status is '127' / ?
Alguem sabe o que esta errado ?
Esse meu tutorial é meio antigo, foi homologado com a versão 10.10 do Ubuntu. Com a versão 11.04 sei que não funcionava, mas com as mais recentes não testei.
Mas o mais importante é ter método e seguir uma sequência para identificar onde é o problema. Por exemplo, o tutorial orienta a testar antes com o xawtv. As câmeras funcionaram com ele ? Caso haja dúvidas, sugiro reformatar a máquina e seguir o tutorial detalhadamente. Sugiro inclusive testar primeiro baixando uma versão 10.10, funcionando com ela testar depois com versões mais novas. Qualquer dúvida estou à disposição.
Unknown disse…
Boa noite. Alguem tem algum modelo de câmera ip com custo baixo.. para eu rodar no ZoneMinder.
Anônimo disse…
Olá me deram esta tarefa de instalar uma placa Geo Vision GV800 em um computador com Ubuntu 14.4 gostaria de saber se posso contar com sua ajuda caso eu precise?
agradeço se assim for atendido.
Dagoberto.
Bom dia, estou meio afastado do meio, mas ajudo no que for possível. Se te identificares facilita a comunicação.
Dagoo disse…
Olá muito bom teu tutorial só que tem um detalhe
eu não consigo habilitar a função celular na versão 8.5 da GV 800
se tiver uma solução me me avisa ok
dagooview@gmail.com
Dagoo disse…
Olá muito bom teu tutorial só que tem um detalhe
eu não consigo habilitar a função celular na versão 8.5 da GV 800
se tiver uma solução me me avisa ok
dagooview@gmail.com
Unknown disse…
Olá Cristiano.
Nem sei como te agradecer pelo material. Há dias eu venho procurando como alterar o local das gravações do Zoneminder. HD sempre enchendo e dando pau. Nem na própria página oficial do Zoneminder encontrei essa informação, (lamentável, pois é muito comum este problema). Segui os seus passos e deu certo. Muito obrigado!

Postagens mais visitadas deste blog

OpenOffice Calc: converter texto em números ou data

Converter em lote (batch) arquivos mp4 em mp3 usando o ffmpeg