diff options
| author | Abdellah El Morabit <nsrddyn@gmail.com> | 2024-11-18 19:23:17 +0100 |
|---|---|---|
| committer | Abdellah El Morabit <nsrddyn@gmail.com> | 2024-11-18 19:23:17 +0100 |
| commit | 2feb019c373c99fa3840d99724f5ee6f7c4dac36 (patch) | |
| tree | 9bf1d614b602149a0ef27078894d6a15ecb13ff0 /bin/main.py | |
| parent | 3714c08a1233884696e0f5483d73efa890e1a5a1 (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.py | 109 |
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() |
