Remove web interface
This commit is contained in:
103
src/main.py
103
src/main.py
@@ -1,54 +1,79 @@
|
||||
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
|
||||
import json
|
||||
from p2p import p2p
|
||||
import espnow
|
||||
import network
|
||||
import asyncio
|
||||
import json
|
||||
import machine
|
||||
|
||||
async def main():
|
||||
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(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)
|
||||
# start the server in a bacakground task
|
||||
print("Starting")
|
||||
server = asyncio.create_task(w.start_server(host="0.0.0.0", port=80))
|
||||
|
||||
if settings.get("color_order", "rgb") == "rbg":
|
||||
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.feed()
|
||||
|
||||
asyncio.create_task(tick())
|
||||
asyncio.create_task(p2p(settings, patterns))
|
||||
asyncio.create_task(system())
|
||||
#print mac in hex
|
||||
print("Mac address", sta_if.config("mac").hex())
|
||||
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
|
||||
await server
|
||||
patterns.select(patterns.selected)
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user