import asyncio import aioespnow from settings import Settings from web import web from patterns import Patterns import gc import utime import machine import time import wifi async def main(): settings = Settings() patterns = Patterns(settings["led_pin"], settings["num_leds"], selected=settings["pattern"]) if settings["color_order"] == "rbg": color_order = (1, 5, 3) else: color_order = (1, 3, 5) patterns.set_color1(tuple(int(settings["color1"][i:i+2], 16) for i in color_order)) patterns.set_color2(tuple(int(settings["color2"][i:i+2], 16) for i in color_order)) patterns.set_brightness(int(settings["brightness"])) patterns.set_delay(int(settings["delay"])) async def tick(): while True: patterns.tick() await asyncio.sleep_ms(1) async def espnow(): e = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support e.active(True) async for mac, msg in e: print(msg) settings.set_settings(msg, patterns) print("should not print") async def wifi_connect(): for i in range(10): config = wifi.connect(settings.get("wifi_ssid", ""), settings.get("wifi_password", ""), settings.get("wifi_ip", ""), settings.get("wifi_gateway", "") ) if config: print(config) break await asyncio.sleep_ms(500) w = web(settings, patterns) print(settings) # start the server in a bacakground task print("Starting") server = asyncio.create_task(w.start_server(host="0.0.0.0", port=80)) wdt = machine.WDT(timeout=10000) wdt.feed() asyncio.create_task(wifi_connect()) asyncio.create_task(tick()) asyncio.create_task(espnow()) while True: #print(time.localtime()) gc.collect() for i in range(20): wdt.feed() await asyncio.sleep_ms(1000) # cleanup before ending the application await server asyncio.run(main())