from app.display import NeoPixel_64x64
from app.display.fonts import font_5x7
from app.tryout import Font_Checker, Weather_Checker, Emoji_Checker
from app.utils import show_system_load
from app.utils import sync_ntp_time, get_datetime_string, get_german_datetime  # Time-related functions
from app.utils import SimpleCounter
from app.web import Wlan
import time
import uasyncio as asyncio # type: ignore

CITY_LIST: list[str]= sorted(["Großhansdorf","Columbus", "London", "Ebeltoft", "Tokio"])

async def weather_check_task(weather_checker:Weather_Checker):
    while True:
        for city in CITY_LIST:
            weather_checker.check(city=city, lang="de", test_mode=False)
            print(f"Checked {city}")
            await asyncio.sleep(3 * 60)  # Non-blocking sleep

async def print_time_task() -> None:
    simpleCnt: SimpleCounter = SimpleCounter()
    while True:
        dt1:int = get_datetime_string()
        dt2:int = get_german_datetime()
        simpleCnt+=1
        print(f"print_time_task running... {simpleCnt.value%16} {dt1} {dt2}")
        await asyncio.sleep(10)
        
        
async def main(weather_checker:Weather_Checker)->None:
    # Run both tasks concurrently
	await asyncio.gather(weather_check_task(weather_checker), print_time_task())
            
# Programm Startpunkt
if __name__ == '__main__':
	display = NeoPixel_64x64()
	wlan: Wlan = Wlan( )
	wlan.connect( ssid="Wokwi-Wlan", password="12345678")

	sync_ntp_time()

	# font_checker : Font_Checker = Font_Checker( display)
	# font_checker.fonts_check(pretty=False)

	# emoji_checker : Emoji_Checker = Emoji_Checker(display)
	# emoji_checker.check()

	# tryout.weather_check(display, test_mode=False)
	display.set_font(font_5x7)
	weather_checker: Weather_Checker = Weather_Checker( display=display)
 
 
 
	# while True:
	# 	for city in sorted(CITY_LIST):
	# 		weather_checker.check(city=city, lang="de", test_mode=False)
	# 		time.sleep(5*60)

	# show_system_load()
	asyncio.run(main(weather_checker))
