Raspberry Piで写真を撮ってcronでDropboxに定時アップする
はじめに
チューリップの球根を買ったので、その成長の過程を見るために自動的に毎日写真を撮ってDropboxへアップします。
使用するもの
- Raspberry Pi Model A+
- Raspberry Pi用カメラモジュール
- Raspberry Pi カメラモジュール専用クリアケース
- モバイルバッテリー CHE-061
カメラを接続する
カメラのケーブルをRaspberry Pi のHDMIポートの右横に挿す。
青色がHDMIポートの反対側に。
次のコマンドでファームウェアを最新のものにアップデート。
$ sudo apt-get update
$ sudo apt-get upgrade
Raspberry Pi のメインメニュー→[設定]→[Raspberry Piの設定]を選択し、
設定画面の[インターフェース]タブを開く→カメラを有効に。
次のコマンド例で写真が撮れる。
$ raspistill -o /home/pi/Pictures/test.jpg -w 800 -h 600
★ところが実際には写真が撮れず数時間を試行錯誤に費やす。。
カメラのクリアケースへの収まりがかなり悪く、その影響でカメラ側のケーブルの接触不良になっていたことが原因だった。てっきり、はんだ付けされているとの思い込みが良くなかった。ケースをヤスリで削って対応。アマゾンの他評価も同じ。。
Dropboxの事前準備
パソコンからDropboxのdeveloperサイトにログイン。
https://www.dropbox.com/developers/apps
ログインしたページの右上にある[Create app]ボタンを押し、下記の設定。
> 1. Choose an API → Dropbox APIを選択。
> 2. Choose the type of access you need → Full Dropboxを選択。
> 3. Name your app → 任意の名称を入力。
[Create App]ボタンを押す。
[Generate]ボタンを押してAccess tokenを生成。
生成されたAccess tokenは後で入力する。
Dropbox-Uploaderのダウンロード
次のコマンドでダウンロード、権限付与。
$ sudo git clone https://github.com/andreafabrizi/Dropbox-Uploader/
$ cd /Dropbox-Uploader/
$ sudo chmod 755 dropbox_uploader.sh
次のコマンド例でダウンロードファイルを移動、実行。
$ sudo mv dropbox_uploader.sh /usr/bin/
$ /usr/bin/dropbox_uploader.sh
下記のメッセージが出るので事前に取得したAccess tokenを入力。
# Access token:
次のコマンド例でアップロードテスト実行。
$ /usr/bin/dropbox_uploader.sh upload /home/pi/Pictures/test1.jpg test1.jpg
下記サイトにファイルがアップされている。
https://www.dropbox.com/h
★もし、Access tokenの入力を間違って再設定したい時は下記を実行。
$ /usr/bin/dropbox_uploader.sh unlink
カメラ撮影とアップロードのスクリプト作成
次のコマンド例でスクリプトを生成。
$ nano /home/pi/Desktop/camera.sh
次の内容で作成する。
#!/bin/sh
DATE=$(date +"%Y-%m-%d_%H%M")
raspistill -o /home/pi/Pictures/$DATE.jpg -w 800 -h 600
/usr/bin/dropbox_uploader.sh -f /home/pi/.dropbox_uploader upload /home/pi/Pictures/$DATE.jpg /cam/$DATE.jpg
rm /home/pi/Pictures/*.jpg
★上記「.dropbox_uploader」は設定ファイル(隠しファイル)でユーザのホームディレクトリにある。クロンで実行する場合には下記 -f がないとダメ。
次のコマンドで実行権限付与。
$ sudo chmod +x /home/pi/Desktop/camera.sh
次のコマンドでテスト。
$ /home/pi/Desktop/camera.sh
クロンの事前準備(ログ出力する設定)
次のコマンドで設定ファイルを開く。
$ sudo nano /etc/rsyslog.conf
下記のコメントを有効に。
# cron.* /var/log/cron.log
rsyslog サービスを再起動して設定を反映。
sudo /etc/init.d/rsyslog restart
ログレベルを設定するためにcron の設定ファイルを開く。
$ sudo nano /etc/default/cron
下記のコメントを有効にして値を編集。全部記録する設定にする。
# EXTRA_OPTS="-L 15"
cron サービスを再起動して設定を反映する。
$ sudo /etc/init.d/cron restart
下記のログを確認する。
/var/log/cron.log
クロンでスクリプトを定期実行
次のコマンドを実行。nano エディタを選択。
$ crontab -e
下記を追加して保存(毎日8:30に実行)。
30 8 * * * sudo sh /home/pi/Desktop/camera.sh
なお5分毎に実行する時 & ログ出力 は次のコマンド。
*/5 * * * * sudo sh /home/pi/Desktop/camera.sh 1>> /home/pi/Desktop/cam.log 2>> /home/pi/Desktop/camerr.log
次のコマンドで設定内容を確認できる。
$ crontab -l ←(エル)
次のコマンドでクロンの起動有無を確認できる。
/etc/init.d/cron status
クロンを起動する時。
$ sudo /etc/init.d/cron start
クロンを再起動する時。
$ sudo /etc/init.d/cron restart
クロンでメールのエラー出た時(postfixをインストール)
$ sudo apt-get install postfix
結果
近くにコンセントなく、モバイルバッテリーを使ったが、2晩持たない。。
写真は下図の通り。球根の左はテンポドロップで、一緒に結晶を確認しています。