このエントリーをはてなブックマークに追加
facebooktwittergoogle_plusredditpinterestlinkedinmail

こんにちは、tapunです。

IMG_0171

Raspberry Piで写真を撮れるようになったのはいいけど、毎回ファイル名を指定するのが面倒だな~と思いませんか?

例) $ raspistill -o image01.jpg ←このファイル名指定が面倒!

今日は、写真撮影用のスクリプトを作成することで、自動的に保存される写真データのファイル名を撮影日時に設定する方法をご紹介します。


どうやってコマンドを自動化するの?

コマンドによる作業を自動化するには、その内容を記述したテキストファイルを用意すればオッケーです。
このテキストファイルを「シェルスクリプト」といいます。

今回は、簡単にbash scriptとしてカメラ撮影+メール送信のスクリプトを記載します。

bash scriptとしてテキストファイルを作成する場合には、先頭に「#!/bin/bash」と記載します。


写真撮影+メール送信用のスクリプトの書き方のサンプル

[西暦+月+日_時刻]のファイル名にしたい場合には、下記のようなbash scriptを作成すれば出来ます!

お好みのエディタを使ってcamera.shファイルを作成します。

例)vi camera.shor nano camera.sh

 すると、空のファイルが出来るので、下記の内容を記載して保存します。

/home/example/camera.sh(任意の場所でオッケーです)
#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
raspistill -w 800 -h 600 -o /home/example/Pictures-cron/$DATE.jpg
mutt -s "メール件名" あて先アドレス@gmail.com -c CCアドレス@gmail.com -a /home/example/Pictures-cron/$DATE.jpg < /home/example/photo_message.txt

スクリプトの内容説明

#!/bin/bash

bash scriptとして以降の文字列を読み込むためのお作法です。
詳細はこちらの@ITの記事が分かりやすいかも。

DATE=$(date +"%Y-%m-%d_%H%M")

変数DATEに、dateコマンドの表示オプションを使って「YYYY-MM-DD_HHMM」というファイル名を指定しています。

raspistill -w 800 -h 600 -o /home/example/Pictures-cron/$DATE.jpg

raspistillコマンドを使って写真撮影をします。
-o オプションに先ほど指定した変数DATEを使ってファイル名の指定をしています。
メールに添付する関係上、あまり大きなファイルサイズにしたくないので写真のサイズを”800 * 600 pixel”に指定しています。
※このスクリプトの通りにする場合は、exampleユーザのフォームディレクトリ配下に「Picrures-cron」ディレクトリを作成しておくことを忘れずに!

mutt -s "メール件名" あて先アドレス@gmail.com -c CCアドレス@gmail.com -a /home/example/Pictures-cron/$DATE.jpg < /home/example/photo_message.txt

 muttコマンドを使ってメールを送信します。ここではメールの件名、あて先アドレス、CCのアドレス、添付ファイル、メール本文を指定しています。

添付ファイルは先ほど保存した$DATE.jpgを指定し、メール本文は予め用意しておいた”photo_message.txt”ファイルを使っています。

こんな感じになるので、エディタにnanoをお使いの場合は[Ctrl  + X] [y] [return]を押して保存します。

camera-shell


スクリプトファイルに実行権を付与

作成したスクリプトファイルに実行権限を付与します。

$ chmod +x camera.sh

※chmodコマンドではファイルやディレクトリのアクセス権限を変更します。

よく使うのは、+r(読み取り権限)、+w(書き込み権限)、+x(実行権限)の3つです。

その他のオプションについては、こちらのWeb記事を参照してください。


スクリプトを実行してみましょう

作成したスクリプトを実行してみましょう!

$ ./camera.sh

 写真は撮影されていますか?
メールは送られてきましたか??


まとめ

簡単なbash scriptを作成することで、Raspberry Piでの写真撮影と撮影した写真をメール送信する2つのコマンドを1回のコマンド実行で実現できるように設定しました!

また、撮影した写真のファイル名を撮影日時(YYYY-MM-DD_HHMM.jpg)に設定することもできました。

今回ご紹介したスクリプトで実行していることは、実際には単純な[カメラ撮影]と[メール送信]の2つのコマンドです。
うまくいかない場合は、下記の記事を参考に、それぞれのコマンドについて確認してみてください!

raspistillコマンドの設定

muttコマンドの設定

次回は、定期的にスクリプトを実行するためのクーロンの設定についてご紹介しようと思います。


 


Raspberry Pi ブログランキングへ