from microdot import Microdot, send_file, Response from microdot.utemplate import Template from microdot.websocket import with_websocket import machine from settings import set_settings import wifi import json def web(settings, patterns): app = Microdot() Response.default_content_type = 'text/html' @app.route('/') 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_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): return set_settings(request.body.decode('utf-8'), settings, patterns) @app.route("/external") @with_websocket async def ws(request, ws): patterns.select("external") while True: data = await ws.receive() print(data) for i in range(min(patterns.num_leds, int(len(data)/3))): patterns.set(i, (data[i*3], data[i*3+1], data[i*3+2])) patterns.write() return app