RaspberryPi como solução NVR
Recentemente, um dos meus parentes mais próximos quis instalar um plano de segurança em sua casa usando uma solução de CCTV (circuito fechado de televisão, também conhecido como vigilância por vídeo). Recebemos algumas cotações que estavam claramente fora do orçamento para nós (o preço mais baixo era de 1300 euros, incluindo 4 câmaras, uma caixa NVR e a configuração).
O meu desafio era cortar o preço pelo menos em 2, incluindo o hardware, o software e a configuração. O benefício subjacente é também explorar e aprender.
Gosto de começar com o take aways primeiro para que você possa ler mais detalhes se estiver interessado.
- Não use um servidor remoto como solução de hardware NVR. Use em vez disso um hardware local, como o raspberryPI one.
- Assim, um raspberryPI com um sistema operacional leve (Raspbian Stretch Lite) será usado como uma solução de hardware NVR (Network Video Recording), uma vez que o Raspberry tem uma capacidade de codificação/descodificação de hardware H264.
- Shinobi é uma solução CCTV de código aberto que será instalado nesse dispositivo raspberry PI e usá-lo como uma solução de software NVR.
- Compra suas câmeras com 2 requisitos obrigatórios: elas devem ser compatíveis com IP, e devem ser compatíveis com os padrões ONVIF. Configurando suas câmeras dentro da solução CCTV será abordado em outro blog post.
Software : Open Source Shinobi
Open Source não significa necessariamente livre, mas tem o benefício de abrir o código fonte. E como engenheiro de software, eu prefiro pagar por um software que eu possa cavar e modificar, em vez de um fechado.
Após investigação, existe uma solução de CFTV de código aberto chamada shinobi que nós vamos usar. Ela é desenvolvida com nodeJs (javascript no lado do servidor). O projeto é bastante ativo, e existem 2 versões : Community Edition, que é gratuita e sob GPLv3, e uma versão Pro, que tem uma assinatura mensal e está sob um EULA (acordo de licenciamento do usuário final) específico. No entanto, você também pode usar a versão Pro para uso pessoal, que é o meu caso.
Hardware : Câmeras
Existe um monte de câmeras por aí, com vários recursos e vários preços ! Qual delas comprar e instalar ?!
Neste artigo, não vou recomendar nenhum dispositivo de câmera em particular, pois depende não só dos orçamentos, mas também das necessidades (visão noturna, detecções, áudio, qualidade das lentes…). Mas, há definitivamente um ponto a ser levado em conta ao comprar o seu : a sua câmera deve ser um dispositivo IP, e deve ser compatível com ONVIF.
ONVIF é um fórum aberto da indústria que fornece e promove interfaces padronizadas para a interoperabilidade eficaz de produtos de segurança física baseados em IP.
Isso significa que, seja qual for o fabricante, se a sua câmera é compatível com ONVIF, então ela implementa os padrões abertos da indústria. Isso lhe dará a capacidade de interconectar muitos dispositivos entre si e, o mais importante para nós, usar o nosso Open Source Shinobi NVR para descobrir e se comunicar com nossas câmeras.
Eu farei outro post mostrando como configurar suas câmeras e conectá-las ao Shinobi. Mas primeiro vamos ter o Shinobi a funcionar, que é o propósito deste artiche.
Servidor Remoto como hardware NVR : má solução
Durante a minha experiência, tentei primeiro instalar o Shinobi num servidor remoto com um Atom N2800 1,86GHz, 4GB de RAM que eu usaria um hardware NVR. Mas para conectar minhas câmeras naquele servidor remoto, eu tive que configurar meu roteador local para portar o stream em tempo real da câmera, mas também sua porta de protocolo ONVIF. Além disso, havia uma enorme latência de streaming da câmera para aquele servidor NVR remoto (limitado pela minha largura de banda de upload da Internet).
Então decidi instalar um hardware NVR que estaria na mesma rede local das câmeras. Os benefícios são múltiplos :
- não abrir o stream para fora (o que poderia ser uma quebra de segurança).
- ter um loop fechado entre as câmeras e o hardware NVR na rede local
Servidor local como hardware NVR : solução melhor
Servidor NVR remoto: solução muito ruim. Por isso a minha escolha continuou usando um raspberryPI. O preço é realmente acessível para o nosso caso de uso (cerca de 35 euros) e as capacidades de hardware mais do que suficiente. A característica mais importante é a sua capacidade de codificação/descodificação de hardware H264.
Eu tinha um raspberryPI em casa, que é o modelo 1B+ a partir de 2014. Ele faz o trabalho, mas se você não estiver equipado, recomendo a compra do último modelo até a data (modelo 3 B+).
Instalando o Shinobi no Raspberry
Antes de instalar qualquer software no nosso raspberry, precisamos instalar o Sistema Operacional. No nosso caso, vamos usar uma versão muito leve do Raspbian sem GUI
Instalar o Raspbian no seu PI
- Baixar o Raspbian Stretch Lite (sem pacotes para GUI) no seu computador a partir de https://www.raspberrypi.org/downloads/raspbian/
- Verifica que não há corrupção no seu zip recém baixado
$ shasum -a 256 2018–11–13-raspbian-stretch-lite.zip
- Instalar a imagem do Raspbian no seu SDCard. Para conveniência, você pode usar uma ferramenta gráfica chamada Etcher : https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Inserir o cartão SD no seu raspberry PI, ligar um teclado, o seu HDMI & ligar o seu raspberry.
Log no seu PI
- Login no seu raspberry. O login padrão é pi, a senha é framboesa.
- Primeiro de tudo, mude a senha do usuário ‘pi’ por razões de segurança. Para fazer isso :
$ passwd
- actualizar pacotes no seu PI se necessário para ter as últimas versões de qualquer um deles
$ sudo apt-get update && sudo apt-get upgrade
Ativar SSH no seu raspberry
Primeiro de tudo, verifique no seu raspberry se o serviço SSH está rodando
$ sudo service ssh status
(dica : você pode verificar todos os serviços no seu dispositivo executando o seguinte comando :
$ sudo service --status-all
Se o ssh estiver ativo, pule este passo; caso contrário, execute o serviço
$ sudo service ssh start
# Para boots futuros, você precisa ativar o ssh no boot up
* solução 1
$ sudo update-rc.d ssh defaults
$ sudo update-rc.d ssh enable
- solução 2
ou, Você também pode configurar o seu framboesa usando a ferramenta dedicada :
$ sudo raspi-config
>> Interface Settings
>> SSH
>> ENABLE
Acesso ao seu framboesa por ssh
Para aceder ao seu dispositivo a partir da sua rede local, precisa de conhecer o seu endereço IP local. No entanto, este endereço é atribuído pelo seu router e pode mudar com o tempo.
>
- Então ou define um IP estático para o seu raspberryPI configurando o seu routeur (associando um IP local estático ao endereço MAC do seu raspberryPI).
- Or, a solução preferida aqui : verifique o hostname do seu raspberry executando o comando
$ hostname
No meu caso, o hostname do dispositivo é o raspberrypi. Posso então facilmente ssh o pi sem saber o seu endereço ip, pelo seguinte comando :
$ ssh [email protected]
Instalar Shinobi
Agora que o nosso SO está devidamente configurado e que podemos aceder ao nosso dispositivo através do ssh, vamos instalar o Shinobi. A maneira mais fácil é executar o seguinte comando no seu PI (como definido na documentação) :
$ sudo su
$ sh <(curl -s https://gitlab.com/Shinobi-Systems/Shinobi-Installer/raw/master/shinobi-install.sh)
A instalação será interativa, como segue :
# install location
Install Location for Shinobi
*Note : Default install location is "/home"
Do you want to install a custom location for Shinobi?
(y)es or (N)o? Default : No# shinobi version
Install Shinobi CE or Shinobi Pro?
— — — — — — — — — — — — — — — — — — — — — — -
*Note : Shinobi Pro is free for personal use.
*Learn more at http://shinobi.video/pro
— — — — — — — — — — — — — — — — — — — — — — -
©E or (P)ro? Default : Pro# install branch (master in stable)
Install the Development branch?
(y)es or (N)o? Default : No
N# OS selection
The installer will say that the OS is not detected. Select ubuntu instead.
Shinobi Installer
========
Select your OS
If your OS is not on the list please refer to the docs.
========
1. Ubuntu
2. CentOS
3. MacOS
4. FreeBSD
5. OpenSUSE
========
1# DB : choose MariaDB as RDBMS and choose a root password
Shinobi — Do you want to Install MariaDB? Choose No if you already have it.
(y)es or (N)o
y# install shinobi database
Shinobi — Database Installation
(y)es or (N)o
y# configure Shinobi to start on boot
Shinobi — Start Shinobi and set to start on boot?
(y)es or (N)o
y
# tamanho da instalação
A totalidade do raspbian + shinobi (incluindo todas as dependências) só levou menos de 2GB de espaço.
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.8G 5.2G 26% /
A instalação agora está completa !!!
Shinobi backoffice
A instalação dir-lhe-á para abrir o seu navegador com o seguinte link :
|| Open http://192.168.0.10:8080/super in your web browser.
||===================================
|| Default Superuser : [email protected]
|| Default Password : admin
No entanto, é melhor usar o nome da máquina para se livrar da incerteza do endereço IP do seu dispositivo (que pode mudar em vez de reiniciar)
http://raspberrypi.local:8080/super
# alterar o login/pwd do super utilizador
Assim que fizer login em http://raspberrypi.local:8080/super, altere o seu login/pwd na tab ‘Preferências’ por razões de segurança.
# adicione um novo usuário
Parte o super usuário, você precisa adicionar um usuário ao shinobi (este usuário pode ter o mesmo e-mail).
Este usuário seria capaz de logar no painel usando diretamente este link na rede local
http://raspberrypi.local:8080/
Você está pronto para usar seu raspberryPi com Shinobi como uma solução NVR local.