Raspberry Pi Zero WHで豆苗の定点カメラ作りたい④picamera, cron編

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

https://note.nkmk.me/python-datetime-usage/

https://qiita.com/tossh/items/e135bd063a50087c3d6a

カテゴリー: したい タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です