summaryrefslogtreecommitdiff
path: root/bin/main.py
diff options
context:
space:
mode:
authorAbdellah El Morabit <nsrddyn@gmail.com>2024-11-24 01:31:48 +0100
committerAbdellah El Morabit <nsrddyn@gmail.com>2024-11-24 01:31:48 +0100
commit4b7da2645370361dfdb175129a24369e0cc0f977 (patch)
tree8f7531ad6b68b5bcc9c1b7f0146fedcd9b15e6f1 /bin/main.py
parentcc8792b3150f7b7f0a5a297dedd78295d4031c68 (diff)
worked on the GUI for the application, added a couple of new features, updated the readme, added a quotes file for making a daily quote feature thats going to reset at midnight, also did some small bug fixing
Diffstat (limited to 'bin/main.py')
-rw-r--r--bin/main.py102
1 files changed, 89 insertions, 13 deletions
diff --git a/bin/main.py b/bin/main.py
index 17b506d..bf556ca 100644
--- a/bin/main.py
+++ b/bin/main.py
@@ -2,12 +2,13 @@ import time
import os
import speech_recognition as speech
import sounddevice
-import i2c as lcd
+import bin.hardware_driver as lcd
from gpiozero import CPUTemperature
ERROR_BAD_REQUEST = "400 Bad Request"
ERROR_UNAUTHORIZED = "401 Unauthorized"
ERROR_NOT_FOUND = "404 Not Found"
+SPEECH_NOT_RECOGNIZED = "404-1 Speech is not recognized"
ERROR_TIMEOUT = "408 Request Timeout"
lcd_instance = lcd.LCD()
@@ -16,7 +17,46 @@ recognizer = speech.Recognizer()
microphone = speech.Microphone()
-def display_cpu_info():
+# greeting that starts upon the boot of the device:
+# shows a hello line; shorter than 16 chars
+# and some small information on the second line
+def custom_greeting():
+ with open('quotes.txt', 'r') as file:
+ quotes = file.readlines()
+
+ # Strip newline characters and use the quotes
+ quotes = [quote.strip() for quote in quotes]
+
+ # Print the quotes
+ for quote in quotes:
+ print(quote)
+ first_line = ""
+ second_line = ""
+ count = 0
+ for i in quote:
+ if count < 16:
+ first_line += i
+ count += 1
+ else:
+ second_line += i
+ lcd.text(first_line,1)
+ lcd.text(secon_line,2)
+def pomodoro():
+ time = input("How long do you want to wait? : ")
+ print("Okay \nStarting Now...")
+ while time > 0:
+ time.sleep(1)
+ print(time + "Seconds")
+ lcd.text(time + " Seconds remaining...", 1)
+ time -= 1
+
+
+def weather():
+ pass
+
+
+# ram usage, internet speed,
+def system_readings():
lcd_instance.clear()
while True:
load = os.getloadavg()[0]
@@ -37,6 +77,7 @@ def display_uptime():
def recognize_speech():
+
lcd_instance.clear()
try:
with microphone as source:
@@ -46,6 +87,7 @@ def recognize_speech():
text = recognizer.recognize_google(audio)
lcd_instance.clear()
lcd_instance.text(text, 1)
+
print("Speech recognized:", text)
except speech.UnknownValueError:
lcd_instance.text(ERROR_BAD_REQUEST, 1)
@@ -54,6 +96,8 @@ def recognize_speech():
lcd_instance.text(ERROR_UNAUTHORIZED, 1)
print(ERROR_UNAUTHORIZED)
+ return text
+
def save_notes():
print("Type your notes (type 'stop' to exit):")
@@ -61,32 +105,64 @@ def save_notes():
while True:
line = 1
output = input(":")
+ output_length = len(output)
if output.lower() in ["stop", "break", "quit", "exit"]:
break
if output == "line=1":
line = 1
elif output == "line=2":
line = 2
- lcd_instance.text(output, line)
- time.sleep(2)
+
+ if output_length < 16:
+ lcd_instance.text(output, line)
+ time.sleep(2)
+ else:
+ output_list = output.split("")
+ first_line = ""
+ second_line = ""
+ for i in output_list:
+ count = 0
+ if count > 16:
+ first_line += output_list[i]
+ count += 1
+ else:
+ second_line += output_list[i]
+ lcd.text(first_line,1)
+ lcd.text(secon_line,2)
+
+def command_center(commands):
+ # checking if we can reconize commands within the user speech
+ # requires ->
+ # converting the commands to human readable text
+ # no under scars
+ command = recognize_speech()
+ list = []
+ try:
+ for i in commands:
+ if i == command:
+ print("I think i found what you ment...")
+ command()
+ except:
+ print("ERROR 404 - COMMAND NOT RECOGNIZED")
-OPTIONS = {
- "CPU_INFO": display_cpu_info,
- "UPTIME": display_uptime,
- "SPEECH_TRANSCRIBER": recognize_speech,
- "NOTES": save_notes,
-}
+FEATURES = {
+ "READINGS": system_readings,
+ "UPTIME": display_uptime,
+ "SPEECH_TRANSCRIBER": recognize_speech,
+ "NOTES": save_notes,
+ "COMMAND CENTER": command_center,
+ }
def main():
lcd_instance.clear()
- print("WELCOME TO THE I2C COMMAND LINE CENTER")
- print("Options:", ", ".join(OPTIONS.keys()))
+ os.system("cls" if os.name == "nt" else "clear")
+ print("FEATURES:", ", ".join(FEATURES.keys()))
while True:
user_input = input("Enter command: ").upper()
- action = OPTIONS.get(user_input)
+ action = FEATURES.get(user_input)
if action:
action()