Media Center e DVR numa única Raspberry Pi usando Kodi e Zoneminder - Passo a passo
Autor: Luiz Cressoni Filho | Publicado: 2015-05-11T10:58:00-03:00




"Fácil como cair e quebrar um braço"&nbsp;




Este texto mostra como montar um sistema de monitoramento de câmeras e um Media Center por menos de R$300.00


A nova versão da Raspberry Pi é uma máquina muito interessante:


CPU: 900MHz quad-core ARM Cortex-A7
RAM: 1GB&nbsp;


E, como o modelo 1 B+, também tem:


4 portas USB
40 pinos de GPIO
Porta Full HDMI
Ethernet
Saída combinada de video composto e audio stereo
Interface para câmera &nbsp;(CSI)
Interface de display &nbsp;(DSI)
Entrada de cartão Micro SD
Núcleo de video gráfico VideoCore IV 3D



Por ter um processador ARM7, pode rodar qualquer distribuição linux ARM GNU. Reza a lenda que a Microsoft irá portar o Windows 10 para ela. Esperemos, pois.

Existe muita gente usando as Raspberries como Media Center, usando principalmente a distribuição OpenElec + Kodi. Mais detalhes em www.openelec.tv.&nbsp;
Também existe muita gente usando Raspberries como sistemas de segurança de baixo custo usando o zoneminder. Mais detalhes em www.zoneminder.com.

Eu queria os dois ao mesmo tempo, numa mesma raspberry. Já usando o kodi numa Raspberry 1 há mais de um ano em casa, tratei logo de pegar outra e experimentar o zoneminder.
Para tristeza, a Rasp 1 mal dava conta de monitorar uma câmera - eu precisava de duas.
Assim, quando lançaram a Rasp 2, quatro vezes mais rápida, fiz a conta simples e concluí que daria conta de duas câmeras mais o Kodi e ainda sobraria um pouquinho.

Só que o OpenElec carece de um monte de coisa necessária para instalar o zoneminder. Ele tem o mínimo necessário para rodar o Kodi e só. Afinal, foi otimizado para Media Centers e seria injusto reclamar disso. Pelo contrário, é um trabalho excelente. Mas não atende ao propósito e meu conhecimento de linux me fez crer que daria um trabalhão enorme colocar de volta tudo o que arrancaram dele.&nbsp;

Decidi então partir para uma distro mais completa e consegui o que queria usando o Debian para a Rasp 2, o raspbian.
Gravei-o num SD de 4Gb e no final de tudo ele estava com 3.7Gb ocupados. No meu caso, eu preferi mover os dados do Kodi, do zoneminder e do MySql para um pendrive, mas nada impede de se usar um cartão maior.
Quem preferir essa alternativa, basta ignorar os passos onde eu movo as coisas para o pendrive.

Para iniciar, precisaremos de:


Uma placa Raspberry Pi 2 Model B V1.1 (acredite, precisa da placa mesmo);
Um cartão micro SD de 4Gb ou maior;
Um teclado USB;
Um monitor ou TV com entrada HDMI;
Um pendrive de 4Gb ou superior (opcional, leia o texto);
Uma fonte de 5V - pode ser o carregador do celular com tomada micro USB;
Um ponto de rede ethernet;
Cabos para interligar tudo;&nbsp;


Estando tudo à mão e conectado, vamos lá:

I - Instalando o raspbian
1.1. Baixe o arquivo atual, procurando em&nbsp;https://www.raspberrypi.org/downloads/
1.2. Extraia o zip e grave a imagem no cartão. Ao inserir o cartão, dê um dmesg no terminal para ver em que /dev ele está. No meu, ficou em /dev/sdb. Portanto, o comando para gravar o cartão é:

sudo dd if=nome-da-imagem.img of=/dev/sdb bs=4096

1.3. Dê um boot na Raspberry com o cartão. O debian deve iniciar normalmente. Após o primeiro boot, irá aparecer a configuração da raspberry. Selecione a opção que reajusta o tamanho das partições e reinicie o sistema.

A partir daqui, é tudo feito direto no terminal da raspberry. Se preferir, acesse-a via ssh a partir do seu computador. Os dados de login são:
username: pi
password: raspberry



