Vigilância por vídeo em casa. Implementação com Zoneminder e Debian 8

1. Introdução


Bom dia

Tendo um NAS doméstico executando o Debian 8 (eu costumava usar o Ubuntu Server 12.04 e 14.04), surgiu a idéia de atribuir, entre outras coisas, o papel de um servidor de vigilância. O Zoneminder foi selecionado como a parte do servidor . O algoritmo de vigilância por vídeo deve ser o seguinte: a gravação 24 horas por dia não é necessária, mas, se necessário, é necessária a capacidade de ativar a gravação na ocorrência de um evento - acionando um movimento, seguido pelo envio de uma notificação por e-mail com capturas de tela do evento. Isso é necessário para garantir o controle do apartamento quando alguém está ausente. Bem, é claro, você precisa da capacidade de se conectar remotamente e verificar se está tudo em ordem.

No site do desenvolvedor, encontrei as mais detalhadasUm wiki especificamente para instalação no Debian 8 de 64 bits. Consequentemente, seguirei as instruções de instalação, explicando alguns pontos com meus comentários.

Instale o Zoneminder


Portanto, temos um servidor com o Debian 8 de 64 bits instalado na configuração mínima (usei o netinstall). Primeiro você precisa editar o sources.list, adicionando backports a Jessie:

sudo nano /etc/apt/sources.list

No final do arquivo, adicione:

deb http://http.debian.net/debian jessie-backports main

Ou remova o comentário desta linha, se ela já estiver lá, ou seja, exclua # no início da linha. Atualizando o índice do pacote:

sudo apt-get update

Agora tudo está pronto para instalar o Zoneminder, o que faremos:

sudo apt-get install zoneminder

Durante a instalação, Apache, MySQL, PHP também serão instalados automaticamente.
Após a conclusão da instalação, crie o banco de dados MySQL:

sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

No processo de criação do banco de dados, você será solicitado a selecionar a senha root. Em seguida, execute os seguintes comandos sequencialmente (via sudo), digitando a senha no caso de uma solicitação:

mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"

mysqladmin -uroot -p reload

chmod 740 /etc/zm/zm.conf

chown root:www-data /etc/zm/zm.conf

Ative a execução automática do Zoneminder:
systemctl enable zoneminder.service

Nós adicionamos o usuário www-data ao grupo sudo, isto é necessário para acessar as câmeras locais:

adduser www-data sudo

Inicie o Zoneminder:
systemctl start zoneminder.service

Verifique se o Zoneminder está em execução:
systemctl status zoneminder.service

Se tudo estiver em ordem, a saĂ­da do comando deve ser algo como isto:

â—Ź zoneminder.service - ZoneMinder CCTV recording and surveillance system
   Loaded: loaded (/lib/systemd/system/zoneminder.service; enabled)
   Active: active (running) since  2016-07-10 18:48:30 IRKT; 5h 31min ago
  Process: 6413 ExecStop=/usr/bin/zmpkg.pl stop (code=exited, status=0/SUCCESS)
  Process: 6455 ExecStart=/usr/bin/zmpkg.pl start (code=exited, status=0/SUCCESS)
 Main PID: 6474 (zmdc.pl)
   CGroup: /system.slice/zoneminder.service
           ├─6474 /usr/bin/perl -wT /usr/bin/zmdc.pl startup
           ├─6507 /usr/bin/perl -wT /usr/bin/zmfilter.pl
           ├─6514 /usr/bin/perl -wT /usr/bin/zmaudit.pl -c
           └─6521 /usr/bin/perl -wT /usr/bin/zmwatch.pl

Configure o Apache:
a2enmod cgi

a2enmod rewrite

a2enconf zoneminder

Adicione seu fuso horário no PHP:
sudo nano /etc/php5/apache2/php.ini

Estamos procurando a seção [Data] e alterando date.timezone para a desejada:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Irkutsk

Salvar - Ctrl + O, sair - Ctrl + X.
Reinicie o Apache:
service apache2 restart

Para poder controlar o Zoneminder através do Internet Explorer, você precisa instalar o Cambozola:

cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz

tar -xzvf cambozola-latest.tar.gz

replace 936 with cambozola version downloaded

cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder

Isso completa a instalação do Zoneminder. Agora você precisa configurar o transporte de email para que o Zoneminder possa notificá-lo sobre eventos por email.

Configurando o Transporte de Correio


Para enviar notificações, o Zoneminder pode usar ssmtp e instalá-lo:

sudo apt-get update

sudo apt-get install ssmtp

Instale mailutils ao mesmo tempo se este pacote ainda nĂŁo estiver instalado:
sudo apt-get install mailutils

Agora defina as configurações de email em nome de quais notificações serão enviadas. Suponha que a caixa de correio esteja localizada em gmail.com. Abra ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf

e leve para este formulário, indicando, consequentemente, seus dados:
root=mymail@gmail.com
mailhub=smtp.gmail.com:587
hostname=localhost
RewriteDomain=gmail.com
UseSTARTTLS=YES
UseTLS=YES
AuthUser=mymail@gmail.com
AuthPass=myverystrongpassword

Revaliases corretas:
sudo nano /etc/ssmtp/revaliases

nós trazemos para este formulário:
root:pp@gmail.com:smtp.gmail.com:587
www-data:pp@gmail.com:smtp.gmail.com:587

E verificamos a exatidão das configurações enviando uma carta de teste:
echo "Hello, World" | mail -s "My email check" mne@napochtu.ru

Se o teste for bem-sucedido, continue com a prĂłxima etapa - instalando o MIME :: Lite e Net :: SMTP. Verifique se estes componentes estĂŁo instalados:
perl -MMIME::Lite -e "print \"Module installed.\\n\";"

