Update web.py

This commit is contained in:
jimmy 2025-05-18 21:31:00 +12:00
parent e57feda131
commit 09bc09cca3
1 changed files with 46 additions and 6 deletions

View File

@ -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/<path:path>")
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