วันอาทิตย์ที่ 15 พฤษภาคม พ.ศ. 2559

Raspberry pi (Rpi) Webcam Detect PIR Upload to facebook by python

Raspberry pi (Rpi) Detect PIR Upload to facebook by python

อุปกรณ์ที่ใช้ทดการทดลอง

1.Raspberry pi Board
2.PIR sensor
3.กล้อง Webcam camera
4.สายไฟ Jumper
5.สาย LAN

ขั้นตอนการเตรียมการ

Link to Github fbconsole
ตอนนี้อยู่ใน directory /home/pi/
1.ทำการ install fbconsole
sudo apt-get update sudo apt-get upgrade sudo apt-get install python sudo apt-get install python-opencv sudo pip install fbconsole
2.ทำการเตรียม Facebook APP_ID และ ACCESS_TOKEN
(2.1)เข้าไปที่ลิงค์ https://developers.facebook.com และ log in ด้วย Facebook ของตนเอง
(2.2)เลือก Add a New App จะได้หน้าต่างขึ้นมาดังภาพ
-เลือกไปที่ Website
(2.3)ตั้งชื่อ Project ของผมตั้งชื่อเป็น "cameraembedded" ชื่อโปรเจคจะเป็นชื่อของผู้โพสต์ภาพบน Facebook
-Tell us about Web site ให้กรอก link ของ Website ที่เราต้องการจะนำไปแสดงในส่วนของผู้โพสต์ภาพ -หากไม่มี website เป็นของตนเอง ในขั้นตอนที่ 2.2 ให้เลือกเป็น basic setup
(2.4)มาที่หน้า Dashboard จะปรากฏ APP_ID ขึ้นมา
(2.5)ไปยังหน้า developers.facebook.com
-Application: เลือกชื่อ project ที่เรา ต้องการทำ -Access Token: เลือก Get User Access Token
(2.6)เลือก Data Permission ตามที่ต้องการใช้งาน
-ยืนยัน Get access token
(2.7)ทำการ Submit เพื่อยืนยัน และจากนั้นให้ Save session
(หากไม่ Save session จะทำให้เมื่อเราไม่ได้ทำการใช้งาน Access Token แล้ว Facebook จะทำการ Gen Acess Token ใหม่ ไม่สามารถใช้Access Token ที่ไม่ได้ Save session ไว้ได้)

Code in Rpi to Upload to Facebook

import cv
import datetime
import RPi.GPIO as GPIO                           
import time
import commands
import fbconsole
from subprocess import call
GPIO.setmode(GPIO.BOARD)                          
pir = 7                                         
GPIO.setup(pir, GPIO.IN)                           
print "Waiting for sensor to settle"    
print "Detecting motion"

fbconsole.ACCESS_TOKEN = 'Insert Your Access token'   #<-----------Your Access Token
fbconsole.APP_ID = 'Insert Your APP_ID'    #<------------------Your APP_ID
fbconsole.authenticate()
# ---------------------------
# Setup the webcam and font
# ---------------------------
 
# define image size
imageWidth = 320
imageHeight = 240
 
# create a window object
cv.NamedWindow("window1", cv.CV_WINDOW_AUTOSIZE)
camera_index = 0
 
# create a camera object
capture = cv.CaptureFromCAM(camera_index)
 
# set capture width and height
cv.SetCaptureProperty( capture, cv.CV_CAP_PROP_FRAME_WIDTH, imageWidth );
cv.SetCaptureProperty( capture, cv.CV_CAP_PROP_FRAME_HEIGHT, imageHeight );
 
# create a font
font = cv.InitFont(cv.CV_FONT_HERSHEY_COMPLEX_SMALL , 0.5, 0.5, 0, 1, cv.CV_AA)
while True:
     
    # get image from webcam
    frame = cv.QueryFrame(capture)
 
    # -------------------------------------------
    # Draw the time stamp on a white background
    # -------------------------------------------  
    cv.Rectangle(frame, (0,0), (imageWidth, 15), (255,255,255),cv.CV_FILLED,8,0)
    # get the current date and time
    timeStampString = datetime.datetime.now().strftime("%A %Y-%m-%d %I:%M %p")
    # insert the date time in the image
    cv.PutText(frame, timeStampString, (10,10), font, (0,0,0))
 
    # -----------------------------
    # show the image on the screen
    # -----------------------------
    cv.ShowImage("window1", frame)
 
    # -----------------------
    # wait for user command
    # -----------------------
    command = cv.WaitKey(10)
 
    # if press 'q' -> exit program
    if command == ord('q'):
        print "Ending program"
        break  # end program
 
    # if press 's' -> save the image
    elif ((command == ord('s'))|(GPIO.input(pir)==1)):
        print "Saving image"
        cv.SaveImage("test.jpg",frame)
        fbconsole.post('/me/photos',{'name':'ENEMY Detect!','source': open('test.jpg')})
        time.sleep(5)
   

Result เมื่อรันโปรแกรม:

โปรแกรมที่แสดงผลในบอร์ด Raspberry pi
ส่วนที่โปรแกรมแสดงผลใน Facebook

อ้างอิงจาก

ขอบคุณทุกๆเว็บไซต์ครับ หากเป็นไปได้ผมจะพัฒนาโดยนำ Qt มาใช้กับ python file ด้วยครับ
และหวังว่า Project นี้จะเป็นประโยชน์ครับ
https://github.com/fbsamples/fbconsole
PIR-detect
http://pantip.com/topic/33726523
http://www.pontikis.net/blog/auto_post_on_facebook_with_php
https://learninginventions.org/?page_id=1163
Share:

1 ความคิดเห็น: