21 February 2015

MR3020 + Webcam Logitech C170 + Motion = CCTV Sederhana

Kali ini akan saya sharingkan bagaimana cara membuat CCTV sederhana dengan menggunakan router dan webcam.

Peralatan yang saya gunakan:
1. Router TP-Link MR3020
2. Webcam Logitech C170
3. USB Hub Belkin 7 port
4. Flashdisk Kingston 8 GB

Referensi yang saya pakai ada di website :
http://sheldor.blogspot.com/2013/09/openwrt-based-video-recording-system.html
http://sheldor.blogspot.com/2013/09/openwrt-based-video-recording-system_10.html

Sesuai petunjuknya, mula-mula routernya di flash dengan OS OpenWRT dan di exroot.
Selanjutnya download file .rar berikut :
https://www.dropbox.com/s/bc417l2ty7sj9uv/Motion%2BFFMpeg.rar?dl=0


OS OpenWRT yang saya pakai adalah versi Attitude Adjustment. Versi Barrier Breaker seharusnya juga bisa dipakai.

Ekstrak file. rar yang telah di download tadi ke PC dan selanjutnya dengan menggunakan software Putty di transfer ke routernya.
Install semua file *.ipk - nya ke router dengan perintah di Putty :

opkg install *.ipk

Berikutnya adalah edit file konfigurasi aplikasi Motion nya yang ada di :
/etc/motion.conf  :

Thread 0
daemon = on
process_id_file = /var/run/motion/motion.pid
setup_mode = off
logfile = (not defined)
log_level = 4
log_type = all
videodevice = /dev/video0
v4l2_palette = 8
input = -1
norm = 0
frequency = 0
rotate = 0
width = 640
height = 360
framerate = 3
minimum_frame_time = 0
netcam_url = (not defined)
netcam_userpass = (not defined)
netcam_keepalive = off
netcam_proxy = (not defined)
netcam_tolerant_check = off
auto_brightness = on
brightness = 0
contrast = 0
saturation = 0
hue = 0
roundrobin_frames = 1
roundrobin_skip = 1
switchfilter = off
threshold = 5000
threshold_tune = off
noise_level = 32
noise_tune = on
despeckle_filter = (not defined)
area_detect = (not defined)
mask_file = (not defined)
smart_mask_speed = 0
lightswitch = 50
minimum_motion_frames = 2
pre_capture = 2
post_capture = 2
event_gap = 60
max_movie_time = 0
emulate_motion = off
output_pictures = off
output_debug_pictures = off
quality = 75
picture_type = jpeg
ffmpeg_output_movies = on
ffmpeg_output_debug_movies = off
ffmpeg_timelapse = 0
ffmpeg_timelapse_mode = daily
ffmpeg_bps = 200000
ffmpeg_variable_bitrate = 0
ffmpeg_video_codec = mpeg4
ffmpeg_deinterlace = off
use_extpipe = off
extpipe = (not defined)
snapshot_interval = 0
locate_motion_mode = off
locate_motion_style = redcross
text_right = %Y-%m-%d\n%T-%q
text_left = Logitech-C170
text_changes = on
text_event = %Y%m%d%H%M%S
text_double = on
exif_text = (not defined)
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 = %Y-%m-%d--Jam-%H-%M-%S-Shot-%v
timelapse_filename = timelapse-tanggal-%d-%m-%Y
ipv6_enabled = off
stream_port = 0
stream_quality = 50
stream_motion = off
stream_maxrate = 3
stream_localhost = off
stream_limit = 0
stream_auth_method = 0
stream_authentication = (not defined)
webcontrol_port = 8081
webcontrol_localhost = off
webcontrol_html_output = on
webcontrol_authentication = (not defined)
track_type = 0
track_auto = off
track_port = (not defined)
track_motorx = 0
track_motorx_reverse = off
track_motory = 0
track_motory_reverse = off
track_maxx = 0
track_minx = 0
track_maxy = 0
track_miny = 0
track_homex = 128
track_homey = 128
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
on_event_start = (not defined)
on_event_end = (not defined)
on_picture_save = (not defined)
on_motion_detected = (not defined)
on_area_detected = (not defined)
on_movie_start = (not defined)
on_movie_end = (not defined)
on_camera_lost = (not defined)
video_pipe = (not defined)
motion_video_pipe = (not defined)
thread = No threads

