Media Center e DVR em uma única Raspberry Pi usando Kodi e Zoneminder

Por: Luiz Cressoni Filho

Kodi

“Fácil como cair e quebrar um braço”

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

Devido a requisitos de processamento, o tutorial proposto se baseia numa Raspberry Pi 2 que contém, entre outras características:

  • CPU: 900MHz quad-core ARM Cortex-A7
  • RAM: 1GB

Por ter um processador ARM7, pode rodar qualquer distribuição linux ARM GNU. Entretanto, como este artigo não traz nenhuma aplicação ou exija recurso específico da Pi 2, deve funcionar perfeitamente, e ainda com performance melhor, na nova Raspberry Pi 3.

Existe muita gente usando as Raspberries como Media Center, usando principalmente a distribuição OpenElec + Kodi. Mais detalhes em www.openelec.tv.

Também existe muita gente usando Raspberry Pis como sistemas de segurança de baixo custo usando o zoneminder. Mais detalhes em www.zoneminder.com.

Queria os dois ao mesmo tempo, numa mesma placa Raspberry Pi. 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 a Raspberry Pi 2 foi lançada, quatro vezes mais rápida (supostamente 6x), fiz a conta simples e concluí que daria conta de duas câmeras, mais o Kodi, e ainda sobraria um pouquinho.

Problema de hardware resolvido!

Só que o OpenElec carece de um monte de coisas necessárias para instalar o zoneminder. Ele tem o mínimo necessário para rodar o Kodi, passar vídeos em full HD 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.

Decidi então partir para uma distro mais completa e consegui o que queria usando o Debian para a Raspberry, o raspbian.

Eu usei o wheezy, mas tudo deve dar certo também no jessie. E, como não será usado o desktop, pode-se pensar em instalar o jessie light.

Gravei-o em um micro 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, será necessário:

  • Uma placa Raspberry Pi 2 Model B V1.1 (acredite, precisa mesmo da placa) ou superior;
  • 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 com mais de 1A;
  • Um ponto de rede ethernet;
  • Cabos para interligar tudo;

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

I – Instalando o raspbian

1.1. Baixe o arquivo atual, procurando em 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

 

Estamos em linux… não esqueça de desmontar o cartão antes de copiar por cima dele.

Se você é peixinho do Bill Gates, pode usar o Windows mesmo. Baixe o Win32 Disk Imager, disponível  em https://sourceforge.net/projects/win32diskimager/ para gravar o cartão.

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    /mnt/pendrive   ext4    defaults      0      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

 

Kodi Zoneminder

3.1 – No terminal, instale o zoneminder:

sudo apt-get update

sudo apt-get install zoneminder

 

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

Siga os passos abaixo:

sudo /etc/init.d/mysql stop 

sudo cd /var/lib/mysql

sudo mkdir /mnt/pendrive/mysqldata

sudo chown -R mysql:mysql /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 /mnt/pendrive/mysqldata 

sudo cp -r performance_schema /mnt/pendrive/mysqldata

sudo chown -R mysql:mysql /mnt/pendrive/mysqldata/*

 

Em /etc/mysql/my.cnf, apenas a linha ‘datadir’ precisa ser alterada:

sudo nano /etc/mysql/my.cnf

 

altere a linha:

datadir = /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 java 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 da Raspberry Pi

 

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:          kodi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts instance of Kodi
# Description:       starts instance of Kodi using start-stop-daemon and xinit
### END INIT INFO
############### EDIT ME ##################
# path to xinit exec
DAEMON=/usr/bin/xinit
# startup args
DAEMON_OPTS=" /usr/bin/kodi-standalone -- :0"
# script name
NAME=kodi
# app name
DESC=Kodi
# user
RUN_AS=pi
# Path of the PID file
PID_FILE=/var/run/kodi.pid
############### END EDIT ME ##################
test -x $DAEMON || exit 0
set -e
case "$1" in
  start)
        echo "Starting $DESC"
        start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE  --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
        ;;
  stop)
        echo "Stopping $DESC"
        start-stop-daemon --stop --pidfile $PID_FILE
        ;;
  restart|force-reload)
        echo "Restarting $DESC"
        start-stop-daemon --stop --pidfile $PID_FILE
        sleep 5
        start-stop-daemon --start -c $RUN_AS --background --pidfile $PID_FILE  --make-pidfile --exec $DAEMON -- $DAEMON_OPTS
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
;;
esac
exit 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.

Conheça meu Blog: Luiz Cressoni

 

Que tal nos encontrar no SeuTubo para ver dicas, tutoriais e Reviews de placas? Canal Sistemas Embarcados

Que tal na página do Facebook?

Ou Instagram?

Quem sabe Google Plus?

Que tal no Pinterest?

Ou talvez nos encontrar no Twitter para receber as ultimas noticias quentinhas: @SEmbarcados

E não esqueça que também tem o email, contato@sistemasembarcados.org

 

Conheça também nossos grupos do Facebook:

Forte abraço a todos e até a próxima!