前回、ubuntuで動くmotionというフリーウェアを導入することでペット監視システムを構築するお話をしました。
前回の記事をまだ読んでいない人はこちらからどうぞ。

このシステム、目指せウェブカメラなわけですが、今のままだと外出先からペットの様子をチェック出来ません。いや、環境さえ満たしていれば、ルーターのポート解放設定をするだけでスマホなどのブラウザからリアルタイムで様子をチェックできるんですが、前回の終わりでお伝えした様に、どうやら我が家にはグローバルIPが来ておらず、ルーターの外側もプライベートIPなんです。
これではルーターのポート解放をしても無意味ですので、違ったアプローチで外からの監視を実現したいと思います。ルーターのポート解放が出来ない方やその他のアプローチが気になるかたはどうぞ続きをご覧ください。
動体検知したときに外部に通知する方法
ブラウザでのリアルタイム監視が出来ない場合、他にどのような方法で通知すればいいでしょうか?
スマホに標準で備わっているブラウザ以外の機能といえば・・・
そうです、メールですね。インターネットと言えばメールですよ!(謎)
どのスマホでも必ずメールは使えますよね?あなたも何かしらメールアドレスを持っていると思います。今回はそのメールアドレスに、動体検知したことをメールを使って通知することにします。
motionには、動体検知した際に、指定したプログラムを起動する仕組みが備わっていますので、そこにメールを飛ばすように仕込めば、目的は達成出来そうです。
それでは早速メール送信の仕組みを作っていきましょう。
メール送信用ソフトを組み込む
本格的なメール送受信システムを組んでもいいのですが、今回の目的は通知メールの送信だけ。しかも指定する相手も自分だけと、非常にシンプルなものになります。
そこで、簡易メールソフトを利用することで、作業量を少なく抑えていきます。
muttというソフトをインストールします。
1 | apt-get install mutt |
インストールは慣れたものです。コマンド一発で全部やってくれますからね。
次に設定ファイルを作ります。
自分の作業用ディレクトリを作成し、そこに mutt.conf を作成してください。中身は次のようになります。
1 2 3 4 5 6 7 8 | set charset="utf-8" set send_charset="us-ascii:iso-2022-jp" set from = "webcam用アカウント@gmail.com" set realname = "監視 太郎" set smtp_url = "smtp://webcam用アカウント@smtp.gmail.com:587/" set smtp_pass = "webcam用アカウントのパスワード" |
ちなみに今回、メールの送信先はgmailを想定しています。違うところに送る場合は、適宜書き直してください。
さて、上記の設定ファイルを作ったところで、送信テストを行います。
1 | echo "Hello world" | mutt -F mutt.conf -s "件名" webcam用アカウント@gmail.com |
さて、どうだったでしょうか。うまくメールが送信できれば、”hello world”と書かれたメールが届いたはずです。
ここで、我が家の場合、メール送信が上手くいきませんでした。
どうもgmailのセキュリティのせいらしく、怪しいソフトからのメールを弾いているようです。
gmailの設定画面で、推奨しないと書かれていますが、セキュリティレベルを下げてやることでテストメールの送信に成功しました。
motionが動体検知時にメール送信するように設定変更する
ここまで来れば、あとはmotionの設定を追加するだけです。
まず、次のシェルスクリプトを用意してください。名前はお好みですが、ここでは motion_on_movie_end.sh としました。
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/sh AVI_PATH=$1 AVI_DIR=`dirname $AVI_PATH` EMAIL_TO==webcam用アカウント@gmail.com EMAIL_SUB="監視カメラ" EMAIL_BODY="動体を検知しました" MUTT_CONF=/xxx/xxx/mutt.conf # send email by mutt & gmail echo $EMAIL_BODY | mutt -F $MUTT_CONF -s $EMAIL_SUB -a $AVI_PATH -- $EMAIL_TO |
EMAIL_TOに送信先のアドレス、MUTT_CONFには、 mutt.conf を保存してある場所を指定してください。EMAIL_SUBとEMAIL_BODYはメールのタイトルと本文になりますのでお好みで。メールには、タイトル、本文が固定で、添付ファイルとして動体検知したときの動画になります。
ではこのスクリプトをmotionに登録しましょう。
motion.confを開いてください。どこに記述してもよいのですが、メンテナンス性なども考えて、
;on_movie_end value
と書かれているところがあると思いますので、その下に記述しましょう。
1 | on_movie_end sh /home/jsasa/motion/motion_on_movie_end.sh |
保存すれば、これで設定は完了です。
1 | sudo motion |
で、motionを起動して、動体検知したらメールが飛ぶか確認してみてください。
実際に使ってみると・・・
まず、メールに添付されてくる動画が、そのままでは再生出来ないかもしれません。うちのiPhone6ではそのままでは再生出来ませんでした。
これを再生する方法ですが、まず添付ファイルをグーグルドライブに保存します。
次にグーグルドライブでそのファイルを再生すると、すぐには再生できないのですが、しばらく立ってから再生すると、上手く再生出来ました。グーグルドライブが変換作業を行ってくれているようです。
再生までに手間がかかってしまいますが、とりあえず動画の確認は出来ましたので、実際に昼間のペットの様子を監視してみました。
すると、まあ、当たり前なのですが、動体検知する度にメールが飛んできます。仕事中でもお構いなしです。着信設定などをしっかりしておけば問題ないのかもしれませんが、そんなことはしていなかったため、メール着信の度にバイブが鳴ります。その度にスマホを確認しなくてはならず(他のメールかも知れないので)、なかなか煩わしい事になってしまいました。
次回以降は、今回の設定ではgmailのセキュリティを落としているのでこの対策と、メールが頻繁に飛んでしまうことの対策の2点について、検討していきたいと思います。
コメント