From 09bc09cca302b16d367ce9be1c164357c368a080 Mon Sep 17 00:00:00 2001 From: jimmy Date: Sun, 18 May 2025 21:31:00 +1200 Subject: [PATCH] Update web.py --- src/web.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/src/web.py b/src/web.py index 18b2a83..ad6ab64 100644 --- a/src/web.py +++ b/src/web.py @@ -1,22 +1,62 @@ from microdot import Microdot, send_file, Response from microdot.utemplate import Template from microdot.websocket import with_websocket - -import json +import machine +from settings import set_settings import wifi +import json +import aioespnow -def web(settings): +def web(settings, patterns): app = Microdot() Response.default_content_type = 'text/html' + e = aioespnow.AIOESPNow() # Returns AIOESPNow enhanced with async support + e.active(True) + peer = bytes.fromhex("e4b323c5411d") + peer = b'\xbb\xbb\xbb\xbb\xbb\xbb' + e.add_peer(peer) + print(peer) @app.route('/') - async def index(request): - return Template('/index.html').render(settings=settings, patterns=patterns.patterns.keys()) + async def index_hnadler(request): + mac = wifi.get_mac().hex() + return Template('/index.html').render(settings=settings, patterns=patterns.patterns.keys(), mac=mac) @app.route("/static/") - def static(request, path): + def static_handler(request, path): if '..' in path: # Directory traversal is not allowed return 'Not found', 404 return send_file('static/' + path) + + @app.post("/settings") + def settings_handler(request): + # Keep the POST handler for compatibility or alternative usage if needed + # For WebSocket updates, the /ws handler is now primary + return set_settings(request.body.decode('utf-8'), settings, patterns) + + @app.route("/ws") + @with_websocket + async def ws(request, ws): + while True: + data = await ws.receive() + if data: + # Process the received data + await send(data) + _, status_code = set_settings(data, settings, patterns) + #await ws.send(status_code) + else: + break + + async def send(data): + + msg = {"delay": 1000} + try: + if not await e.asend(peer, data): + print("Heartbeat: peer not responding:", peer) + else: + print("Heartbeat: ping", peer) + except: + return + return app