Remove web interface

This commit is contained in:
2025-10-15 18:48:51 +13:00
parent e1b844241d
commit af9b63565a

View File

@@ -1,54 +1,79 @@
import asyncio
import aioespnow
from settings import Settings from settings import Settings
from web import web from web import web
from patterns import Patterns from patterns import Patterns
import gc import gc
import utime
import machine
import time
import wifi
import json import json
from p2p import p2p import espnow
import network
import asyncio
import json
import machine
async def main(): 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"]))
async def tick():
while True:
patterns.tick()
await asyncio.sleep_ms(0)
async def system():
while True:
gc.collect()
for i in range(60):
wdt.feed()
await asyncio.sleep(1)
w = web(settings, patterns)
print(settings) print(settings)
# start the server in a bacakground task
print("Starting") if settings.get("color_order", "rgb") == "rbg":
server = asyncio.create_task(w.start_server(host="0.0.0.0", port=80)) color_order = (1, 5, 3)
else:
color_order = (1, 3, 5)
patterns = Patterns(settings["led_pin"], settings["num_leds"], brightness=255)
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
e = espnow.ESPNow()
e.config(rxbuf=1024)
e.active(True)
# Increase buffer size for 8-bar payloads (default 526 bytes might be too small) # Set to 1KB to handle larger multi-bar payloads
wdt = machine.WDT(timeout=10000) wdt = machine.WDT(timeout=10000)
wdt.feed() wdt.feed()
asyncio.create_task(tick()) #print mac in hex
asyncio.create_task(p2p(settings, patterns)) print("Mac address", sta_if.config("mac").hex())
asyncio.create_task(system()) print("Patterns", patterns.colors)
print("Patterns", patterns.selected)
patterns.select(patterns.selected)
while True:
# advance pattern based on its own returned schedule
# due = patterns.tick(due)
wdt.feed()
patterns.tick()
# Drain all pending packets and only process the latest
last_msg = None
while True:
host, msg = e.recv(0)
if not msg:
break
last_msg = msg
if last_msg:
try:
data = json.loads(last_msg)
print(data)
# Always update parameters from message
patterns.brightness = data.get("brightness", patterns.brightness)
patterns.delay = data.get("delay", patterns.delay)
patterns.colors = data.get("colors", patterns.colors)
patterns.selected = data.get("pattern", patterns.selected)
patterns.n1 = data.get("n1", patterns.n1)
patterns.n2 = data.get("n2", patterns.n2)
patterns.n3 = data.get("n3", patterns.n3)
patterns.n4 = data.get("n4", patterns.n4)
patterns.step = data.get("step", patterns.step)
patterns.auto = data.get("auto", patterns.auto)
# cleanup before ending the application patterns.select(patterns.selected)
await server print("Selected pattern", patterns.selected)
asyncio.run(main()) except Exception as ex:
print(f"Failed to load espnow data {last_msg}: {ex}")
continue
finally:
gc.collect()
main()