AlfanLA

~ Perfectionist but Flexible ~

Converting "LOVE" Into Computer Code

IP Webcam + Motion Detection Murah dengan OpenWrt

Sebenarnya tutorial semacam ini sudah banyak sekali bertebaran di internet, namun mungkin suatu saat nanti jika saya membutuhkannya lagi bisa dengan mudah saya temukan - menulis untuk menjaga pengetahuan -.

Baiklah langsung pada intinya saja, tulisan ini sebenarnya masih ada hubungannya dengan tulisan sebelumnya yang membahas tentang komputer murah, terkecil, dan hemat (modifikasi router menjadi komputer ber-OS Linux dengan OpenWrt). Namun kali ini saya ingin menambahkan fungsionalitasnya sehingga memiliki fungsi yang cukup keren, sejenis CCTV yaitu IP Camera dan deteksi gerakan (motion detection) dengan bantuan webcam. Di sini saya menggunakan webcam bermerk Creative dengan seri Live! Vista yang memang sudah lama tidak terpakai.

Install Driver

$ opkg update
$ opkg install kmod-usb-core kmod-usb2 kmod-video-core

Perintah di bawah ini adalah untuk meng-install driver webcam yang saya pakai.

$ opkg install kmod-video-gspca-core kmod-video-gspca-ov519

Setahu saya, di OpenWrt (Linux) ada dua jenis driver untuk perangkat webcam, yaitu UVC dan GSPCA. Untuk daftar perangkat yang menggunakan UVC dapat dilihat di sini dan untuk GSPCA dapat dilihat di sini. Jika anda ternyata menggunakan driver UVC, maka perintah yang dipakai untuk meng-install driver adalah sebagai berikut:

$ opkg install kmod-video-uvc

Tancapkan webcam, kemudian cek apakah webcam sudah terdeteksi oleh sistem.

$ ls -al /dev/video0

Install Packages

Setelah driver sudah ter-install dan webcam telah terdeteksi di /dev/video0, sekarang tinggal install packages yang dibutuhkan. Di sini saya meng-install dua buah packages, package mjpg-streamer digunakan untuk fungsi IP Camera dan package motion untuk menangkap gambar bergerak.

$ opkg install mjpg-streamer motion

Fungsi Video Streaming (IP Camera)

Fungsi video streaming secara default adalah non-aktif, untuk mengaktifkannya adalah dengan mengubah konfigurasi di /etc/config/mjpg-streamer dan ubah option enabled "0" ke option enabled "1". Setelah konfigurasi diubah saatnya mencoba menjalankan fungsi IP Camera ini.

$ /etc/init.d/mjpg-streamer start

Perintah di atas digunakan untuk menyalakan webcam sebagai IP Camera, untuk melihat hasilnya dapat dicoba dengan browser dengan alamat URL di http://ip_router:8080. Anda juga dapat menggunakan VLC Media Player untuk video streaming dari webcam secara langsung, klik Media – Open Network Stream… (Ctrl + N), dan isi URL dengan http://ip_router:8080/?action=stream. Ganti ip_router dengan alamat IP router OpenWrt yang anda pakai.

Stream IP Camera

OpenWrt IP Camera

Fungsi Deteksi Gerakan (Motion Detection)

Fungsi ini digunakan untuk menangkap gambar jika terdapat gerakan, gambar akan disimpan secara otomatis di folder yang sudah ditentukan sebelumnya. Fungsi ini sangat cocok digunakan untuk mengawasi lingkungan rumah, niatnya fitur inilah yang akan saya gunakan. Perlu diingat bahwa fitur deteksi gerakan dan IP Camera di atas tidak dapat digunakan secara bersama-sama karena webcam hanya dapat dipakai oleh salah satu aplikasi dalam satu waktu, tapi itu tidak masalah karena di aplikasi motion sendiri juga terdapat fungsi untuk video streaming (IP Camera).

Sebelum dapat menggunakan fungsi ini, ubah beberapa konfigurasi yang terdapat di /etc/motion.conf seperti output_pictures, ffmpeg_output_movies, target_dir, stream_port, stream_motion, stream_localhost, dll. Konfigurasi lengkap yang saya gunakan adalah sebagai berikut:

daemon on
process_id_file /var/run/motion/motion.pid
setup_mode off
log_level 6
log_type all
videodevice /dev/video0
v4l2_palette 8
input -1
norm 0
frequency 0
rotate 0
width 640
height 480
framerate 30
minimum_frame_time 0
netcam_keepalive off
netcam_tolerant_check off
auto_brightness on
brightness 0
contrast 0
saturation 0
hue 0
roundrobin_frames 1
roundrobin_skip 1
switchfilter off
threshold 1000
threshold_tune off
noise_level 32
noise_tune on
despeckle_filter EedDl
smart_mask_speed 0
lightswitch 0
minimum_motion_frames 5
pre_capture 0
post_capture 0
event_gap 60
max_movie_time 0
emulate_motion off
output_pictures on
output_debug_pictures off
quality 75
picture_type jpeg
ffmpeg_output_movies off
ffmpeg_output_debug_movies off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode daily
ffmpeg_bps 500000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec mpeg4
ffmpeg_deinterlace off
sdl_threadnr 0
use_extpipe off
snapshot_interval 0
locate_motion_mode on
locate_motion_style redbox
text_right %Y-%m-%d\n%T-%q
text_left SR-C39-PWT
text_changes off
text_event %Y%m%d%H%M%S
text_double off
target_dir /www/cctv
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
picture_filename %v-%Y%m%d%H%M%S-%q
movie_filename %v-%Y%m%d%H%M%S
timelapse_filename %Y%m%d-timelapse
ipv6_enabled off
stream_port 8080
stream_quality 80
stream_motion off
stream_maxrate 1
stream_localhost off
stream_limit 0
stream_auth_method 0
webcontrol_port 8081
webcontrol_localhost on
webcontrol_html_output on
track_type 0
track_auto off
track_iomojo_id 0
track_step_angle_x 10
track_step_angle_y 10
track_move_wait 10
track_speed 255
track_stepsize 40
quiet on

Dapat dilihat pada konfigurasi di atas, saya menyimpan hasil gambar yang terekam di folder /www/cctv dan bertipe jpeg. Saya menaruh di folder /www supaya saya bisa mengakses langsung gambar-gambar tersebut melalui browser. Untuk menjalankan fungsi deteksi gerakan ini, gunakan perintah sebagai berikut:

$ motion -c /etc/motion.conf

Dan lihat hasilnya, setiap kali ada objek gerakan yang tertangkap oleh webcam maka otomatis disimpan di folder /www/cctv. Untuk melakukan video streaming bisa dilihat menggunakan VLC Media Player kemudian klik Media – Open Network Stream… (Ctrl + N) dan isi URL dengan http://ip_router:8080, ganti ip_router dengan alamat IP router OpenWrt yang anda pakai.

Motion Detection

Dapat dilihat dari gambar di atas, kotak yang berwarna merah adalah objek yang terdeteksi melakukan gerakan. Keren sekali bukan? dan perlu diingat juga bahwa biaya yang saya keluarkan untuk membuat IP Camera beserta deteksi gerakan ini tergolong murah dibandingkan dengan membeli perangkat yang mempunyai fungsi sejenis.