domingo, 15 de setembro de 2013

Câmeras de Vigilância IP Wireless com MiniPC (Cubieboard, Foscam/Wanscam, Linux e Zoneminder)

    Descreve-se neste post a implementação de um sistema de câmeras de vigilância (CFTV) IP Wireless(IEEE 802.11x), da masca Foscam e Wanscam, tendo como DVR um miniPC ARM (cubieboard) rodando Linux e o aplicativo Zoneminder. Existem muitos tutoriais explicando o funcionamento destes itens, este post é um agregador com algumas informações pontuais.
    As premissas deste projeto eram as seguintes:

  • Utilização de câmneras wireless e IP. A preocupação seria somente com a parte elétrica.
  • Um DVR pequeno para ser escondido/camuflado em algum local. Existem muitos casos em que em um arrombamento/roubo/assalto os meliantes acabam levando embora os equipamentos de vigilância também.
  • O DVR deveria ter detecção de movimento e ser acessível pela Internet.

    Foram utilizados os seguintes componentes:

  • Cubieboard : Primeira versão, com processador A10. Cogitei a utilização do Raspberry PI, mas o Cubie tem um hardware mais potente. Adquirido AQUI.
  • Micro SD de 32GB: É o disco de armazenamento para as imagens do monitoramento;

  • Câmera IP Wireless Indoor Foscam FI8918w : Adquirida AQUI;

  • Câmera IP Wireless Outdoor Wanscam JW0006: Adquirida AQUI;

  • O restante é o que geralmente já se tem: Access-Point/Roteador Wireless, ferramentas para fixação e etc.
    Com os componentes em mãos, as câmeras receberam as configurações de usuário, para utilização do zoneminder, e rede. (Referência de configuração da câmera Foscam http://www.youtube.com/watch?v=hyhmFmKB5Hs ). Após, foram fixadas nos locais desejados para o monitoramento. Nesta etapa é importante verificar a questão do sinal wifi e da possível interferência de canais de outras redes wifi. Foi feito uso do aplicativo para Android Wifi Analyzer para escolha do melhor canal e medição da potência do sinal.


    Com as câmeras funcionando, parte-se para a configuração do DVR que será o Cubieboard com Ubuntu Linux 12.04 rodando Zoneminder. A primeira etapa é a instalação do Ubuntu na memória NAND do Cubie Board, o cartão SD card será utilizado somente para as imagens gravadas pelo Zoneminder. O procedimento de instalação é este : http://www.youtube.com/watch?v=v_MC_szPZmU e os procedimentos de pós-instalação são este http://linux-sunxi.org/Install_Ubuntu_Linux_for_Cubieboard e este http://blogzs1jen.dyndns.org:83/cubieboard-ubuntu-lenario-initial-configuration/ . 
    A essa altura, O Zoneminder já esta acessível e pronto para ser configurado. A primeira configuração é dos monitores (câmeras). Toda a documentação do Zoneminder pode ser encontrada aqui http://www.zoneminder.com/wiki/index.php/Contents . Tanto a Foscam como a Wanscam (que é um clone da Foscam) tem suas configurações descritas na documentação do Zoneminder, na seção Hardware Compatibility List .
 
   
    Agora as situações específicas desta implementação:
  • Redirecionamento das imagens para o Sdcard:

        Formatado o SDCARD (que neste caso apareceu como mmcblk0p1) em ext4, adicionada uma entrada na fstab (/dev/mmcblk0p1 /media/SD ext4 rw 0 0), criada uma pasta zoneminder (e as subpastas events e images) e  criado links para as pastas events e images do "/var/cache/zoneminder". É necessário parar o Zoneminder para executar isso.

    linaro@cubieboard:/var/cache/zoneminder$ ls -lhtotal 1.0Klrwxrwxrwx 1 root root   28 Sep 14 16:50 events -> /media/SD/zoneminder/events/lrwxrwxrwx 1 root root   28 Sep 14 16:50 images -> /media/SD/zoneminder/images/drwxr-xr-x 2 root root 1.0K Jun  2  2012 temp
  • Problema "Share Data Size Conflict":

        Resolvido utilizando este post: 
    http://lachlanmiskin.com/blog/2012/06/24/zoneminder-shared-data-size-conflict-in-shared_data-for-monitor/
  • Alto consumo de CPU:

        Foi necessário diminuir a taxa máxima de fps para que reduzir a taxa de utilização da CPU do Cubieboard.



    Na configuração "default" (sem limite de fps) com os dois monitores em funcionamento o consumo de CPU ficava em 100% direto. Ajustando para 10fps o consumo ficou em média 80%.



    Acredita-se que  utilizando a versão 2 do Cubieboard (que é Dual Core) possa ajudar nisto. O Zoneminder trabalha com scripts Perl, logo não existe nenhuma possibilidade de melhoria da perfomance realizando uma compilação. Uma outra alternativa é utilizar a aplicação Motion no lugar do Zoneminder, que parece resolver este problema de utilização de CPU, embora ela seja bem simples não tendo recursos de interface web amigável.
  • Utilização pelo Celular:

    Feita a configuração de Port Redirection (específica em cada caso, dependendo da topologia de rede da residência) e o uso de serviços de DDNS (como o No-IP) é possível acessar a interface web do ZoneMinder pela Internet. Embora seja possível ser utilizada por celulares desa forma, existem vários aplicativos nativos que acessam o Zoneminder. Um deles é bastante interessante, o Zmview (https://play.google.com/store/apps/details?id=com.html5clouds.zmview&hl=pt_BR). Permitindo de forma rápida acessar os monitores (Câmeras) em tempo real ou os eventos gravados.
  • Configurando o NO-IP

    A configuração do NO-IP para o Ubuntu 12.04 pode ser encontrada aqui http://www.howtoforge.com/how-to-install-no-ip2-on-ubuntu-12.04-lts-in-order-to-host-servers-on-a-dynamic-ip-address