最初に書いておく。Raspberry PiとUSBカメラを使って動体検知付き監視カメラを構築するのは簡単にできる。が、少なくとも200万画素クラスのカメラとPiのtypeBでは本当に犯罪被害にあった時に犯人を特定できるレベルの動画が残せるとは言いがたい。
構築の手順について
必要な環境
Raspberry Pi type B (いまならRaspberry Pi 2 Bのほうがいいはず)
SD card (class10 UHS-Iの32GBを使っているが、16GBくらいで十分だと思われる。動体検知の感度にもよるが数ヶ月連続で録画してもOSも含めて12GB程度しか使っていないようなので)
UVCカメラ(USB video class)
Raspberry Piの環境構築用にHDMIなモニタやTV、USBキーボード、マウスはあったほうがいいがOSのインストールさえしてしまえば後はネットワーク経由でSSHで接続して作業可能である。
構築の実際
NOOBS(https://www.raspberrypi.org/downloads/)をダウンロードし、解凍してできたファイルをSDカードにコピーする。
SDカードをRaspberry Piに装着し、HDMI、LAN、キーボード等を接続の上USBで電源投入。
Raspbianを選択してインストール。
最初から用意されているユーザーPiのパスワードを変更(初期パスワードはraspberry)
$ passwd
rootパスワードも変更しておく (初期パスワードはなし)
$ sudo -s
#passwd
自分用のユーザーを作っておく
#adduser myname
root権限を持てるように
#visudo
myname ALL=(ALL) ALLを追加
IPアドレスを固定アドレスに変更
$ sudo nano /etc/network/interfaces
iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1のような感じ。
念のためアップデート
$ sudo apt-get update
$ sudo apt-get dist-upgrade
motion のインストール
motionの設定ファイルをいじる
$ sudo nano /etc/motion/motion.conf
# Start in daemon (background) mode and release terminal (default: off) daemon on #ある程度セッティングが煮詰まったらデーモンで起動する。 # V4L2_PIX_FMT_MJPEG then motion will by default use V4L2_PIX_FMT_MJPEG. # Setting v4l2_palette to 1 forces motion to use V4L2_PIX_FMT_SBGGR8 # instead. # # Values : # V4L2_PIX_FMT_SN9C10X : 0 'S910' # V4L2_PIX_FMT_SBGGR8 : 1 'BA81' # V4L2_PIX_FMT_MJPEG : 2 'MJPEG' # V4L2_PIX_FMT_JPEG : 3 'JPEG' # V4L2_PIX_FMT_RGB24 : 4 'RGB3' # V4L2_PIX_FMT_UYVY : 5 'UYVY' # V4L2_PIX_FMT_YUYV : 6 'YUYV' # V4L2_PIX_FMT_YUV422P : 7 '422P' # V4L2_PIX_FMT_YUV420 : 8 'YU12' v4l2_palette 8 #カメラの色設定 # Image width (pixels). Valid range: Camera dependent, default: 352 width 640 # Image height (pixels). Valid range: Camera dependent, default: 288 height 480 #画像のサイズ # Threshold for number of changed pixels in an image that # triggers motion detection (default: 1500) threshold 500 #動体検知の感度 # Noise threshold for the motion detection (default: 32) noise_level 96 #ノイズによる誤検知 # Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) #target_dir /tmp/motion target_dir /var/www/cam1 #lighttpdのroot ディレクトリにあわせる # Restrict webcam connections to localhost only (default: on) webcam_localhost off #webカメラをlive viewで見られるように。まずはこれくらい。
動画を保存するディレクトリを作成
$ sudo mkdir /var/www/cam1
デーモンで動かすときはディレクトリの書き込み権限を変えておく。
$ sudo chmod A+rwx /var/www/cam1
motionをデーモンで動かす
$ sudo nano /etc/defaults/motion
start_motion_daemon=yes
lighttpdの設定
$ sudo nano /etc/lighttpd/lighttpd.conf
server.dir-listing = "enable"
アクセスをユーザー・パスワードで制限する
$ sudo nano /etc/lighttpd/conf-available/05-auth.conf
server.modules += ( "mod_auth" ) auth.backend = "plain" auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user" auth.require = ( "/" => ( "method" => "basic", "realm" => "Select", "require" => "valid-user" ) )
$ cd /etc/lighttpd/conf-enabled/
$ sudo ln -s ../conf-available/05-auth.conf .
$ sudo nano /etc/lighttpd/lighttpd.user
myname:mypassword
$ sudo chown www-data:www-data /etc/lighttpd/lighttpd.user
$ sudo chmod 600 /etc/lighttpd/lighttpd.user
$ sudo /etc/init.d/lighttpd restart
$ sudo /etc/init.d/motion restart