【今日のゴール】
RaspberryPiにWEBカメラを接続し、1時間に1回、写真を撮って、Dropboxにアップする。
【使うもの】
WEBカメラ。自分は、下記のを使っています。
ELECOM Webカメラ 130万画素 マイク内蔵 イヤホンマイク付属 HD対応 ブラック UCAM-DLN130TBK
【前提】
下記のエントリーを参考に、DropboxAPIでRaspberryPiからファイルアップロードができること
Raspberry PiでDropboxにファイルをアップロードしてみた
【手順】
- WEBカメラを接続
- fswebcamのインストール
- シェルの作成、cronの登録
WEBカメラを接続
WEBカメラをRaspberryPiにUSB接続します。
下記コマンドを実行し、認識しているか確認します。
$ lsusb自分の場合は、以下のように表示されました。
Bus 001 Device 007: ID 056e:700d Elecom Co., Ltd
fswebcamのインストール
fswebcamというソフトウェアを使って撮影します。まずはインストール。
$ sudo apt-get update $ sudo apt-get install fswebcamインストールが完了したら、試しに撮影してみます。
[-F 100 ]オプションは露出時間です。デフォルトだと暗いのでオプションで設定しています。
$ fswebcam -F 100 /tmp/test.jpg
シェルの作成、cronの登録
撮影してDropboxにアップロードするシェルを作り、1時間に一回実行するようにcronに登録します。
シェルの作成
$ sudo vi /usr/local/sbin/take_picture_DboxUpload.shシェルを作成し、以下のように編集します。
#!/bin/sh # 定数定義 # ファイル名, ファイルパス、露出時間 FILENAME=raspi`date +%Y%m%d%H%M`.jpg FILE=/tmp/${FILENAME} EXPOSURE=100 # 撮影する fswebcam -F ${EXPOSURE} ${FILE} # 写真が存在しかつ、ファイルサイズが1以上であれば、アップロードする if [ -f $FILE -a -s $FILE ]; then dropbox_uploader.sh upload $FILE $FILENAME else exit 1 fi # 写真を削除 rm -f $FILE # 終了 exit 0保存したら、実行権限をつけます。
$ sudo chmod +x /usr/local/sbin/take_picture_DboxUpload.sh
cronの登録
今回は、1時間に1回(毎時10分)にpiユーザで先ほど作成したシェルを実行するように設定します。
cron.dの中に新しくファイルを作ります。
sudo vi /etc/cron.d/pic_dropbox_cron以下の様に編集します。
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 10 * * * * pi /usr/local/sbin/take_picture_DboxUpload.sh保存したら、パーミッションを644にします。
sudo chmod 644 /etc/cron.d/pic_dropbox_cron
以上で1時間に1回、自動的に撮影し、Dropboxにアップロードをしてくれるようになります。
ちなみに、今回は、/etc/cron.d の中にファイルを追加して設定しましたが、crontabに追加してもOKです。