perl -MNet::SMTP -e "print \"Module installed.\\n\";"

Instale entrando no shell perl:
sudo perl -MCPAN -e shell

install MIME::Lite
install Net::SMTP


Agora precisamos fazer algumas mudanças muito importantes, sem as quais o transporte de correio do Zoneminder não funcionará. Observe que essas alterações só devem ser feitas se a versão do Zoneminder instalado for 1.29 ou inferior. A partir da versão 1.30, essas ações não são necessárias.

Abra o arquivo zmfilter.pl no editor:

sudo nano /usr/bin/zmfilter.pl

Indo para a linha 1179, vemos o seguinte:
### Send the Message
MIME::Lite->send( "smtp", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

Comente as linhas
MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
e
$mail->send();

e adicione uma linha abaixo deles
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Como resultado, a partir da linha 1179 (no meu caso, mas nĂŁo exatamente esse nĂşmero de linha), o cĂłdigo deve ficar assim:
### Send the Message
#MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
#$mail->send();
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Salve, saia. Isso completa o trabalho com o terminal.

Interface da Web do Zoneminder


O gerenciamento está disponível em ip.adress.servera / zm , go. A primeira coisa a fazer é ir para Opções -> Usuários e definir a senha do administrador:



Em seguida, vá para Opções -> Sistema e marque a caixa OPT_USE_AUTH:



Se isso não for feito, o Zoneminder permite acessar a interface da Web ou conectar-se via um aplicativo cliente sem solicitar um login / senha, o que, é claro, não é seguro. É estranho que essa marca de seleção tão necessária não esteja marcada por padrão.

Agora configure o envio de email. Vá para Optons -> Email e configure por analogia:



No campo EMAIL_BODY, você pode configurar o formato das notificações conforme necessário. Por exemplo, se você adicionar% EI1% ao campo, a primeira captura de tela a partir do momento em que o sensor de movimento for acionado será anexada à mensagem. Uma lista completa de opções para notificações está disponível aqui .

Adicionando câmeras


O Zoneminder pode funcionar com câmeras USB e IP. No momento, minhas câmeras ainda estão a caminho; portanto, como uma versão temporária da câmera para teste de ajuste, uso meu antigo smartphone Alcatel Pop C2 Android, que possui o aplicativo IP Webcam instalado , que transforma o smartphone em uma câmera IP Wi-Fi. Depois de instalar e executar o aplicativo (primeiro recomendo definir a resolução do fluxo de vídeo nas configurações do aplicativo, defino 800x480), a tela do smartphone mostra o IP e a porta através da qual você pode acessar a interface da Web e ver o que é interessante aqui:



Em geral, existem muitas configurações, mas estamos interessados ​​no endereço ao qual o fluxo de vídeo é fornecido. E vemos que há informações para configurar o Zoneminder, o que é uma boa notícia. Ou seja, o caminho do host remoto é especificado, o caminho que precisará ser inserido nas configurações do Zoneminder - após a câmera IP que você precisa adicionar / vídeo:



Volte à interface da web do Zoneminder para adicionar a câmera, selecione Adicionar novo monitor:



no campo Nome, escreva o nome desejado, Origem tipo -> Remoto:



Na guia Origem, preencha os campos: Nome do Host Remoto -> IP do smartphone, Porta do Host Remoto -> porta na qual a Webcam IP está sendo executada, Caminho do Host Remoto -> o caminho que vimos nas configurações da Webcam IP e também indique resolução de fluxo de vídeo, que deve corresponder à que selecionamos anteriormente nas configurações da webcam IP:



Salvamos as configurações -> Salvar e, no menu principal do Zoneminder, vemos a câmera que adicionamos:



Ao clicar no nome do qual vemos a imagem: As



câmeras podem operar em vários modos, o que é determinado pelo parâmetro Function no menu principal:



O modo em que a gravação é realizada apenas movimento no quadro, chamado Modificar, e selecione-o. Agora, o sistema não gravará o fluxo de vídeo continuamente, mas apenas se houver boas razões. Mas ainda precisamos de uma notificação de movimento no quadro. Para isso, você precisa configurar o filtro. Abra Filtros no menu principal do Zoneminder, configure de acordo com a captura de tela, salve-o com qualquer nome:



E não esqueça de marcar a caixa ao lado de Executar filtro em segundo plano:



Assim, se for detectado movimento no quadro, o sistema gravará o vídeo e enviará uma notificação para o correio.

Aplicativos cliente


Se você possui um IP permanente, nada impede o encaminhamento das portas no roteador e a conexão do smartphone a partir da interface externa, além disso, nas configurações do Zoneminder você pode escolher a versão móvel da interface, mas, além disso, decidi procurar algum aplicativo móvel para isso. objetivos. Depois de pesquisar no Google Play a palavra-chave "zoneminder", decidi pelo zmNinja , porque A classificação é bastante alta e gostei das capturas de tela. O aplicativo é pago, versão de teste para avaliação preliminar, infelizmente, não. A funcionalidade é mais do que suficiente - visualizando o fluxo de vídeo em tempo real, visualizando o arquivo morto, eventos gravados, alternando os modos da câmera etc.











Existem também versões para desktopzmNinja para Linux, Windows, Mac OS X - eles são distribuídos gratuitamente. É assim que a versão do Linux em execução no meu Mint 18 se parece:



Em geral, a interface Ă© a mesma para todos os sistemas.

É tudo, obrigado pela atenção.

Source: https://habr.com/ru/post/pt396099/


All Articles