GUST NOTCH? DIARY

誰がプリンを勝手に食べているのかを調べる

会社や研究室、寮生活など、共同生活の中で冷蔵庫を共有していると、冷蔵庫の中にいれておいたものを誰かに勝手に食べられてしまうというのはよくあることです。(←ほんとかよ)
そんなあなたに捧げる、冷蔵庫の見張り番です。

  • カメラの準備

使えるように設定してね!外からアクセスするなら、インフラストラクチャモードで接続しないと駄目ですよ。
後はそれを冷蔵庫の中に入れます。冷蔵庫を閉めてもちゃんと映像が取得できるか確認しましょう。冷蔵庫の中は扉を閉めてしまうと真っ暗ですので、ライトも一緒に入れて確認しましょう。
マグライトと一緒に入れてみました。ちゃんと撮れてますね。

  • パソコンの準備

Webカメラが使えるようになったら、そのままストリーミングでどこからでも見れるようになるわけですが、ずっと見てるわけにもいかないので、冷蔵庫が開いた時だけその画像を記録するようにしてみます。
bash, wget, ImageMagick, NetPbm を使います。環境は Linux, CYGWIN, OS X なんでもいいです。
そして、こんなスクリプトを書きます。


#/bin/bash
t=300
f=1
while [ $f ]
do
 wget http://camera.ip.address/?action=snapshot -q -O get.jpg #画像を取得
 date +"%Y-%m-%d-%H-%M-%S" > date.txt # 日付と時刻をファイルに出力
 convert get.jpg out.png # jpgに直接重ねがきすると色数が落ちたのでいったんpngに変換
 read d < date.txt # 変数 d に日付文字列を読み込む
 convert -fill gray -font helvetica -pointsize 30 -draw "text 0,30'$d'" out.png out2.jpg # 取得した画像の左上に日付文字列を書き込む
 convert -geometry 30x24 out.png out.pbm # 画像を小さな白黒画像にする
 pbmtoascii.exe -1x2 out.pbm > out.txt # 白黒画像をASCIIで表す
 sed -e 's/\s//g' out.txt | sed -e 's/o//g' | sed -e 's/\"//g' | wc -c > count.txt # 出力から、' ', 'o', '"' を取り除く
 read c < count.txt # 残った文字('M')の数を数える
 if [ $c -lt $t ] ; then # 閾値以下ならば、明るい=ドアが開いたとみなす
  mv out2.jpg $d.jpg # 日付時刻をファイル名にして保存
 fi
done
これで、冷蔵庫のドアが開いている時だけ、その時刻をファイル名として、取得された画像を保存します。
ドアが開いているか閉じているかは、画像が真っ黒かどうかを見ています。pbmtoascii の出力は ' ', 'o', '"', 'M' の4段階で1文字が2pixel分の濃度を表すので、'M' の数を数えていて、画像が真っ黒だと c に 360 が入ります。もしドアが開いていると 'M' の数が少なくなるので、ここでは 300以下だとドアが開いていると判断します。

  • 実行

このシェルスクリプトを実行します。すると、こんな感じの画像が保存されることでしょう。プライバシーの保護のため、一部モザイクをかけています。

これを使って犯人を見つけることができたとして、その後その人との関係が気まずくなったとしても、当方では一切の責任を持ちませんのであしからず。



さてさて、これはあくまでもネタなわけですが、最初は素直に冷蔵庫の中をカメラで監視できないかと思って入れてみたんですね。
家電がネットワークにつながるようになったら何が欲しいか?という話をすると、自動で冷蔵庫の中身を管理する、というネタがよくでてきます。なので、冷蔵庫の中にカメラをいれたらどんな感じになるのかと思ったわけです。
でも、光源を確保しないといけないし、写せる範囲は狭いし、隙間のない冷蔵庫内だと何も写らないし、というわけで、何に使えるかと考えた結果がこんなんでした。ただ扉の開閉を調べるだけなら、ドアにセンサをつければいいので、カメラならではの使い方にしてみました。
今回は画像として保存しましたが、メールを送るなんてのもできますね。
難点は、長時間冷蔵庫の中に置いといてもちゃんと動作し続けるかという点です。このカメラの仕様上は問題ないのですが、うっかり回収しわすれて30分くらい庫内に放置されたマグライトは、電池が冷えてしまいライトが消えた状態になっていました。CS-W07G-CY の場合は結構本体が発熱するので意外と大丈夫かもしれませんが、どのくらい持つのかは実際に長時間やってみないと分かりません。
それに、カメラを動かされないようにしないといけませんね。