流行りに乗って、USBカメラとRaspberry Pi(どのシリーズでもOK)で監視カメラを作ってみました。

用意するもの

Raspbianが動作している Raspberry Pi
USBカメラ (UVC : USB Video Classのもの)

動作の方針

USBカメラで撮影している映像に変化があった時に、静止画を保存する。
保存した静止画を、設定したメールアドレスに添付ファイルとして送信する。

イマドキ、携帯電話やスマートフォンの通信費はほぼ定額ですし、調整に失敗して怒涛のメール達が押し寄せてきても笑っていられる心の持ち主であれば、メール運用は面白いです。
尋常な方であれば、webでパスワードロックでもかけておいて、ブラウザで見るようにしたほうが良いかもしれません。

メール送信スクリプトの設定

Rubyのスクリプトを使用します。

まずは、Rubyでメールを扱うライブラリをインストールします。
# gem install mail (*1 文末)

Rubyでメールを送信するスクリプトを記載します。

例えば、~/bin/sendmessage_pict.rb などのファイル名で保存します。


require ‘mail’

mail = Mail.new

options = { :address => “メールサーバ Gmailなら smtp.gmail.com”,
:port => 587,
:domain => “メールサーバ Gmailなら smtp.gmail.com”,
:user_name => ‘アカウント名’,
:password => ‘パスワード’,
:authentication => :plain,
:enable_starttls_auto => true }
mail.charset = ‘utf-8’
mail.from “fromにつくメールアドレス”
mail.to “送り先メールアドレス”
mail.subject “メールのサブジェクト”
mail.body “メールの本文”
mail.delivery_method(:smtp, options)
mail.attachments[“ファイル名”] = File.binread(“送る画像ファイルをフルパスで”)
mail.deliver


”や’は全角になっていますので、半角に置き換えてください。

起動用のシェルスクリプトを作成します。

例えば
# vi /root/bin/sendmessage_pict.sh

ruby /root/bin/sendmessage_pict.rb

この一行だけです。

Motionで映像に動きがあったらメールを送る設定

# vi /etc/motion/motion.conf

605行目辺り
on_event_start ここにsendmessage_pict.shをフルパスで。つまり、
on_event_start /root/bin/sendmessage_pict.sh
とします。

これで、
# service motion restart
とすると、映像に変化があった時にメールが送られてきます。
頻度は /etc/motion/motion.conf の threshold の値で決まります。


おまけ

ブラウザで映像を確認する方法。

webサーバをインストールします。
# apt-get install apache2

ログファイルが /var/log/apache2 に置かれるので、ログファイルをRAMディスクに置くようになっている場合は、起動時にログ用ディレクトリを作成するように設定します。
/etc/rc.local の中の mkdir -p /var/log よりも下に
mkdir -p /var/log/apache2
と記載します。

映像ファイルは
/var/image/pict.jpgにあるので、webサーバのデフォルトのhtmlに記載する場合は、htmlのディレクトリにシンボリックリンクを張ります。
# ln -s /var/image/pict.jpg /var/www/html/

index.html等に下記を記載します。
<img src=”./pict.jpg”>

http://IPアドレス
で、映像が表示されます。


*1)
ここで
mime-types-data requires Ruby version >= 2.0.
というエラーが出てしまう場合は、
# dpkg -l ruby*
を実行してみてください。
ii ruby1.8 1.8.7.358-10 armhf Interpreter of object-oriented sc
ii ruby1.8-dev 1.8.7.358-10 armhf Header files for compiling extens
この2つがあったら、
# apt-get –purge remove ruby1.8 ruby1.8-dev
で削除してみてください。