OKIPPAの試用モニターに当選したので使ってみる

OKIPPA

ヨドバシ通販をちょこちょこ利用しているのだけど、ちゃんと家で受取ったことが殆ど無い。宅配業者は郵便局で、近くに郵便局があるので、不在通知書を支店に持ってって支店受け取りすることが殆どだ。そんな折にこれを見つけた。

https://www.post.japanpost.jp/event/okihai_monitor/

https://www.okippa.life/

置き配に興味はあったのだけど、準備が面倒そうでやってなかった。いい機会なので申し込んでみることにした。

当選

6/24に申し込み、7/18に当選メールが来て、7/25にOKIPPAがやってきた。

とりあえず内容物を確認。ちゃんと全部ある。

  • 取説
  • 置き配バッグ
  • 専用ロック
  • ダイヤル式南京錠
  • 結束バンド
  • シール
  • 配達員向けプラカード

バッグは意外と大きい感じがする。120サイズ(三辺計120cm)の荷物まで入るみたい。ロックと南京錠はダイヤル式で、自分で番号を決められる。桁数は3桁。専用アプリは必須なのかと思ってたけど、スマホに入れなくても使える。同梱の案内書には、日本郵便の荷物だけで使ってね!との記載があった。

https://www.post.japanpost.jp/service/uketori/shitei_kodate/okihai.html

日本郵便の説明ページね。てことはヤマト・佐川では使えないってことなんだと思われる。置いといたら使ってくれたりしないかな。このページ読むと印鑑もいらない。おーいいっすね。

  1. ゆうパック等のように、受取人の受領印が必要な郵便物等については、郵便物等をOKIPPAに収納後、当該郵便物等の配達証に、配達担当者が配達日時および配達場所を記入し、配達の証印または署名を行うことによって配達が完了します(受取人の受領印を要しない郵便物等については、OKIPPAに収納することによって配達が完了します。)。
  2. OKIPPAに空きがない、郵便物等が大型のため配達できないまたは故障その他の理由により、OKIPPAに郵便物等を配達できない場合は、郵便物等を配達郵便局に持ち戻ります。また、受取人宛に配達する郵便物等が複数あり、1通(個)でも配達できない場合は、全ての郵便物等を配達郵便局に持ち戻ります。
  3. 上記(2)により、郵便物等を配達郵便局に持ち戻る場合は、ご不在連絡票により受取人にお知らせし、受取人のご希望される方法で再配達等をします。

早速設置してみるー。

設置

専用ロックとダイヤル式南京錠の番号を設定してから設置する。ちなみにこの2つの錠の番号は違うものにしたほうが良い。ダイヤル式南京錠は解錠状態で置いておく

取説より

わけだけど、解錠状態だと番号丸見えにならざるを得ないので。

置き配バッグは手のひらからちょっとあふれるぐらいの大きさに折れるので設置に場所は全然いらない。大概玄関ドアノブに括るような形になるみたいだけど、自分ちの玄関ドアノブはレバー式で括れないので格子窓の下部に付けることにした。

こんな。バッグは撥水ではあるけど防水ではないので、雨の日はなにか考える必要がある。ゴミ袋でも一緒に入れようかな。それか、すのこでも置こうか。

セキュリティ的なやつ

正直に言うと皆無に等しい。悪い人が持っていこうとすれば簡単に持っていけそうな感じではある。対建物への接続は

取説より

こんな感じで括ってるだけだし、ワイヤーが金属といっても、金切りなんかでソッコー切れそう。専用ロックと置き配バッグの接続は錠になってるといっても3桁だし総当りでやって1番号0.5秒として8分半で開けられる。実際、暗証番号の設定に失敗して分かんなくなり、総当りで解錠した。疲れた。置き配側も縫ってあるだけなので、力を入れれば引きちぎれそう。バッグの開口部はファスナーで南京錠がかけられるようになってるけど、3桁だし同上。ファスナーはプラスチックなので壊せそうだし、バッグ自体も刃物で掻っ捌けば中の荷物は盗れる。

と、色々言ったけど、つまりは「置き配していいよ~」という意思表示をするために使う物、と感じている。これ以外の自作宅配ボックスとかでも同様の懸念は存在するわけだし。最悪盗られてもいいや、ぐらいの気持ちで使うのがいいんだろうね。自分の場合、大事なものは通販で買わないのでそこら辺は気にしてないし、それよりも引き取りめんどくさいという気持ちのほうが勝るので使う。とか言って実際盗られたら心変わりするかもしれんけどさ。心配な人はOKIPPAのプレミアムプランで盗難補償に入ればいいのでは。海外なんかだと玄関先に放り投げられて配達完了!とかあるわけだし、そんな状態の荷物よりは、盗る側の心理的抵抗もこっちのが高いんじゃないかな。何より配達員の負担軽減になるのであれば、使ったほうがいいなぁとも思う。負担軽減といっても、配達員個人単位では新業務の追加になるわけで、覚えること増えただけかもしれんけど。支店単位で見れば再配達が減るわけなので業務量減に繋がるんじゃないのかな。減った分人員削減されたりしてね、それだと意味ないわな。

