58 lines
2.5 KiB
Python
58 lines
2.5 KiB
Python
#! /usr/local/bin/python
|
|
# This project by Dexter Industries will help you figure out who's stealing your lunch! In
|
|
# this project, we will use the GrovePi to take a picture of the culprit when the light in
|
|
# your fridge turns on. We will use the light detector for Grove to detect when the fridge
|
|
# door has been opened.
|
|
#
|
|
# Hardware Setup:
|
|
# - Use the Raspberry Pi and GrovePi. (http://www.dexterindustries.com/shop/grovepi-starter-kit-2/)
|
|
# - Use the Raspberry Pi camera. (http://www.dexterindustries.com/shop/raspberry-pi-camera/)
|
|
# - Connect the light sensor to A0. (http://www.dexterindustries.com/shop/grove-light-sensor/)
|
|
# You can adjust the threshold value if you have a bright environment.
|
|
# Change the email_destination to change the destination you send an e-mail to.
|
|
|
|
import time
|
|
import datetime
|
|
import grovepi
|
|
import picamera
|
|
import send_email_pic
|
|
|
|
email_destination = 'examples@dexterindustries.com' # Change this to the destination e-mail.
|
|
destination = [email_destination] # We put it into an array.
|
|
|
|
# Connect the Grove Light Sensor to analog port A0
|
|
# SIG,NC,VCC,GND
|
|
light_sensor = 0 # Connect the light sensor to A0 Port.
|
|
grovepi.pinMode(light_sensor,"INPUT") # Set the A0 port to input.
|
|
|
|
# Send a picture once sensor exceeds threshold resistance
|
|
threshold = 600 # Adjust this threshold higher or lower
|
|
# Depending on how bright your fridge is.
|
|
|
|
camera = picamera.PiCamera() # Setup the Pi Camera
|
|
|
|
# Simple function to get the date as a string.
|
|
def get_time_string():
|
|
dateString = '%Y-%m-%d_%H-%M-%S'
|
|
return_string = datetime.datetime.now().strftime(dateString)
|
|
return return_string
|
|
|
|
while True:
|
|
try:
|
|
# Get sensor value. Read the light sensor.
|
|
sensor_value = grovepi.analogRead(light_sensor)
|
|
|
|
# Sense the light coming on, within the target range
|
|
if sensor_value > threshold:
|
|
print ('The fridget light is on!') # Print a note to let us know how it goes.
|
|
file_name = "lunch_status-"+str(get_time_string())+".jpg"
|
|
camera.capture(file_name) # Take a picture and save it to file_name
|
|
# Now send an e-mail
|
|
send_email_pic.send_email("The fridge has been opened!", destination, "The fridge has been opened!", file_name)
|
|
else:
|
|
print ('.') # Do nothing! It's still dark.
|
|
|
|
time.sleep(.5) # If your hold time is less than this, you might not see as many detections
|
|
|
|
except IOError:
|
|
print ("Error")
|