Tinggal jalankan aplikasi dengan perintah :
motion

Aplikasi ini akan selanjutnya merekam video bila terdeteksi aktivitas dalam bentuk file *.avi . File video disimpan di router di folder /www/cctv

Contoh hasil rekaman adalah sebagai berikut :



Mula-mula saya sering mendapatkan rekaman video error seperti ini :


Ternyata solusinya cukup mudah tinggal edit file konfigurasi seperti diatas dengan :
lightswitch 50 .

Sekian dulu tutorialnya , semoga bermanfaat.



25 December 2014

Notifikasi SMS Perubahan Saldo Akun BCA

Sudah lama sekali sejak saya terakhir posting di blog ini. Kali ini saya mau sharing sesuatu yang semoga bermanfaat untuk temen-temen sekalian.

Awal cerita saya menemukan website super ini dari google. Alamatnya ada di http://www.adiputra.web.id/scrapping-mutasi-klik-bca-dengan-php/ . Berhubung penasaran saya coba saja script saktinya. Eh...ternyata berhasil ! . Mutasi BCA nya bisa terbaca dari page_mutasi.html yang dihasilkan dari script-nya. 

Nah timbul keinginan neh kalau setiap ada transaksi baru, ada notifikasi lewat sms ke handphone sayanya. Jadi tidak perlu lagi koneksi internet untuk sekedar cek saldo lewat handphone. Okay, karena sudah berkenalan dengan OpenWRT, alangkah indahnya scriptnya bisa saya letakkan di router. Lalu tambahkan script tambahan untuk notifikasinya. Rencananya memakai notifikasi via sms , kalau mau juga bisa via email , tinggal di modifikasi sedikit aja script -nya nanti.

Asumsi awalnya adalah routernya sudah bisa jalankan file .php Adiputra diatas dan berhasil. Bisa sms keluar kalau mau notifikasi sms , saya sendiri memakai aplikasi smstools3 . Aplikasi ipk untuk router berarsitektur AR71xx seperti TP-Link MR3020, MR3040, MR3220, MR3420, dll , bisa di download di http://openwrt.jaru.eu.org/attitude_adjustment/ar71xx/packages/smstools3_3.1.15-1_ar71xx.ipk . Lalu saya juga memakai file konversi html ke text agar bisa di utak atik, namanya html2txt.py . Aplikasi curl dan php5-mod-curl juga sudah terinstall dengan rapi. Dan yang terakhir router terkoneksi dengan internet.

Langkah-langkahnya sebagai berikut :
1. Simpan script dari Adiputra diatas dengan nama scrap-bca.php dan bca.php di folder /www/bca 
2. Simpan file html2txt.py ke folder /usr/bin
3. Buat file baru di folder /usr/bin dengan nama ceksaldo.sh yang isinya sebagai berikut :

#!/bin/sh

NUMBER='081223423421'
AWAL=`cat /www/bca/awal.txt`

curl http://192.168.1.1/bca/scrap-bca.php
sleep 10
cat /www/bca/page_mutasi.html | sed -n -e '/Starting/,$p' | head -n 1 | /usr/bin/html2txt.py | tail -n 4 | head -n 1 | grep -o "[0-9,]\+" | head -n 1 > /www/bca/akhir.txt
sleep 2
AKHIR=`cat /www/bca/akhir.txt`

