From 4ec48b9f8fe7b334b50dc7137e276b585072318b Mon Sep 17 00:00:00 2001 From: jimmy Date: Mon, 15 Sep 2025 12:58:30 +1200 Subject: [PATCH] main: update loop/test harness configuration --- src/main.py | 60 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/main.py b/src/main.py index 6e8c54c..6eafa88 100644 --- a/src/main.py +++ b/src/main.py @@ -1,5 +1,6 @@ import asyncio import aioespnow +import patterns from settings import Settings from web import web from patterns import Patterns @@ -10,9 +11,12 @@ import time import wifi import json from p2p import p2p +import espnow +import network -async def main(): +def main(): settings = Settings() + print(settings) patterns = Patterns(settings["led_pin"], settings["num_leds"], selected=settings["pattern"]) if settings["color_order"] == "rbg": color_order = (1, 5, 3) @@ -22,33 +26,43 @@ async def main(): 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_if = network.WLAN(network.STA_IF) + sta_if.active(True) - async def system(): - while True: - gc.collect() - for i in range(60): - wdt.feed() - await asyncio.sleep(1) + e = espnow.ESPNow() + e.active(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() + while True: + patterns.tick() + wdt.feed() + host, msg = e.recv(0) + if msg: + try: + data = json.loads(msg) + print(data) - asyncio.create_task(tick()) - asyncio.create_task(p2p(settings, patterns)) - asyncio.create_task(system()) + defaults = data.get("d", {}) + bar = data.get(settings.get("name"), {}) + patterns.set_brightness(bar.get("brightness", defaults.get("brightness", 100))) + patterns.set_delay(bar.get("delay", defaults.get("delay", 100))) + colors = bar.get("colors", defaults.get("colors", ["#000000", "#000000"])) + patterns.colors = [tuple(int(color[i:i+2], 16) for i in settings.color_order) for color in colors] + patterns.select(bar.get("pattern", defaults.get("pattern", "off"))) + patterns.n1 = bar.get("n1", defaults.get("n1", 0)) + patterns.n2 = bar.get("n2", defaults.get("n2", 58)) + patterns.on_width = bar.get("on_width", defaults.get("on_width", 1)) + patterns.off_width = bar.get("off_width", defaults.get("off_width", 2)) + patterns.oneshot = bar.get("oneshot", defaults.get("oneshot", False)) + patterns.beat = bar.get("beat", defaults.get("beat", False)) + patterns.beat_mode = bar.get("beat_mode", defaults.get("beat_mode", False)) + patterns.auto = bar.get("auto", defaults.get("auto", True)) + except: + print(f"Failed to load espnow data {msg}") + continue + - # cleanup before ending the application - await server - -asyncio.run(main()) +main()