Upload de imagens para o dropbox com Raspberry Pi 2

Neste tutorial veremos como fazer o upload de imagens para o dropbox com Raspberry Pi. Como exemplo, faremos uma câmera de segurança que detecta movimentos e faz o upload para o dropbox. Para isso, iremos utilizar o Raspberry Pi Zero W e uma Webcam.

Montagem do Dropbox com Raspberry

Material necessário

Para preparar seu cartão SD corretamente, você pode seguir as instruções neste post que explica como instalar o Raspbian para a Raspberry Pi.

Montagem

Conecte a webcam ao Raspberry Pi usando o adaptador OTG.

Para conferir que a webcam foi reconhecida, se log pelo SSH e use o comando:

lsusb

Devem ser apresentadas duas linhas, uma referente à webcam e outra referente ao hub embutido no Raspberry:

Bus 001 Device 002: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Se a webcam não aparecer, existem duas possibilidades: pode ser que ela não seja suportada pelo Raspbian ou que exija mais energia que a fornecida pelo Raspberry. Você pode experimentar conectar a webcam ao Raspberry através de um hub USB com alimentação externa.

Cadastro da aplicação no Dropbox

Usando um navegador no PC, entre na sua conta no Dropbox (ou crie uma se não tiver). Em seguida, navegue para https://www.dropbox.com/developers/apps.

Click em “Create app” e escolha “Dropbox API” e “App Folder” e informe um nome para a sua aplicação (este nome precisa ser único, o Dropbox avisará se já existir uma aplicação com o nome que você forneceu). Click em “Create App”.

Cadastro do Dropbox com Raspberry

 

No meio da tela apresentada você encontrará  a legenda “Generate access token”. Clique no botão “Generate” abaixo dela e anote o código apresentado (você precisará informá-lo adiante).

Cadastro do Dropbox com Raspberry 2

Cuidados com os direitos de acesso

Embora a instalação do script de acesso ao Dropbox com Raspberry Pi e da aplicação de detecção de movimento (motion) sejam simples, precisamos tomar o cuidado de garantir que os diretórios e arquivos envolvidos serão acessíveis. O motion será executado como daemon, sob o usuário motion, e vamos fazer a instalação com o usuário pi. A solução que adotei foi fazer a instalação em um diretório próprio (/home/camera) e depois passar a propriedade deste diretório e dos arquivos sob ele para o usuário motion.

Instalação e Configuração do Acesso ao Dropbox com Raspberry Pi

O acesso ao Dropbox será feito através de um script. Os passos abaixo fazem a instalação e teste:

sudo apt-get update
sudo apt-get install git
sudo mkdir /home/camera
sudo chown pi:pi /home/camera
cd /home/camera
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
./dropbox_uploader.sh
(entrar com a access token do Dropbox)
./dropbox_uploader.sh info

O último comando acima deve mostrar informações sobre a sua conta no Dropbox. Se isto não ocorrer, confira o access token.
Estas instruções são uma atualização e adaptação de um artigo da MagPi.

Instalação e Configuração do motion

O motion é uma aplicação bastante versátil. Vamos usar aqui apenas uma pequena porção dos seus recursos, dê uma olhada no site oficial para conhecer melhor.
A instalação é feita pelo apt-get (aguarde pois é demorada):

cd /home/camera
sudo apt-get install motion

Em seguida é preciso editar dois arquivos de configuração:

sudo nano /etc/default/motion

Procure a linha com “start_motion_deamon” e altere para

“start_motion_deamon = yes”.
sudo nano /etc/motion/motion.conf

Neste arquivo é necessário alterar as linhas abaixo:

daemon on
minimum_frame_time 2
ffmpeg_output_movies off
on_picture_save /home/camera/foto.sh %v %f

Atenção que na última linha não deve ficar o ‘;’ no início da linha. Se desejar você pode alterar também os parâmetros width e height para obter uma foto com maior resolução (se a sua webcam suportar).

Script de controle

O motion trabalha com o conceito de “eventos”. Um evento começa quando é detectado movimento (mudança significativa na imagem) e vai até não ser mais detectado movimento. Em seguida é esperado o tempo configurado em event_gap (60 segundos por padrão) e depois volta a aguardar movimento para iniciar um novo evento.

Com a configuração feita acima, o motion irá tirar fotos enquanto detectar movimento. A cada foto gravada ele chamará o scrit foto.sh, na pasta /home/camera, informando o número do evento e o nome da foto. O script abaixo (que deve ser colocado em /home/camera/foto.sh) disparará o upload das três primeiras fotos de cada evento e apagará as demais:

#!/bin/sh
# Script chamado quando uma foto e' tirada pelo motion
# $1 e' o numero do evento
# $2 e' o nome do arquivo com a foto
IFS=";"
log=/var/lib/motion/foto.log
arq=/var/lib/motion/ultevt
echo "$1 $2" >> $log
evt=$1
evtant=X
declare -i foto=1
if test -f $arq
then
    read evtant foto < $arq
fi
if  test $evt != $evtant
then
   echo "Novo evento [$evt] [$evtant]" >> $log
   foto=1
fi
if test $foto -lt 4
then
  echo Upload foto $foto $2 >> $log
  foto=$(( foto + 1 ))
  echo "$evt;$foto" >> $log
  echo "$evt;$foto" > $arq
  /home/camera/Dropbox-Uploader/dropbox_uploader.sh upload $2 ${2##/*/}
else
  rm $2
fi

Ajustes finais

Execute os comandos abaixo para mover a configuração do dropbbox_uploader e mudar o proprietário dos arquivos e diretórios:

sudo cp ~/.dropbox_uploader /var/lib/motion 
sudo chown motion .dropbox_uploader
chmod +x foto.sh
cd /home
sudo chown -R motion:motion camera

Para disparar o motion, use o comando:

sudo service motion start

Aperfeiçoamentos

Como dito, o motion possui uma quantidade bem grande de opções. Você pode, por exemplo, gerar um vídeo com as imagens coletadas. Experimente também alterar os parâmetros de detecção de movimento para ajustar a sensibilidade às suas necessidades.

Você pode acrescentar o código para enviar um email quando um evento for iniciado.

E aí? Curtiu fazer upload de imagens para o Dropbox com Raspberry Pi?Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Olá,

    Enfrentei um erro no seguinte passo: sudo chown motion .dropbox_uploader

    É apresentado o seguinte erro:

    chown: cannot access ‘.dropbox_uploader’: No such file or directory

    Acredito que esteja relacionado com o comando anterior (sudo cp ~/.dropbox_uploader /var/lib/motion
    ), pois o arquivo .dropbox_uploader não está no diretório atual nem foi copiar para o /var/lib/motion

    Conto com sua ajuda

    1. O comando correto é “sudo chown motion /var/lib/motion/.dropbox_uploader”. O comando cp está correto, o ~ em ~/.dropbox_uploader corresponde ao “home directory” do usuário (no caso /home/pi), que é onde o dropbox_uploader salva a configuração. Peço desculpas pelo erro.