if [ "$AKHIR" != "$AWAL" ]; then
BAWAL=`cat /www/bca/awal.txt | awk '{gsub(",", "");print}'`
BAKHIR=`cat /www/bca/akhir.txt | awk '{gsub(",", "");print}'`
SELISIH=`echo "Rp. $(($BAKHIR-$BAWAL))" | sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'`
FILE=`mktemp /tmp/send_XXXXXX`
    echo "To: $NUMBER" > $FILE
    echo "" >> $FILE
    echo -ne "Saldo BCA:Rp. $AKHIR \nPerubahan:$SELISIH" >> $FILE
    FILE2=`mktemp /var/spool/sms/outgoing/send_XXXXXX`
    mv $FILE $FILE2
cp /www/bca/akhir.txt /www/bca/awal.txt
fi

Sesuaikan script diatas sesuai kondisi masing-masing:
NUMBER = handphone yang akan di kirimi SMS
192.168.1.1 = ip router 


4. Supaya bisa dieksekusi ceksaldo.sh nya mesti di chmod 0775 /usr/bin/ceksaldo.sh 
5. Buat file baru dengan nama awal.txt di folder /www/bca yang isinya :
123,456

6. Coba jalankan /usr/bin/ceksaldo.sh
7. Jikalau berhasil maka akan ada sms notifikasi ke handphone saat ada perubahan saldo.
8. Selamat mencoba !

14 September 2014

Cara Install OpenVPN di VPS OpenVZ

Okay langsung saja yang pertama-tama mesti dilakukan adalah enable TUN/TAP dari VPS -nya. Biasanya diakses dari CP (Control Panel) VPS, seperti ini contohnya:

Lalu ikutilah panduan/tutorial ( dengan sedikit modifikasi ) yang ada di https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-an-openvpn-server-on-centos-6 sebagai berikut:

1. yum install openvpn -y
2. cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf /etc/openvpn
3. nano -w /etc/openvpn/server.conf
4. Editlah pada bagian :
   push "redirect-gateway def1 bypass-dhcp"
   dh dh1024.pem
   push "dhcp-option DNS 8.8.8.8"
   push "dhcp-option DNS 8.8.4.4"
   user nobody
   group nobody
5. yum install easy-rsa -y
6. mkdir -p /etc/openvpn/easy-rsa/keys
7. cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa
8. nano -w /etc/openvpn/easy-rsa/vars
9. Editlah pada bagian (kalau perlu) :
   export KEY_COUNTRY="US"
   export KEY_PROVINCE="CA"
   export KEY_CITY="SanFrancisco"
   export KEY_ORG="Fort-Funston"
   export KEY_EMAIL="administrator@example.com"
   export KEY_OU="MyOrganizationalUnit"
10. cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
11. cd /etc/openvpn/easy-rsa
  source ./vars
  ./clean-all
  ./build-ca 
12. ./build-key-server server
13. ./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn
14. cd /etc/openvpn/easy-rsa
./build-key client1
./build-key client2
   Pembuatan key sesuaikan jumlah client yang diinginkan ( client 3, client 4 dan seterusnya )

15. Edit iptables sehingga menjadi seperti ini :
-A POSTROUTING -o venet0 -j SNAT --to-source xx.xx.xx.xx
-A POSTROUTING -s 13.67.0.0/24 -j SNAT --to-source xx.xx.xx.xx
-A POSTROUTING -j SNAT --to-source xx.xx.xx.xx

Gantikan xx.xx.xx.xx dengan IP VPS anda.

16. nano -w /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

17. sysctl -p
service openvpn start
chkconfig openvpn on
18. Sekarang tinggal masukkan sertifikat-nya di sisi client (ca.crt , client1.crt , client1.key). Bisa juga di gabung dalam bentuk satu file ovpn dengan format sebagai berikut :

client
dev tun
proto udp
remote xx.xx.xx.xx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

-----BEGIN CERTIFICATE-----
...........
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
...........
-----END CERTIFICATE-----


-----BEGIN PRIVATE KEY-----
.........
-----END PRIVATE KEY-----


Sekian dan terimakasih. Selamat Mencoba !