Last active
August 29, 2015 13:57
-
-
Save dvas0004/9450897 to your computer and use it in GitHub Desktop.
raspi CC PIR and cam script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from subprocess import call | |
import time, datetime | |
import smtplib, ftplib | |
import RPi.GPIO as io | |
import multiprocessing | |
io.setmode(io.BCM) | |
pir_pin = 24 | |
GMAIL_USERNAME = "YOUR_EMAIL_ADDRESS_HERE" | |
GMAIL_PASSWORD = "YOUR_PASSWORD_HERE" | |
recipient = GMAIL_USERNAME | |
io.setup(pir_pin, io.IN) # activate input | |
def sendEmail(): | |
#send email | |
session = smtplib.SMTP('smtp.gmail.com', 587) | |
session.ehlo() | |
session.starttls() | |
session.login(GMAIL_USERNAME, GMAIL_PASSWORD) | |
headers = "\r\n".join(["from: " + "security_vassallo", | |
"subject: " + "Motion Sensor Tripped!", | |
"to: " + recipient, | |
"mime-version: 1.0", | |
"content-type: text/html"]) | |
content = headers + "\r\n\r\n" + "Alert - motion sensor tripped at " + str(datetime.datetime.now()) | |
session.sendmail(GMAIL_USERNAME, recipient, content) | |
##### main program ###### | |
while True: | |
if io.input(pir_pin): | |
# if movement is detected, print the below to console | |
print("PIR ALARM!") | |
# fire off a seperate process to send a notification email | |
d = multiprocessing.Process(name='emailDaemon', target=sendEmail) | |
d.daemon = True | |
d.start() | |
# as per the raspberry pi camera instructions, call raspivid to record a 10 second (-t 10000) video clip | |
# notice we store the video in /tmp - so in memory due to tmpfs | |
# also notice the use of -rot 180 to rotate the image by 180 degrees since my camera is positioned upside-down | |
call(["raspivid","-o","/tmp/myvid.h264","-w","640","-h","480","-b","3000000","-t","10000","-rot","180"]) | |
# here we call on the python n-built FTP library | |
session = ftplib.FTP('YOUR_FTP_IP','YOUR_FTP_USER','YOUR_FTP_PASSWORD') | |
file = open('/tmp/myvid.h264','rb') | |
session.cwd('Vassallo/Security') | |
timestamp = time.strftime("%d-%m-%Y_%H:%M:%S", time.gmtime()) | |
# here we append a timestamp to the file so we know when it was taken | |
filename = "{}.h264".format(timestamp) | |
# file transmitted over FTP | |
session.storbinary('STOR {}'.format(filename), file) | |
file.close() | |
session.quit() | |
time.sleep(1) | |
time.sleep(0.5) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment