import time
import board
import digitalio
import rtc
led = digitalio.DigitalInOut(board.GP13)
led.direction = digitalio.Direction.OUTPUT
pir = digitalio.DigitalInOut(board.GP2)
pir.direction = digitalio.Direction.INPUT
# https://docs.circuitpython.org/en/latest/shared-bindings/rtc/index.html
r = rtc.RTC()
r.datetime = time.struct_time((2024, 11, 24, 15, 0, 0, 0, -1, -1))
# Lookup table for names of days (nicer printing).
days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
led.value = False
offSec = ((r.datetime.tm_sec % 60) + 5) % 60
while True:
t = r.datetime
# print(t) # uncomment for debugging
# print("The date is {} {}/{}/{}".format(days[int(t.tm_wday)], t.tm_mday, t.tm_mon, t.tm_year))
# print("The time is {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, t.tm_sec))
if(pir.value):
print("Motion detected at {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, t.tm_sec))
led.value = True
offSec = ((t.tm_sec % 60) + 5) % 60 # close after +5 sec
print("Light turn will off at {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, offSec))
if(t.tm_sec >= offSec and led.value):
led.value = False
print("\tLight has turned off at {}:{:02}:{:02}\n".format(t.tm_hour, t.tm_min, t.tm_sec))
time.sleep(1)