วันศุกร์ที่ 28 ธันวาคม พ.ศ. 2555

ทำบ้านให้ปลอดภัย Raspberry PI ยามเฝ้าบ้าน

วันนี้ เรามาลองสร้างระบบเตือนภัยจากผู้บุกรุก โดยเราจะให้เจ้าบอร์ด Raspberry Pi ของเราทำการส่งเมล์ไปหาเรา ถ้ามีใครสักคนพยายามงัดแงะหน้าต่าง หรือประตูของเรา หรือจะเช็คจุดไหนก็ได้ ที่สามารถต่อสวิทช์ หรืออุปกรณ์ตรวจสอบใดๆ ก็ได้ที่ทำให้เกิดการเปลี่ยนแปลง logic จาก Low ไป High เพื่อที่เราจะได้ต่อเข้ากับ GPIO ของบอร์ด Raspberry Pi เมื่อเกิดการเปลี่ยนแปลงสถานะ logic ณ จุดใดๆ ที่ต่ออยู่กับ GPIO ของ Raspberry Pi แล้ว ให้เจ้าบอร์ด Raspberry Pi ของเราส่งเมล์มาบอกเรา เพียงเท่านี้ เราก็จะได้ระบบรักษาความปลอดภัย ที่กินไฟน้อยที่สุดในโลกแล้ว (อาจจะฟังดูเวอร์ไปเล็กน้อย :P ) 
อันนี้ เป็นวงจรการทำงานพื้นฐานนะครับ แน่นอน ถ้าจะทำจริงๆ ก็ต้องดัดแปลง ปรับปรุงให้เกิดความเสถียรภาพมากกว่านี้ ไม่ว่าจะเป็นระบบสำรองไฟฟ้า หากเกิดกรณีไฟฟ้าดับ และระบบป้องกันไฟเกิน และอื่นๆ อีกที่ควรจะใส่เข้าไป เพื่อให้ระบบเราทำงานได้ แม้ในสภาวะที่ไม่ปกติด้วยนะครับ ก็ลองไปคิดๆ กันดูว่าต้องมีอะไรบ้าง 
Raspberry Pi Home Security System
ในที่นี้ ผมจะสมมติให้ push button ทำหน้าที่เป็นสวิทช์ประตู เมื่อมีการเปลี่ยน logic จาก high เป็น low ให้ raspberry Pi ทำการเริ่มส่งเมล์ มาตามที่กำหนดไว้ในโค๊ด 
Raspberry Pi simple Circuit
ด้วยความสามารถของ Python เราสามารถที่จะเรียก package smtplib เพื่อติดต่อกับ mail server (ในที่นี้ ผมต้องการติดต่อกับ mail server ของ Gmail ) แล้วทำการส่งข้อความไปที่ inbox ของ mail ปลายทางที่เราต้องการได้ (ซึ่งนั่น น่าจะเป็นเมล์ของเรานะครับ) เรามาดูโค๊ดกันเลยครับ 
สร้างไฟล์นี้ด้วยคำสั่ง nano mail.py 
แล้วเขียนโค๊ดตามข้างล่างนี้ (ระวังเรื่อง indent ด้วยนะครับ สำหรับภาษาไพธอนเราจะใช้การ indent เป็นตัวจัดกลุ่มของคำสั่ง ) 
#--------------------------- Code start here ------------------------------------------------
#! /usr/bin/python 
import RPi.GPIO as GPIO 
import smtplib 
import time 
LOOP = True 
GPIO.setmode(GPIO.BOARD) 
GPIO.setup(26,GPIO.IN,pull_up_down=GPIO.PUD_UP) 
SMTP_SERVER = 'smtp.gmail.com' 
SMTP_PORT = 587 
sender = 'raspberry security system' 
recipient = 'wisit.paewkratok@gmail.com' 
subject = 'Raspberry Pi Alert System' 
body  = 'The door is opned!!!' 
headers = ["From: " + sender, 
           "Subject: " + subject, 
           "To: " + recipient, 
           "MIME-Version: 1.0", 
           "Content-Type: text/html"] 
headers = "\r\n".join(headers) 
username = ‘ชื่อล๊อกอินของ Gmail' 
password = 'พาสเวิร์ดสำหรับ Gmail' 
while True: 
    if(GPIO.input(26) == False): 
        print('Mail alert sending....\n') 
        server = smtplib.SMTP(SMTP_SERVER,SMTP_PORT) 
        server.ehlo() 
        server.starttls() 
        server.ehlo() 
        server.login(username,password) 
        server.sendmail(sender,recipient,headers + "\r\n\r\n" + body) 
        server.quit() 
        GPIO.cleanup() 
        LOOP = False 
        print('Program terminated\n\n') 
        break 
    time.sleep(1) 
    print('program is running ' + time.ctime() )
#----------------------------------- End Code ----------------------------------------------------------
ทำการบันทึกไฟล์ แล้วทำการเปลี่ยนให้ไฟล์นี้สามารถ execute ได้ ด้วยคำสั่ง
sudo chmod 755 mail.py 
แล้วทำการทดลองรันสคริปต์ไพธอน ด้วยคำสั่ง 
sudo ./mail.py 
Python sending mail to Gmail server 
ถ้าทุกอย่างถูกต้อง เราจะพบเมล์ในกล่องขาเข้าของจดหมาย จาก raspberry security system
จากตัวอย่างที่นำเสนอนี้ เป็นรูปแบบอย่างง่าย นะครับ หากจะนำไปใช้จริงๆ เพื่อนต้องปรับแต่งให้ระบบของเพื่อนๆ สามารถที่จะตรวจสอบได้ตลอดเวลา ว่ายังทำงานอยู่หรือเปล่า และเมื่อเวลาเกิดเหตุการณ์ขึ้นแล้ว จะให้ Email ส่งมาเตือนกี่ครั้ง และจะรีเซตระบบกลับเหมือนเดิมได้อย่างไร นั่นเป็นสิ่งที่ต้องนำกลับไปคิดกันต่อนะครับ ลองๆ เอาไปประยุกต์กันดูนะครับ หวังว่าคงเริ่มสนุกกับ Raspberry Pi แล้วนะครับ

ขอบคุณและที่มาของบทความ: http://raspberry-pi-th.blogspot.com/2012/10/simple-home-security-system-by.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น