main: update loop/test harness configuration

This commit is contained in:
2025-09-15 12:58:30 +12:00
parent 1456ed8a6e
commit 4ec48b9f8f

View File

@@ -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()