import schedule
import subprocess
import time
import board
import digitalio
from adafruit_apds9960.apds9960 import APDS9960
import pygame
from adafruit_debouncer import Debouncer



#Setup Audio
pygame.mixer.init()
path = "/home/pi/times/"

# set up button/ magnetic switch
button = digitalio.DigitalInOut(board.D14)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP
button_A = Debouncer(button)


# set up the LED
# led = digitalio.DigitalInOut(board.D24)
# led.direction = digitalio.Direction.OUTPUT
# led.value = True
# flash LED when program is first run.
flash = True


i2c = board.I2C()

multi_sensor = APDS9960(i2c)
multi_sensor.enable_proximity  = True


alarm_times = ['5-30.wav', '6-00.wav','6-30.wav','7-00.wav','7-30.wav']


# get and print the local time, just so you can be sure your Pi's timezone is set
t = time.localtime()
current_time = time.strftime("%H:%M:%S", t)
print('current time:' + current_time)


def job():
    pygame.mixer.music.load(path + "alarm.wav")
    pygame.mixer.music.play()


alarm_time = ''

def get_alarm_time(counter):
    if counter == 0:
        return '05:30'
    elif counter == 1:
        return '06:00'
    elif counter == 2:
        return '06:30'
    elif counter == 3:
        return '07:00'
    elif counter == 4:
        return '07:30'


counter = 0
set_alarm = False

while True:
    set_alarm = True

    reading = multi_sensor.proximity
    button_A.update()

    if button_A.fell:
        initial = time.monotonic()
    if button_A.rose:
        now = time.monotonic()
        if now - initial > 1.5:
            alarm_time = get_alarm_time(counter-1)
            if set_alarm: 
                schedule.every().day.at(alarm_time).do(job)
                #schedule.every().day.at('12:00').do(job)
                print("SET FOR " + str(alarm_time))
                pygame.mixer.music.load(path+"set_time.wav")
                pygame.mixer.music.play()


        else:      
            if counter == 5:
                counter = 0
            pygame.mixer.music.load(path+alarm_times[counter])
            pygame.mixer.music.play()

            counter+=1

    if set_alarm and reading < 110:
        schedule.run_pending()
    
    if reading > 110:
        set_alarm = False
        pygame.mixer.music.stop()

    print(reading)
    print(set_alarm)