配達

早速、ヨドバシで購入してみた。届いたら追記しよ。


届いた。特に問題なし。

ちゃんと床面に接するように専用ロックを伸ばしてくれてるし、バッグの南京錠も掛かって番号をずらしてくれてた。でもやっぱ雨んときが不安かも。

ポストには届けましたよ案内が入ってた、これで例えば盗られちゃったとしてもその日には分かるわけか。なるほどー。セキュリティ的に不安はそりゃあるけど、必要十分、自分は使っていくと思う。よかったよかった。

ということで半田ごて買ったので、定点カメラで写真撮る時に、ライト点くようにしてこうと思う。

アンケートに答える

(19/08/29追記)体験モニターなのでアンケートがある。1回目のアンケートがメールで届いたのでどんなアンケートか載せとく。1ヶ月後にもう一回あるみたい。参考まで。

カテゴリー: のーと | タグ: | コメントする

Raspberry Pi Zero WHで作った定点カメラを改良したい②画像に日付を付ける

記事がクソ長くなってしまったので分けることにした。

画像に日付を付ける

調べてみたらexifを使うやつが多いみたい。そんな厳密でなくてもいいんだよな…。Pythonには画像処理ライブラリとして、Pillow, NumPy, OpenCVと種類があるみたい。やりたいのは画像に文字をつけるだけなので、Pillowだけでいいんかな?

Pillowをインストール

$ pip install Pillow

でインストールなんだけど、エラーでちゃんとインストールできない。最後にMemoryErrorと出てたので

$ sudo nano /etc/dphys-swapfile

で、

CONF_SWAPSIZE=2048

こう。でもまだエラーが出る。

Failed building wheel for Pillow

The headers or library files could not be found for jpeg,
a required dependency when compiling Pillow from source.

Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html

なので

$ sudo apt-get install libjpeg-dev

こう。んでもっかいインストール。

$ pip install Pillow
Collecting Pillow
Using cached https://files.pythonhosted.org/packages/51/fe/18125dc680720e4c308
Building wheels for collected packages: Pillow
Running setup.py bdist_wheel for Pillow … –
done
Stored in directory: /home/pi/.cache/pip/wheels/f6/4e/42/5f6c85a93dd4555e47c982a2b1e4405ad056ce255800130552
Successfully built Pillow
Installing collected packages: Pillow
Successfully installed Pillow-6.1.0

いぇい。こんなん自分で調べて解決しれって言われても無理だわー。先人最高!ありがとう先人!!

フォントのインストール

文字を挿入するのにフォントが必要とのことなので、/usr/share/fontsを探しに行ったところ、そもそもフォルダがなかった。Liteってそうなのか。なんかいい感じのフォントないかなーと探してみると7セグを再現したフォントを見つけた。

https://www.keshikan.net/fonts.html

これをダウンロードしてnasのフォルダに入れとく。

画像を読み込んで日付入れて保存

with picamera.PiCamera() as camera:
    sleep(5)
    camera.hflip = True
    camera.vflip = True
    camera.capture(dir_path+file_name+'.jpg')

img = Image.open(dir_path+file_name+'.jpg')
now = datetime.datetime.now()
text = now.strftime('%Y-%m-%d %H:%M')
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('/home/pi/nas/DSEG7Classic-Bold.ttf', 15)
draw.text((5, 5), text, font=font, fill=(255,255,255))
img.save(dir_path+file_name+'.jpg')

camera.capture()で、画像が保存されるので、まずは保存された画像をImage.openで読み込む。datetime.datetime.now()で現在の日付時刻を取得。.strftime(‘%Y-%m-%d %H:%M’)で表示する形式に型変換。ImageDraw.Draw()で、書き込む形式にするみたいな感じらしい。描画する場合この形式にするもんみたい。ImageFont.truetype()で使用するフォントを読み込む。大きさは相対指定したかったけど、とりあえず絶対指定で。draw.text()で始点を指定、今回は左上にした。右下だと計算がめんどい。fontがフォント、fillが色。img.save()で開いたファイルと同じ名前で保存。上書き保存される。んで、

$ python /home/pi/nas/shutter.py

すると…

ついた!!

ターミナルでは動くけど、cronだと動かない

※分かってやってる風に書いてるけど、調べつつやってます。

また画像溜めてからffmpegやってこーと思い、sudo crontab -eで

0-59/10 * * * * python /home/pi/nas/shutter.py

