#RaspberryPi で愛猫の定点監視ガジェット「トイレにゃう」を作りました

身内では私の猫狂いはよく知られているところですが、とうとう我が家の愛猫達を定点監視するガジェットを作ってしまいました。その名も「トイレにゃう」です!この記事ではそのノウハウを少し紹介したいと思います。

何故作ったか

一昨年の震災では、TwitterなどのSNSが安否確認に有効だったという声が多く聞かれました。震災をきっかけにTwitterFacebookを始めた方も多いと思います。当時、私も妻もTwitterをやっていたのですぐにお互いの安否確認がとることができ、ひとまず安心しました。しかし、二人とも出勤中であったため、家の様子が分からず、猫達の様子が心配で四苦八苦しながら家路を急ぎました。

幸いにも、家も猫達も何も問題は無かったのですが、今後のことを思うとなんとかしたいなと考えるようになりました。「猫達もTwitterしてくれればいいのに…」「..させちゃおう!」というのが発想の元です^^

f:id:teppei-studio:20130810100118j:plain
Twitterをさせられることになった、かわいいかわいいうちの猫達

どんなものを作ったか

作ったのは、猫のトイレの前にカメラを設置して定点監視するガジェットです。システムがカメラからの画像に動体検知すると、それをTwitterに自動投稿します。

f:id:teppei-studio:20130810100644p:plain
専用に用意したTwitterアカウント

なぜトイレなのか

世の中には、家の中の動画を常に見れるWEBカメラなども売られているのですが、いいお値段しますし、電気代も通信料も無駄にかかりそうだなと。それにそこまでずっと見ていたいわけではないです。そんなに暇でもないですし、第一、猫なんて一日のかなりの時間を寝てすごしてますしね。

であれば、猫が一日に何回か必ず通る場所に設置して、その動きを検知できればいいなと。かつ、その検知結果の通知もTwitterのタイムラインで流れて行くぐらいでちょうどいいだろうと考えました。食事を置くところということも考えましたが、人も通るところなので無駄な検知が多くなるなと思い、であればトイレ前が適当だろうと。

かわいいレディ達(うちの猫達はメスです)に申し訳ないけど、これも君たちを思ってのことだ!、ということでトイレ前に設置することにしました。

どんな通知がされるか

例えばこんな感じです。

f:id:teppei-studio:20130810103810p:plain

ちょっと分かりにくいですが、上からトイレの入り口を見下ろすような格好でカメラが設置されていて、この写真は、猫のみね子がトイレの入り口から上半身を出した状態で用を足している様子です。写真左下に白いのが見えますが、みね子のかわいい前足です。

f:id:teppei-studio:20130810103934p:plain

あ、ふじ子が来た。

f:id:teppei-studio:20130810104000p:plain

ふじ子がカメラに気がつきました^^

ちなみに動画も撮れています。かわいいふじ子が映ってる♪


トイレにゃう - YouTube

どう作ったか

で、出来上がったのが、これです。

f:id:teppei-studio:20130810101430j:plain

画像真ん中の黒いのがWebカメラで、その下にRaspberryPiというサーバが写っています。RaspberryPiというのは、3千円程度で買える手のひらサイズのサーバです。

Raspberry Pi Type B 512MB

Raspberry Pi Type B 512MB

扱い方は、この本を参考にしました。

ちょっと前まで、この二つのセット販売がされていましたが、終わってしまいましたね。でもまた復活する可能性が高いです。

日経Linux「Raspberry Pi」特別セット販売

このムックにはちょうど「監視カメラを付けて自宅を警備!」というのが載っていて、これを参考にしました。

動体検知には、motionというソフトウェアを使います。これが、Webカメラの画像から動体検出をして、動画ファイルと静止画像ファイルを設定したディレクトリに出力してくれます。これをスクリプトで拾って、Twitterにアップデートするという流れです。

スクリプトはRubyで書きました。やー、twitter-gemすばらしいですね。とっても簡単にTwitter投稿処理が実装できました。

試行錯誤したところ

motionは動体検出したイベントを発行して、そのイベントで稼働するシェルを登録できるのですが、画像出力する頻度が高くて、Twitter投稿がすごく短い時間に大量に発生してしまい、TwitterAPIからエラーが返ってきました。本当は画像出力する間隔を調整したいところなのですが、やり方が分からず、結局motionのイベント契機ではなく、cronで5分間隔でシェルを回して、出力された画像を3秒間隔分を拾って投稿するようにしました。

あとは、やっぱり部屋が暗いと動体検出できないので、センサー付き蛍光とか買おうかなとか、カメラの角度とか、ガジェットの外側の話でいろいろ試行錯誤がありました。

Raspberry Piを使ってみて

とっても楽しかったです。簡単、、、と言うことができるかは微妙ですが、普通にWEBシステム開発ができる人ならば、そのスキルをそのままに活用することができます。motionやruby、あとはプロセス監視のmonit等、馴染みのある技術をそのまま活用できるのはすごく楽です。

一点、想定外だったのが、RaspberryPiの他に用意するものが結構あって、RapberryPi本体が届いても、なかなか作業に着手できませんでした。その辺は、ぱくえ先生がRaspberry Piが届くまでに最低揃えておくべき物 | パクえ先生 ブログにまとめていてくれてますので、参考にしてください。

最後に

仕事中に愛猫の様子を見れるのは思ってた以上に楽しいです(でへ^^) 作って良かった。