Newer
Older
from alarm import BaseAlarmClock, AlarmState
from datetime import time, datetime
from time import sleep
from pynput import keyboard
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import numpy as np
import vlc
SNOOZE_KEY = keyboard.Key.up
ALARM_OFF_KEY = keyboard.Key.esc
SNOOZE_SEC = 5
def softmax(arr):
val = np.exp(arr)
return val / sum(val)
class SmartAlarmClock(BaseAlarmClock):
def __init__(self, wake_time: Optional[time] = None, vlc_player=None):
if wake_time:
self.set_alarm(wake_time)
super().__init__()
def set_alarm(self, wake_time: time) -> time:
print(f"SETTING ALARM to: {wake_time}")
return super(SmartAlarmClock, self).set_alarm(wake_time)
def start_alarm(self) -> None:
print("STARTING ALARM")
super(SmartAlarmClock, self).start_alarm()
def sound_alarm(self) -> None:
print("SOUNDING ALARM")
super(SmartAlarmClock, self).sound_alarm()
def snooze_alarm(self) -> None:
print("SNOOZING ALARM")
super(SmartAlarmClock, self).snooze_alarm()
def stop_alarm(self, deactivate: bool = True) -> None:
print("STOPPING ALARM")
if self._current_state is AlarmState.PLAYING:
print("STOPPED PLAYING ALARM")
super(SmartAlarmClock, self).stop_alarm()
def smart_alarm_mode(self, model):
self.start_alarm()
while not self.alarm_check_reached(datetime.now().time()):
print(f"ALARM SLEEPING @: {datetime.now().time()}")
sleep(1)
self.sound_alarm()
while self.current_state is not AlarmState.DEACTIVATED:
with keyboard.Events() as events:
for event in events:
if event.key == ALARM_OFF_KEY:
self.stop_alarm()
break
elif event.key == SNOOZE_KEY:
self.snooze_alarm()
sleep(SNOOZE_SEC)
self.sound_alarm()
break
if __name__ == '__main__':
alarm_hour = int(input("What hour do you want the alarm to go off at?"))
alarm_minute = int(input("What minute do you want the alarm to go off at?"))
alarm_second = int(input("What second do you want the alarm to go off at?"))
alarm_time = time(alarm_hour, alarm_minute, alarm_second)
alarm_clock_class = SmartAlarmClock(alarm_time)
ai_model = None
alarm_clock_class.smart_alarm_mode(ai_model)