summaryrefslogtreecommitdiff
path: root/bin/main.py
diff options
context:
space:
mode:
authorAbdellah El Morabit <nsrddyn@gmail.com>2024-11-18 19:23:17 +0100
committerAbdellah El Morabit <nsrddyn@gmail.com>2024-11-18 19:23:17 +0100
commit2feb019c373c99fa3840d99724f5ee6f7c4dac36 (patch)
tree9bf1d614b602149a0ef27078894d6a15ecb13ff0 /bin/main.py
parent3714c08a1233884696e0f5483d73efa890e1a5a1 (diff)
started switching to c, started the web gui, started the gtk gui, ending the swift version
Diffstat (limited to 'bin/main.py')
-rw-r--r--bin/main.py109
1 files changed, 103 insertions, 6 deletions
diff --git a/bin/main.py b/bin/main.py
index 2231547..921082f 100644
--- a/bin/main.py
+++ b/bin/main.py
@@ -1,9 +1,106 @@
-import tk
-import source as main
+import time
+import os
+import speech_recognition as speech
+import sounddevice
+import i2c as LCD
+from gpiozero import CPUTemperature
-source = main()
+ERROR_BAD_REQUEST = "400 Bad Request"
+ERROR_UNAUTHORIZED = "401 Unauthorized"
+ERROR_NOT_FOUND = "404 Not Found"
+ERROR_TIMEOUT = "408 Request Timeout"
-display = tk.Tk()
-display.title("Kasper")
+lcd = LCD
+cpu_temp = CPUTemperature()
+recognizer = speech.Recognizer()
+microphone = speech.Microphone()
-display.mainloop() \ No newline at end of file
+
+def display_cpu_info():
+ lcd.clear()
+ while True:
+ load = os.getloadavg()[0]
+ temperature = cpu_temp.temperature
+ lcd.clear()
+ lcd.display_text(f"CPU Load:i {load}", 1)
+ lcd.display_text(f"Temp: {temperature:}C", 2)
+ time.sleep(5)
+
+
+def display_uptime():
+ lcd.clear()
+ with open("/proc/uptime") as f:
+ uptime_seconds = float(f.readline().split()[0])
+ uptime_str = time.strftime("%H:%M:%S", time.gmtime(uptime_seconds))
+ lcd.clear()
+ lcd.display_text(f"Uptime: {uptime_str}", 1, "center")
+
+
+def recognize_speech():
+ lcd.clear()
+ try:
+ with microphone as source:
+ recognizer.adjust_for_ambient_noise(source)
+ print("Listening...")
+ audio = recognizer.listen(source)
+ text = recognizer.recognize_google(audio)
+ lcd.clear()
+ lcd.display_text(text, 1)
+ print("Speech recognized:", text)
+ except speech.UnknownValueError:
+ lcd.display_text(ERROR_BAD_REQUEST, 1)
+ print(ERROR_BAD_REQUEST)
+ except speech.RequestError:
+ lcd.display_text(ERROR_UNAUTHORIZED, 1)
+ print(ERROR_UNAUTHORIZED)
+
+
+def save_notes():
+ PRINT_REQUEST = True
+ EXIT_CODES = ["stop", "break", "quit", "exit"]
+ if PRINT_REQUEST == True:
+ while True:
+ OUTPUT = input()
+ print(OUTPUT)
+ lcd.display_text(OUTPUT, 1)
+ time.sleep(2)
+ for i in EXIT_CODES:
+ if OUTPUT == i:
+ PRINT_REQUEST == False
+
+
+OPTIONS = {
+ "CPU_INFO": display_cpu_info(),
+ "UPTIME": display_uptime(),
+ "SPEECH_TRANSCRIBER": recognize_speech(),
+ "NOTES": save_notes(),
+}
+
+
+def main():
+ lcd.clear()
+ print("WELCOME TO THE I2C COMMAND LINE CENTER")
+ print("Options:", ", ".join(OPTIONS.keys()))
+
+ while True:
+ user_input = input("Enter command: ").upper()
+ action = OPTIONS.get(user_input)
+
+ if action:
+ action()
+ else:
+ lcd.display_text(ERROR_NOT_FOUND, 1)
+ print(ERROR_NOT_FOUND)
+
+
+def destroy():
+ lcd.clear()
+ os.system("cls" if os.name == "nt" else "clear")
+
+
+if __name__ == "__main__":
+ os.system("cls" if os.name == "nt" else "clear")
+ try:
+ main()
+ except KeyboardInterrupt:
+ destroy()