diff --git a/src/boot.py b/src/boot.py index 43c56e5..ffd9ea7 100644 --- a/src/boot.py +++ b/src/boot.py @@ -6,4 +6,4 @@ s = Settings() name = s.get('name', 'led') password = s.get("ap_password", "") -wifi.ap(name, password) +# wifi.ap(name, password) diff --git a/src/main.py b/src/main.py index 6e8c54c..7bb5523 100644 --- a/src/main.py +++ b/src/main.py @@ -10,45 +10,46 @@ import time import wifi import json from p2p import p2p +import espnow +import network -async def main(): - settings = Settings() +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"])) +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(0) +sta = network.WLAN(network.STA_IF) +sta.active(True) +sta.disconnect() # Because ESP8266 auto-connects to last Access Point - async def system(): - while True: - gc.collect() - for i in range(60): - wdt.feed() - await asyncio.sleep(1) +e = espnow.ESPNow() +e.active(True) + +print(settings) +# start the server in a bacakground task +print("Starting") + +wdt = machine.WDT(timeout=10000) + +while True: - 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(tick()) - asyncio.create_task(p2p(settings, patterns)) - asyncio.create_task(system()) - - - - # cleanup before ending the application - await server - -asyncio.run(main()) + patterns.tick() + host, msg = e.recv(0) + if msg: + try: + data = json.loads(msg) + except: + print(f"Failed to load espnow data {msg}") + continue + print(data) + if "names" not in data or settings.get("name") in data.get("names", []): + if "step" in settings and isinstance(settings["step"], int): + patterns.set_pattern_step(settings["step"]) + else: + settings.set_settings(data.get("settings", {}), patterns, data.get("save", False))