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.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 ขึ้นมา
-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
งุ้ย
ตอบลบ