II - Instalando o pendrive (opcional)
Rodando dmesg, o pendrive apareceu como /dev/sda. Veja como fica no seu caso e use o caminho nos comandos abaixo.
2.1 - Formate o pendrive como ext4:

sudo mkfs.ext4 /dev/sda1

2.2 - Edite o arquivo fstab para monta-lo no boot e crie o caminho para ele:

sudo mkdir /mnt/pendrive

sudo nano /etc/fstab

No final do arquivo, acrescente a linha:

/dev/sda1 &nbsp; &nbsp; &nbsp; /mnt/pendrive &nbsp; ext4 &nbsp; &nbsp;defaults &nbsp; &nbsp; &nbsp; &nbsp; 0 &nbsp; &nbsp; &nbsp;1

Salve com CTRL-X e confirmando com Y.

2.3 - Monte o pendrive usando o comando

sudo mount -a

E confirme se está ok.




III - Instalando e configurando o Zoneminder



3.1 - No terminal, instale o zoneminder:

sudo apt-get update

sudo apt-get install zoneminder
Siga as instruções.



IV - Movendo os dados do MySql para o pendrive (opcional)

Siga os passos abaixo:

sudo /etc/init.d/mysql stop&nbsp;

sudo cd /var/lib/mysql

ls -l &nbsp;(para ver quais bases de dados existem)

sudo mkdir /mnt/pendrive/mysqldata

sudo chown -R mysql:mysql&nbsp;/mnt/pendrive/mysqldata
Importante: Somente as bases de dados precisam ser copiadas para o novo local. Assim, temos o mysql e performance_schema. (Não tenho certeza se é necessário mover esse segundo, mas movi e está tudo OK...).

sudo cp -r mysql&nbsp;/mnt/pendrive/mysqldata&nbsp;

sudo cp -r performance_schema&nbsp;/mnt/pendrive/mysqldata