とやった。でも画像が溜まっていかない…、なんでや!こういう時こそログを見ればいいんだな、と思い、/var/log/cron.logを見に行ったところ、ファイルが無い。なんでや!どうやら標準ではログ取らないようになってる模様。ということで

$ sudo nano /etc/rsyslog.conf
#cron.*             /var/log/cron.log

で、cronの部分がコメントアウトされてるのを戻す。(#を取る)

$ sudo /etc/init.d/rsyslog restart

サービスを再起動して反映させる。

$ sudo nano /etc/default/cron
EXTRA_OPTS='-L 5'

#を外して、ログレベルを変更する。’-L 5’にした。

$ sudo /etc/init.d/cron restart

cronも再起動する。そうすると、時間が来ると/var/log/cron.logが作成されて、ログが記録されるようになった。中身を見てみると

Jul 15 21:10:01 raspberrypi-pierce CRON[1173]: (root) CMD (python /home/pi/nas/shutter.py)
Jul 15 21:10:02 raspberrypi-pierce CRON[1169]: (CRON) error (grandchild #1173 failed with exit status 1)

てなってた。確かにエラーになってる。ただこれだけだと意味が分からん。とりあえず「grandchild #1173 failed with exit status 1」でググってみたら、やっぱりこれだけだとcronの実行結果だけで、内容は分かんないみたい。ただpythonの実行エラーっぽいらしい。で、pythonのログを出力するためにsudo crontab -eの内容を

0-59/10 * * * * python /home/pi/nas/shutter.py >> /tmp/test.log 2>&1

とする。この書き方だと、標準出力とエラー出力が一緒に出るそう。で実行されるのを待って/tmp/test.logを見てみると

Traceback (most recent call last):
File “/home/pi/nas/shutter.py”, line 5, in <module>
from PIL import Image, ImageFont, ImageDraw
ImportError: No module named PIL

PILがimportできてない、ということみたい。ターミナルだとちゃんと動くのになんで?ということで「ImportError: No module named PIL」でググる。とりあえずインストールされてるか確認

$ pip list
cryptography (1.7.1)
dnspython (1.15.0)
enum34 (1.1.6)
idna (2.2)
ipaddress (1.0.17)
keyring (10.1)
keyrings.alt (1.3)
numpy (1.12.1)
picamera (1.13)
Pillow (6.1.0)  #これのはず。PILの後継ってことだし。
pip (9.0.1)
pyasn1 (0.1.9)
pycrypto (2.6.1)
pygobject (3.22.0)
pyxdg (0.25)
RPi.GPIO (0.6.5)
SecretStorage (2.3.1)
setuptools (33.1.1)
six (1.12.0)
wheel (0.29.0)

入ってるよ…?関係ないけどpython2.7って2020.01.01で終わるんだって。

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7.

廃止予定:Python 2.7は、2020年1月1日にその寿命が尽きます。Python2.7はその日以降保守されないため、Pythonをアップグレードしてください。 pipの将来のバージョンはPython 2.7のサポートをやめるでしょう。

もうちょっと調べると、ターミナルとcronだと、環境変数が違うみたい。cronの場合pythonがどこにあるか分からなくてエラーになる。みたいな。試してみる。

$ which python
/usr/bin/python
#cronに追記
0-59/10 * * * * which python > /tmp/path.txt
#/tmp/path.txtの中身
/usr/bin/python

同じだなぁ…。でも一応パスを通してみる。

$ echo ${PATH}

で調べると

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

と返ったので、まんまcrontabに

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

と追記。でも、じっと待ってみたけど変化なし。今度はcrontabにpythonをフルパスで書いてみる。

0-59/3 * * * * /usr/bin/python /home/pi/nas/shutter.py >> /tmp/test.log 2>&1

…これも変化なし。ちょっと、ググりパターンが尽きてきた。。。そもそもpython自体は起動できてるので、cronじゃなくてpythonの問題なのかもしれない。で、importエラーに絞って検索してみると、ライブラリのインストールに関する記事を見つけた。

$ pip show pillow

Name: Pillow
Version: 6.1.0
Summary: Python Imaging Library (Fork)
Home-page: http://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: [email protected]
License: UNKNOWN
Location: /home/pi/.local/lib/python2.7/site-packages
Requires:
Required-by:

ここで見るのがLocationのとこ。pillowは/home/pi/.local/lib/python2.7/site-packagesにインストールされている。ライブラリがインストールされてるとこのパスが通ってない場合があるらしいので、まずは

import sys
print(sys.path)

ていう内容のpysys.pyを/home/pi/nas/に作り

$ python pysys.py

すると

['/home/pi/nas', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-arm-linux-gnueabihf', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/pi/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

‘/home/pi/.local/lib/python2.7/site-packages’があるので、ターミナル上で実行した場合、pythonはライブラリの場所を分かってるってことなんだと思う。ではcronではどうか。crontabに

0-59/3 * * * * python /home/pi/nas/pysys.py >> /tmp/test.log 2>&1

と追記。カップ麺を作りつつ待って、/tmp/test.logを見てみると

['/home/pi/nas', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-arm-linux-gnueabihf', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

おおおおおおおおおおおおおおーーーーーーーーーーーーー!!!!!!!!

‘/home/pi/.local/lib/python2.7/site-packages’が無い!!!よね!!!???初めて原因っぽい事に突き当たった気がする!で、じゃあcronで実行する時にパスが通った状態にするにはどうすればいいのかしら…?ググるとpillowをオプション付けて再インスコすればいいみたい。

$ pip uninstall pillow

でアンインスコ。…だけど

Uninstalling Pillow-6.1.0:
  Would remove:
    /home/pi/.local/lib/python2.7/site-packages/PIL/*
    /home/pi/.local/lib/python2.7/site-packages/Pillow-6.1.0.dist-info/*
Proceed (y/n)? y
  Successfully uninstalled Pillow-6.1.0

さっきのディレクトリが含まれてる。うーん?いいのかな。で、まぁ今度は

$ python -m pip install pillow

でインストール。あれ?エラー

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/Pillow-6.1.0.dist-info'
Consider using the `--user` option or check the permissions.

権限ぽいのでsudo付けてみる。

$ sudo python -m pip install pillow

そしたら

Successfully installed pillow-6.1.0

通った。そしたらもっかい

$ pip show pillow

すると

Name: Pillow
Version: 6.1.0
Summary: Python Imaging Library (Fork)
Home-page: http://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: [email protected]
License: UNKNOWN
Location: /usr/local/lib/python2.7/dist-packages
Requires:
Required-by:

おぉ、Locationがcronが見てるパスに変わった!なるほど、そっちか。cronにパスを通すんじゃなくて、そもそものインストール先を変えるのね。と、いうことは、crontabにまた

0-59/3 * * * * python /home/pi/nas/shutter.py >> /tmp/test.log 2>&1

て追記してみると…

うおおおおお!!!!!

できた!!!!!長かったぁ~٩(′д‵)۶

読んでなんとなく分かった気になった質問と回答を雑に翻訳しとく

https://www.raspberrypi.org/forums/viewtopic.php?t=213591

Pythonのライブラリってどこにインストールされるの?

pipを使ってPythonのライブラリをインストールした時、どこのフォルダ階層にインストールされるの?

Re:
  • シングルユーザーの場合(sudoを使わない場合)
    • ~/.local/lib/python2.7
  • システム全体の場合(sudoを使う場合)
    • /usr/local/lib/python2.7
  • aptによってPythonのパッケージをインストールした場合
    • /usr/lib/python2.7

通常、Pythonはサブディレクトリsite-packagesを使うけど、Debianベースのインストール(Raspbianね)はサブディレクトリdist-packagesを使うよ。

つーことで、もし

sudo pip install mylib

てしたら、mylibは

/usr/local/lib/python2.7/dist-packages

にインストールされるよ。

pip3を使う場合、python2.7をpython3.5に置き換えてね。

ふむふむ。つまり一番最初にpillowをインストールした時には、シングルユーザーでインストールされてたので、システム全体のcronで使おうとしてもインストール場所が分かんなくてエラーになってたってことでいいのかな。いいことにしとこう。

結局cronでパス通すやり方は分かんなかったけど、目的は達成できたのでいーや。しかしまぁ権限とかユーザとかグループとかいまいちちゃんと飲み込めてない…。やってけば分かるかなぁ。

参考

https://note.nkmk.me/python-image-processing-pillow-numpy-opencv/

https://qiita.com/tsuchima/items/ca8f0cd383fa93d875c8#raspberry-pi-zero%E3%81%AEswap%E3%82%92%E4%B8%8A%E3%81%92%E3%82%8B

https://qiita.com/paper2/items/b67d07813eba7f895635

https://note.nkmk.me/python-pillow-basic/

http://min117.hatenablog.com/entry/2017/08/26/110104

https://qiita.com/Higemal/items/5a579b2701ef7c473062

https://teratail.com/questions/124857

http://tkns-jp.net/index.php?id=11

https://qiita.com/kkoito/items/28d9a453c425b08738d2

https://gist.github.com/koudaiii/49ac3f8b7c207f0da31f#link2keyword=crontab%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%82%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E7%A2%BA%E8%AA%8D%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%20%E3%83%BB%20GitHub

https://teratail.com/questions/49082

https://higelog.brassworks.jp/1775#link2keyword=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A7%E5%8F%A9%E3%81%8F%E3%81%A8%E5%8B%95%E3%81%8F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%8CCron%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84%E6%99%82

https://titirobo-develop.hatenablog.jp/entry/2018/07/03/141510

https://qiita.com/arumiti/items/835e87c35dcbb69d8ca2

https://qiita.com/Kent_recuca/items/349586e9c034535f2991

https://www.haya-programming.com/entry/2018/09/09/202711

https://teratail.com/questions/181563

カテゴリー: したい | タグ: , , | コメントする

Raspberry Pi Zero WHで作った定点カメラを改良したい①連番で写真を保存

もうちょい自動化したい

もう定点カメラできたから違う感じのタイトルでいいや。連番で写真を保存して、画像には日付時刻を追記して、ある程度溜まったら動画を作る。ていうのをやりたい。フォルダ構成は

nas
|– pic
|– vid
`– shutter.py

こんななった。これtreeっていうコマンドで作れた。ラズパイには入ってなかったので

$ sudo apt-get install tree

ってやったら使えるようになったよ。

開発にあたってIDEないと泣きそうだなーと思って調べたんだけど、何が一番いいかよく分かんなかった。VSCのRemoteDevelopment使ってみたかったんだけど、ラズパイは対応してないアーキテクチャみたい。のでwinローカルでやっとる。泣きそう。

連番で写真を保存

連番で写真を保存、といってもどうやるのがいいんだろ。raspistillのオプションで

-tl, –timelapse : Timelapse mode. Takes a picture every <t>ms. %d == frame number (Try: -o img_%04d.jpg)

ていうのがあるんだけど、ターミナル上で実行しっぱなしみたいな感じになるのであんまやりたくない。プログラム中にカウンタ変数作るってのも、cronで一回一回プログラムを実行してるわけで、保持するやり方がわかんない。カウンタ用のファイルを作るとか?ファイルのリードライトってなんか難しそう。で、ずーっと考えてたら、フォルダ内のファイル数を使う方法を思いついた。Pythonにはフォルダ内のリストを返すのがあるってことでそれ使う。

import os

dir_path = '/home/pi/nas/pic/'
files = os.listdir(dir_path)
file_name = str(len(files)).zfill(5)

os.listdir()でList型のディレクトリとファイルの一覧が返るので、それをfilesで受けて、len()で要素数を調べる。フォルダに何も入ってなきゃ0が返るし、0始まりで都合がよろしい。その数を後ほどファイル名に使う。ただint型とstr型を結合しようとしても、都合よく文字列として自動で型変換はしてくれないので、str()で型変換する。また、このままだと0.jpg、…、10.jpg、…、100.jpgって感じになるので、.zfill()で0埋めしてあげる。結果、

nas
|– pic
| |– 00000.jpg
| |– 00001.jpg
| `– 00002.jpg
|– vid
|– shutter.py

こんな感じになった。とりあえず目的は達成~。

参考

http://yuusuke1988.hatenablog.jp/entry/2014/01/20/223602

https://note.nkmk.me/python-listdir-isfile-isdir/

https://note.nkmk.me/python-zero-padding/

https://uxmilk.jp/12381

カテゴリー: したい | タグ: , , | コメントする

Raspberry Pi Zero WHで豆苗の定点カメラ作りたい⑤ffmpeg編

複数の画像から動画を作成

画像が溜まったので、動画作る。諸事情により成長途中で撮影は打ち切っちゃったので、途中ではあるんだけど、できた。854枚撮れたよ。ラズパイ上でできるのが一番いいんだけど、とりあえずWindows上で作った。

ffmpeg

コマンドラインで動画を作成できるやつ。正直とっつきにくい。

インストール (Windows)

https://ffmpeg.zeranoe.com/builds/

ここでダウンロード。適当な場所に解凍して、そこにパスを通しておく。これJava導入するときにもやったなぁ。

パスを通す

これ忘れそうなのでちょっと詳しく。パスを通す、コンピュータに実行ファイルの在り処を教えてあげる、と、コマンドラインで実行ファイルの場所に行かなくても使用できるようになる、という風に理解してる。ffmpegもそんな感じで使うみたい。

例えば、C:\Program Files\ffmpegにインストールしたとする。

コンパネのシステムに行く。

システムの詳細設定を開く。

環境変数を選択。

システム環境変数内のPathを選択し、編集を押す。

新規を押して、C:\Program Files\ffmpeg\bin、(binの中に実行ファイルがあるので)と追記。

コマンドプロンプトで確認してみる。

ffmpegと入力してエンター。で、エラー立たなきゃおっけー。

win7の時こんな簡単だったっけな…。忘れちゃったよ。

ファイルを連番にリネーム

やり方いっぱいある。自分はリネームの時は、FlexibleRenamerをいつも使ってる。でもなんか「Rename.log が見つかりません」と出てリネームができなくなってる。Win10にしたからかな。解消方法を探したら

https://w8.vector.co.jp/detail.php?s_no=131133

https://blogs.yahoo.co.jp/mewlmewmiaou/5420533.html

ここらへん。権限の問題らしい。めんどくっさー。

Rename.logのプロパティからセキュリティでアクセス許可の設定してあげればよい。

で、写真の名前をを00000.jpg~00853.jpgに変更した。

コマンドプロンプトからffmpegで動画作成

結論から言うと

ffmpeg -start_number 0000 -r 30 -i %5d.jpg -r 30 -an -vcodec libx264 -pix_fmt yuv420p video.mp4

でうまく行った。オプションに関しては全然分からんので、誰かが書いたオプションに合うように自分の環境を変えるのです。結論からって言いましたが結論しかありません。いろんなの試して大変だった。

参考

https://www.kobiwa.jp/2016/08/11/post-135/

https://qiita.com/riocampos/items/2f4fe927b5cf99aff767

https://planet-green.com/ffmpeg-timelapse/2684

https://blog.miz-ar.info/2014/05/ffmpeg-timelapse/

できた

すごくない?よく見かけてた微速度撮影がこんな手軽にできてしまった。

反省と展望

  • 換水の際に位置を揃えなかった。
    • 位置がずれてしまって違和感がある。目印になるようなものを設置したい
  • 夜間の成長が撮れなかった。
    • 夜間もグイグイ成長するので繋がりがちょっとおかしくなって違和感がある。IRカメラを買うか、照明やフラッシュ的なものがあると良かったかも。照明の場合だと生育に影響がありそうなのでフラッシュかな。いやでもフラッシュ付けんの面倒そうだな。
  • カメラがズレた。
    • 動画でいう0:11秒頃にカメラがズレたっぽい。幽霊か侵入者かな?もっとちゃんと固定できると良いけどそんなコストかけたくねぇな。セロテか。まぁいいか。
  • 連番で保存したい、動画まで自動で作りたい。
    • 動画作りのためにいちいちローカルにコピーして、FlexibleRenamer起動して、コマンドプロンプト立ち上げて、ってやるのがめんどくさい。そこまで自動化できればほっといて動画落としてくるだけでよいのでは。そうなったら素敵ね。
  • ↑に関連して、画像に日付・時刻を入れたい。
    • 連番だとぱっと見いつの撮影かが分かんないので画像に日付入ってるといいかも。exifには入ってるんだけどね。そういえば昔のフィルムカメラって右下に日付入ったよね。懐かしいなぁ。

そんな感じで、とりあえずうまくできて嬉しい。へっへへ~。やりたいことも見えたし、もうちょっと改善してみよ。

カテゴリー: したい, できた | タグ: , | コメントする

おっ

お?

おお?

おお~

カテゴリー: のーと | タグ: | コメントする

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

カテゴリー: したい | タグ: , , | コメントする

Raspberry Pi Zero WHで豆苗の定点カメラ作りたい③SSH, NAS, カメラ編

SSH, NAS, カメラ

どれも簡単だった。

SSH

raspi-configから5 Interfacing Options→P2 SSHで有効化。

TeraTermでラズパイのHOST指定して接続する。ユーザー名とパスワード入れたらすぐつながった。最初接続確認みたいなのが出るけど、気にせずつなげると次回からは表示されなくなる。

これで電源コードだけつなげればいいだけになった。分かってる人は、最初から画面とか無しで設定できちゃうらしい。すごいね。

NAS

https://tool-lab.com/make/raspberrypi-startup-14/

こちらのとおりに進めればおっけー。

カメラ

raspi-configから5 Interfacing Options→P1 Cameraで有効化。

テキトーにさっき作ったフォルダの中に移動してから

$ raspistill -o "testnow.jpg"

とすると…

撮れた!マジ感動。

あとあんまりかっこよくないけど、ダイソーのタブレットスタンド買ってきて輪ゴムで留めてカメラスタンドにした。ちなみにこれだと上下逆に撮影される。

カテゴリー: したい | タグ: , | コメントする

Raspberry Pi Zero WHで豆苗の定点カメラ作りたい②初期設定編

はじめてのラズパイ

ネットで調べるとすっごいいっぱい初期設定の記事がある。ので今更書いても意味ないのかもしれんけど、自分のために備忘録的な意味も込めて書いとこう。Win10なのでMacは知りません。

https://www.raspberrypi.org/documentation/

公式はここ。

SDカードの準備

ダウンロード

https://www.raspberrypi.org/downloads/raspbian/

ここ。Downloadだとすごく時間がかかるので、torrentでダウンロードした。落としてきたときはStretchだった気がするけど、今はもうBusterになってるのね。4が出たからですか。そうですか。Desktop環境が入ってるやつだと、Zeroでは能力不足に陥る時があるらしいので、Liteにした。ていうか、それならUSBハブいらなかったじゃんね。マウス使わないんだし。ダウンロードして解凍するとimgファイルが出てくる。

SDカードをフォーマット

https://www.sdcard.org/jp/downloads/formatter/

SDカードの規格を策定してるとこが、フォーマットツールを提供してるので、それを落としてきてフォーマットする。

SD/SDHC/SDXCカードをフォーマットする際、オペレーティングシステムに付属しているフォーマットツールではなく、このSDメモリカードフォーマッター を使用することを強く推奨します。一般的に、オペレーティングシステムに付属しているフォーマットツールはSD/SDHC/SDXCカードを含むさまざまな記録媒体をフォーマットできますが、SD/SDHC/SDXCカードに最適化されていない可能性があり、結果的に性能が低下する場合があります。

とのことなので、おとなしく使おう。

imgファイルをSDカードに書き込む

https://sourceforge.net/projects/win32diskimager/

これ使った。imgファイル書き込みツールはいろんなのがあるみたいなので、好きなの使えばいいと思う。ただimgファイルをコピーするんじゃなくて、SDカードをbootディスク化するみたいな感じみたいよ。これでSDカードの準備はオッケーなので、ラズパイに差し込んで電源を入れるー。

初期設定

起動したことにちょっと感動しつつ、兎にも角にもログイン。userが「pi」、passwordが「raspberry」。スクショ撮り方分からんので画像はイメージ。

終了の仕方だけは覚えとこうと思った。最初電源ぶつ切りにしてたけど良くないみたい。

$ sudo shutdown -h now

ね。あと処理の強制終了がctrl+C。これだけ覚えてりゃなんとかなるって。pingオプション付けずにうった時もこれでなんとかなったし。

そしたら

$ sudo raspi-config

してraspi-configを起動する。

raspi-config

自分でファイルを編集して設定を書いてくこともできるみたいなんだけど、こっちでも大丈夫みたい。こっちのがサラッとできるからこっちでやってく。そういえばラズパイのエディタはnanoっていうのが入ってるみたい。このブログを置いてるVPSの設定した時はvimしか知らなくて四苦八苦したもんだ。nanoってやつは下にショートカットが載ってるから、いちいち調べなくて良い。VPSもこっちにしようかな。

キーボードの設定

キーボードの設定が最初英語キーボードなので、それを日本語にする。知らずにやってて最初アンダーバーどこやねんとか、なんで打てないんだ、故障かしらと悩んでたので、一番最初にこれをやる。

  1.  4 Localisation Options
  2.  I3 Change Keyboard Layout
  3.  ちょっと待つ
  4.  Generic 105-key (Intl) PC
  5.  The default for the keyboard layout ←これと
  6.  Nocompose key ←これは何を設定してるのか知らん。

パスワード変更 (1 Change User Password)

1 Change User Passwordでパスワードを変更する。2回聞かれるので同じやつを入力。タイプしても表示されないけど入力されてるみたい。

ネットワークの設定 (2 Network Options)

N3はなんに使うか分からん。

  • N1 Hostname

あとでNASの設定する時に必要になった。A-Z,0-9とハイフンのみ。最初と最後にハイフンつけちゃ駄目。

  • N2 Wi-fi

SSIDとパスワードと国を聞かれるので入力する。なんか自動で接続してくれた気がする。ステルスSSIDの場合は知らない。再起動必要だったっけな…?聞かれたような気もする…。その場合、

$ sudo reboot

でおっけー。

接続確認

どうすればネットに繋がってるかすら分かってなかったので、調べてみたところWIndowsのコマンドプロンプトからラズパイへping打てばいいみたい。

 ping raspberrypi.local

ね。初期値はraspberrypi.localだけど、上でHost Nameを設定してた場合、Host Name + .localになる。余談だけどなんでこれで繋がるかっつーとAvahiっていうのがラズパイに入ってるからみたい。入ってない時代はIPアドレスを固定したりが必要だったみたい。多分。

アップデート

めでたくネットに繋がったので、この時点で一回raspi-configから出て、アップデートする。$sudo rpi-updateをやるように勧めてる記事とかもあるけどやらないほうがいいみたい。これでアップデートすると開発版にアップデートされるかららしい。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

通常これでよし。

起動時の設定 (3 Boot Options)

  • B1 Desktop / CLI

オートログインの設定ができる。CLI, GUIとオートログインのあるなし。いちいちユーザー名とパスワード入力するのがめんどいので、B2 Console Autologinを選択した。ちなみにOSはLiteを選んでるので、Desktopの方は選んでもエラーになる。

  • B2 Wait for Network at Boot

ネットワークに接続するまで起動を待つ。最初からオンになってたので、オンにしといたほうがいいんだろう。

  • B3 Splash Screen

起動時に文字がバーって出る代わりに画像を表示するらしい。設定しようとしても入ってないよーと言われて設定できなかった。ちぇ。まぁ文字がバーって出るほうが好きだからいいんだけどさ。

地域の設定 (4 Localisation Options)

選択肢は何となく分かるんだけど、どうやって選択すればいいのか最初分かんなかった。YとかEnterとか押しても全然選択されない。正解はスペースで選択。アスタリスク*が付けば選択したことになる。知らないって怖い。

  • I1 Change Locale

“en_GB.UTF-8 UTF-8″にチェックが付いてる。”ja_JP.UTF-8 UTF-8″にもチェック付ければいい…らしいんだけど、やってみたら■■■…みたいな感じで黒い四角がいっぱいの文字化けみたいになっちゃったので、選択しないで使ってる。

  • I2 Change Timezone

日本はAsia→Tokyo一択。

  • I3 Change Keyboard Layout

上でもうやった。

  • I4 Change Wi-fi Country

上でWi-Fi 設定した時に聞かれた気もするけどここでも選べる。JPが日本。

SDカードの全容量を使えるようにする (7 Advanced Options)

  • A1 Expand Filesystem

これオンにすりゃいいらし。なんでこれやると使えるようになって、これやらないと使えるようにならないんだろう。

とりあえず

他は触ってない。とりあえず初期設定と言えるのはこんなとこなのかな。セキュリティ的にどうなんだという懸念がなくもないけど。

https://www.raspberrypi.org/documentation/configuration/security.md

こことか見てやっといたほうがいいんだろうな。

カテゴリー: したい | タグ: , | コメントする

Raspberry Pi Zero WHで豆苗の定点カメラ作りたい①お買い物編

Raspberry Pi+豆苗

これはスマホで撮った。

最近豆苗を育てている。1個100円ぐらいなのだけれど、水に漬けとくと再生するので一粒で二度美味しい的な野菜だ。ほんとにスクスク育つのでなんだか楽しい。こんなに速いならタイムラプス動画を作ると面白そうなのでは?と思い作ってみることにした。

お買い物

宗教上の理由でほぼヨドバシで買いました。Amazonとか電子工作系の通販とか使ったほうが安く上がるっぽい。

本体

https://www.yodobashi.com/product/100000001003904466/

3 model Bと迷ったけど、Zeroにすることにした。もっと言うとGPIO使いそうにないので、WHじゃなくてWでよかったけど、ヨドバシに売ってなかったのでWHにした。無印はちょっと敷居が高そう。定点カメラに飽きたらせっかくだしGPIO使う何かもやってみよう。

ストレージ

http://www.akibadirect.com/shopdetail/000000016145

microSDカード買うの久しぶりだ。最低8G、16Gあれば十分らしい。class10以上のものを選んだほうがいいそうだ。価格comで探していたら32Gエキプロが1,000円ぐらいだったので飛びついてしまった。オーバースペック。まぁいっか。

周辺機器

購入

https://www.yodobashi.com/product/100000001002341338/

https://www.yodobashi.com/product/100000001003118695/

https://www.yodobashi.com/product/100000001004211208/

https://www.yodobashi.com/product/100000001001314553/

流用


インターフェースがmicroUSBなのでそれに合うのを、と思ったけど流用すればいいやと思い直し、変換アダプタを使うことにした。キーボードって有線じゃないとだめかなと不安だったが、今使ってる無線のやつでも使えた。よかったよかった。miniHDMIも変換アダプタを噛ますことに。電源は3Aのやつが推奨されてて、どれ選んでいいか分からんので、それ用ってされてるのを選んだ。ただZeroの場合3Aも要らんらしい。

カメラモジュール

Zeroで使える用をうたってるやつもあったけどちょと高いなーと思って、Amazonで探してたらなんと送料無料980円とかいうのを見つけた。怪しい…と思ったけど結局使えた、やったぜ。ただケーブルのサイズが合わなかった。

https://www.yodobashi.com/product/100000001004251721/

ので、変換ケーブルも調達。結局2000円いかないぐらいになったのかな。

ケース

https://www.yodobashi.com/product/100000001003606977/

直で触るのがちょっと気が引けるので買う。放熱も兼ねてくれそうなアルミのやつにした。なかなか良い。

組立

いつもUSBとPWRがどっちがどっちだか分からなくなる

カメラの爪、最初開き方がわかんなかった

パカッ

外見は全然問題なさそう

サイズが合わなくて絶望したところ

完成

でけた。じゃー設定してこー。

カテゴリー: したい | タグ: , | コメントする

Raspberry Pi 4がでるらしい

https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-from-35/

そっか。

……

………

Zero WH買っちゃったよ…。ほんとタイミング悪いな俺。いーもの、これで豆苗の成長記録つけるんだ…。

カテゴリー: のーと | タグ: | コメントする