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.
Material necessário
- Raspberry Pi Zero W
- Cabo OTG
- Cartão SD (com Raspbian Stretch Lite)
- Webcam
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”.
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).
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.
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
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.