R筋

プログラミングと時々育児

raspberry pi 定点カメラ

毎日19時30分にgoogle homeが「ハイチーズ!」と言い、ラズパイのカメラで部屋の写真が撮られ、ファイルサーバ上にアップロードする仕組みを作った。
f:id:anpontan382:20190309212541p:plain

参考にしたのはこの記事
www.moyashi-koubou.com

では手順を大公開!

①ラズパイはすでにあるので、追加でカメラモジュールを買う。

②壁に取り付ける
f:id:anpontan382:20190309213543p:plain
画鋲と糸を使い見事にレンズの角度を調整するのことに成功した。

③GoogleHomeにしゃべらせるスクリプトを作成

const googlehome = require('google-home-notifier');
const language = 'ja';
googlehome.device("Google-Home", language);
googlehome.ip("192.168.***.***");
googlehome.notify('写真とるよー!ハイ、チーズ、カシャ', function(res) {
  console.log(res);
});

これをhiCheese.jsとして保存する。

④写真を取るスクリプトを作成

#!/bin/bash
sudo node /home/pi/camera/hiCheese.js
today=$(date "+%Y%m%d%H%M")
filename="/home/pi/nas/dailyphotos/${today}.jpg"
echo $filename
raspistill -o $filename

当日の日付の文字列を作成し、それをファイル名として写真をNASに保存するシェル
これをphoto.shとして保存
⑤cronに登録

30 19 * * * sudo sh /home/pi/camera/photo.sh

毎日19時30分にphoto.shが実行される。

Google Homeがはいチーズって行ってからカメラモジュールがシャッターを切るまでのタイムラグの調整が難しかった。
カメラモジュールの起動に時間がかかるので、「こっちむいてー」「写真を取るよー」「ハイチーズ」「カシャ」の言葉でGoogle Homeが喋り終わる時間を調整しながらシャッターが切れるベストタイミングを探した。
完成して一ヶ月ほど動かしたので、フォルダに30枚ほど同じ角度で撮った部屋の写真がたまったが、スライドショーで連続して見ると思った以上に面白い!前日大泣きしている息子が翌日は大笑いしていたり、お気に入りのオモチャは毎日場所が変わっているのに、興味無いオモチャはずっと同じ場所にあったり、油断していたり、カメラ目線だったり、特別ではない毎日の普通の時間、いつもの場所だからこそ撮れる写真の良さというのがあるなぁと感じる。1年単位で続けたら息子の成長も感じられるだろう。

2019/3/25 追記
撮影と同時に、画像を縮小し、妻と自分が見れるslackにアップロードできるようにした。
f:id:anpontan382:20190325231202p:plain

convert -resize 10% -unsharp 2x1.4+0.5+0 $filename today.jpg
curl -F file=@today.jpg -F channels=dailyphotos -F token=XXXXXXXXXXXXXXXXX https://slack.com/api/files.upload