import schedule import time import datetime import pifacedigitalio as p TREE = """ * , _/^\_ < > * /.-.\ * * `/&\` * ,@.*;@, /_o.I %_\ * * (`'--:o(_@; /`;--.,__ `') * ;@`o % O,*`'`&\ * * (`'--)_@ ;o %'()\ * /`;--._`''--._O'@; /&*,()~o`;-.,_ `""`) * /`,@ ;+& () o*`;-';\ * (`""--.,_0 +% @' &()\ * /-.,_ ``''--....-'`) * * /@%;o`:;'--,.__ __.'\ ;*,&(); @ % &^;~`"`o;@(); * /(); o^~; & ().o@*&`;&%O\ jgs `"="==""==,,,.,="=="==="` __.----.(\-''#####---...___...-----._ '` \)_`'''''` .--' ') o( )_- `'''` ` """ START = datetime.time(17, 0, 0) END = datetime.time(23, 59, 0) def timestamp(): return datetime.datetime.now() def turn_on(): """ Turn on the christmas tree """ print("{} ON".format(timestamp())) p.digital_write(0, 1) def turn_off(): """ Turn off the christmas tree """ print("{} OFF".format(timestamp())) p.digital_write(0, 0) def check_connectivity(): """ Flick the switch """ print("Checking connectivity:") for i in range(2): turn_on() time.sleep(2) turn_off() time.sleep(2) # Turn on if we are in the correct interval now = datetime.datetime.now().time() if START <= now <= END: turn_on() if __name__ == "__main__": # Connect to PiFace print(TREE) p.init() # Check connectivity check_connectivity() # Message print() print("Starting scheduler:") print("Xmas enabled between {} and {}.".format(START.strftime("%H:%M"), END.strftime("%H:%M"))) # Set up the schedule schedule.every().day.at(START.strftime("%H:%M")).do(turn_on) schedule.every().day.at(END.strftime("%H:%M")).do(turn_off) # Run the event loop while(True): schedule.run_pending() time.sleep(1)