-
Notifications
You must be signed in to change notification settings - Fork 0
/
letterbox.py
53 lines (42 loc) · 1.36 KB
/
letterbox.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import datetime
import pygsheets
# Set Broadcom mode so we can address GPIO pins by number.
GPIO.setmode(GPIO.BCM)
# Initialise vars
isOpen = None
previouslyOpen = None
# Set up the door sensor pin.
DOOR_SENSOR_PIN = 18
GPIO.setup(DOOR_SENSOR_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# Open the Google Sheet to log openings
gs = pygsheets.authorize(service_file='/home/pi/service_file.json')
sh = gs.open('Letterbox Activations')
wks = sh.sheet1
firstRun = 1
while True:
previouslyOpen = isOpen
isOpen = GPIO.input(DOOR_SENSOR_PIN)
if (isOpen and (isOpen != previouslyOpen)):
now = datetime.datetime.now()
thedate = now.strftime("%d/%m/%Y")
thetime = now.strftime("%H:%M:%S")
print "Letterbox has been opened! (%s at %s)" % (thedate, thetime)
wks.add_rows(1)
dateField = 'A%d' % wks.rows
timeField = 'B%d' % wks.rows
wks.cell(dateField).value = thedate
wks.cell(timeField).value = thetime
elif (isOpen != previouslyOpen):
now = datetime.datetime.now()
thedate = now.strftime("%d/%m/%Y")
thetime = now.strftime("%H:%M:%S")
print "Letterbox is closed. (%s at %s)" % (thedate, thetime)
if(firstRun == 0):
timeClosedField = 'C%d' % wks.rows
wks.cell(timeClosedField).value = thetime
else:
firstRun = 0
time.sleep(0.1)