picamera
raspistillで撮影できるのは分かったけど、じゃあどうやってプログラム組むんだろ、となる。やり方は複数あるみたいで、シェルスクリプト使ったりあるみたいなんだけど、Pythonでカメラを操作できるみたい。Pythonやったことないけど、やってみたいのでこっちにしようと思った。
https://picamera.readthedocs.io/en/release-1.13/
これね。ここに書いてあるとおりではあるんだけど、メモメモ。
インストール
なんか最初から入ってるらしいんだけど、とりあえず
$ sudo apt-get install python-picamera
でインストール。
そういえば、入ってるPythonのバージョン知らんかったので
$ python --version Python 2.7.13 $ python3 --version Python 3.5.3
だった。違いは知りません。
撮影して、日付時間名で保存
import picamera import datetime from time import sleep now = datetime.datetime.now() dir_path = '/home/pi/nas/' file_name = now.strftime('%Y%m%d%H%M%S') with picamera.PiCamera() as camera: sleep(5) camera.hflip = True camera.vflip = True camera.capture(dir_path+file_name+'.jpg')
ほぼコピペなわけだが。ある程度読んでこう。
1-3行目
importってーのがアプリとかでも使ってたあのimportなんだろう。from … import ~ ってのは、…から~をimportするって意味みたい。timeモジュールにはsleep関数以外にも色々あるけど、今回使うのはsleepだけだからってことなのかな。timeだけだと駄目なんだろうか。パフォーマンス的なアレかしら。
5-7行目
Pythonは変数の型の宣言しなくていいみたい。VBAでいうVariant型みたいなもんなのかな。ちょっと違うか、動的型付けっていうんだって。datetime.datetime.now()で現在時刻を取得できる。datetimeが連続してるのがちょっとあれだなって思った場合は、importのところを
from datetime import datetime
としてあげるとdatetime.now()で取得できるみたい。この時の戻り値はdatetimeオブジェクトということで、次にstrftimeで文字列型に変換してあげる。%Y%m%d%H%M%Sっていうのが書式のコードで
- %Y … 西暦 (4桁) の 10 進表記を表します。
- %m … 0埋めした10進数で表記した月。
- %d … 0埋めした10進数で表記した月中の日にち。
- %H … 0埋めした10進数で表記した時 (24時間表記)。
- %M … 0埋めした10進数で表記した分。
- %S … 0埋めした10進数で表記した秒。
ですって。公式ドキュメントはこちら 。で、ディレクトリのパスとファイル名を変数に代入しとく。
9-13行目
with文だ。VBAでもあるな。書き方ちょっと違うけど、意味合いも似た感じなんだろか?ぱっと見with … as ~で、…を~として扱える感じになるっぽいんだけど。他のサイト見たけどファイルの入出力やらオープン・クローズやらでなんだかよく分かんなかった。これを理解する段階にない気がする。まぁそれはそれとして。sleepでカメラの起動準備。カメラの設置方向が上下逆で、逆さまに撮影されたので、hflip, vflipでひっくり返してあげる。captureで撮影、引数にパスとファイル名を指定してあげると。できたファイルをとりあえずnasのフォルダにtest.pyって名前で保存した。そんで
$ sudo python /home/pi/nas/test.py
ってすると…
撮れた!!!すげーすげー
ピンぼけしてるね。まぁいっか。
cronで定期実行
linuxには定期実行用の仕組みがあるそうで、それをcronていうみたい。VPS使ったときにちょっとだけやった気がする。なんだっけ証明書取得するときだったかな。まぁ、これはもうコピペ。
$ sudo crontab -e
これで設定ファイルみたいなのが開けるので、#がついてない最終行に
0-59/10 * * * * python /home/pi/nas/test.py
と追記した。ファイル名testのまんまだ。あと
$ sudo chown root:root test.py
ってやって所有者変更した。で、暫く待つと…
ファイルがいっぱい追加されておりますぞ!!!いい感じです。これで豆苗ちゃんがいっぱいに成長したら動画作ればいいんだ。わっくわく~
参考
https://deviceplus.jp/hobby/raspberrypi_entry_043/
https://www.sejuku.net/blog/21474
https://qiita.com/Usek/items/d681c6b95d7bea6b3250
https://qiita.com/mykysyk@github/items/e15d7b2b1a988b8e29d4