sudo chown -R mysql:mysql&nbsp;/mnt/pendrive/mysqldata/*
Em /etc/mysql/my.cnf, apenas a linha 'datadir' precisa ser alterada:&nbsp;

sudo nano&nbsp;/etc/mysql/my.cnf
altere a linha:

datadir =&nbsp;/mnt/pendrive/mysqldata
Salve e feche (Ctrl+X e Y).

sudo /etc/init.d/mysql start




V - Colocando o site do zoneminder no apache:

sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf

sudo apache2ctl restart



VI - Movendo os caminhos de imagens e eventos do Zoneminder para o pendrive (opcional)

sudo mkdir /mnt/pendrive/zmdata

sudo mkdir /mnt/pendrive/zmdata/images

sudo mkdir /mnt/pendrive/zmdata/events

sudo cp -av /var/cache/zoneminder/images /mnt/pendrive/zmdata/images

sudo cp -av /var/cache/zoneminder/events /mnt/pendrive/zmdata/events

sudo chown www-data:www-data /mnt/pendrive/zmdata/*

editar fstab

sudo nano /etc/fstab
E inserir no final:

/mnt/pendrive/zmdata/images /var/cache/zoneminder/images none defaults,bind 0 2

/mnt/pendrive/zmdata/events /var/cache/zoneminder/events none defaults,bind 0 2



VII - Instalando o Cambozola
O Zoneminder precisa desse plugin jvaa para mostrar os feeds das câmeras. Quando baixei, a versão era 0.936. Se for outra, não esqueça de alterar a última linha.

sudo sucd /usr/srcwget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz

tar -xzf cambozola-latest.tar.gzcp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder/

exit


VIII - Renicie o sistema

sudo reboot

Neste ponto, o zoneminder deve iniciar automaticamente. Pode-se abrir a janela dele pelo navegador no endereço IP-da-raspberry/zm

A configuração do zoneminder, como adicionar câmeras e configura-las está fora do escopo deste post. Leia o manual do zoneminder!!!!! Em casa, duas câmeras IP com frame rate de 12 fps ocupa menos de 60% da CPU da Rasp.





IX - Instalando o Kodi




9.1 - No terminal, baixe e instale o Kodi:

sudo apt-get install kodi

9.2 - Para iniciar o kodi automaticamente, troque todo o conteúdo do arquivo de inicialização do kodi:

sudo nano /etc/init.d/kodi

apague todas as linhas e cole o texto abaixo:

#! /bin/sh### BEGIN INIT INFO# Provides: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;kodi# Required-Start: &nbsp; &nbsp;$all# Required-Stop: &nbsp; &nbsp; $all# Default-Start: &nbsp; &nbsp; 2 3 4 5# Default-Stop: &nbsp; &nbsp; &nbsp;0 1 6# Short-Description: starts instance of Kodi# Description: &nbsp; &nbsp; &nbsp; starts instance of Kodi using start-stop-daemon and xinit### END INIT INFO############### EDIT ME ################### path to xinit execDAEMON=/usr/bin/xinit# startup argsDAEMON_OPTS=" /usr/bin/kodi-standalone -- :0"# script nameNAME=kodi# app nameDESC=Kodi# userRUN_AS=pi# Path of the PID filePID_FILE=/var/run/kodi.pid############### END EDIT ME ##################test -x $DAEMON || exit 0set -ecase "$1" in&nbsp; start)&nbsp; &nbsp; &nbsp; &nbsp; echo "Starting $DESC"&nbsp; &nbsp; &nbsp; &nbsp; start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE &nbsp;--make-pidfile --exec $DAEMON -- $DAEMON_OPTS&nbsp; &nbsp; &nbsp; &nbsp; ;;&nbsp; stop)&nbsp; &nbsp; &nbsp; &nbsp; echo "Stopping $DESC"&nbsp; &nbsp; &nbsp; &nbsp; start-stop-daemon --stop --pidfile $PID_FILE&nbsp; &nbsp; &nbsp; &nbsp; ;;&nbsp; restart|force-reload)&nbsp; &nbsp; &nbsp; &nbsp; echo "Restarting $DESC"&nbsp; &nbsp; &nbsp; &nbsp; start-stop-daemon --stop --pidfile $PID_FILE&nbsp; &nbsp; &nbsp; &nbsp; sleep 5&nbsp; &nbsp; &nbsp; &nbsp; start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE &nbsp;--make-pidfile --exec $DAEMON -- $DAEMON_OPTS&nbsp; &nbsp; &nbsp; &nbsp; ;;&nbsp; *)&nbsp; &nbsp; &nbsp; &nbsp; N=/etc/init.d/$NAME&nbsp; &nbsp; &nbsp; &nbsp; echo "Usage: $N {start|stop|restart|force-reload}" &gt;&amp;2&nbsp; &nbsp; &nbsp; &nbsp; exit 1 ;;esacexit 0

9.3 - Teste se está Ok chamando:

sudo /etc/init.d/kodi start

Se falhar, pode ser que precise habilitar o X para todos, chame:

sudo dpkg-reconfigure x11-common

e escolha "anybody".

estando ok, feche o Kodi e salve a inicialização:

sudo /etc/init.d/kodi stop

update-rc.d kodi defaults


X - movendo dados do kodi para o pendrive (opcional)
Crie uma pasta no pendrive para o kodi e mova tudo o que está nela:

sudo mkdir /mnt/pendrive/kodidata

sudo cp -av /home/kodi/.kodi/userdata /mnt/pendrive/kodidata

Depois, edite o fstab para montar o caminho na inicialização:

sudo nano /etc/fstab
Inclua no final:

/mnt/pendrive/kodidata /home/kodi/.kodi/userdata none defaults,bind 0 2


XI - habilitando o servidor web do Kodi.

Se você quiser controlar o Kodi via http (usando o browser ou os aplicativos para smartphones, é preciso habilitar o acesso ao Kodi via web.
No Kodi, vá em Settings → Services → Webserver → Allow control of Kodi via HTTP. Altere a porta para 8080, pois a porta 80 está em uso pelo Apache onde está rodando o zoneminder).


Aqui também, a configuração do Kodi está fora do escopo deste post. Leia o manual!!!!!



Pronto!!!
Agora, basta reiniciar tudo e ver se está OK.&nbsp;