Update web.py
This commit is contained in:
parent
e57feda131
commit
09bc09cca3
52
src/web.py
52
src/web.py
|
@ -1,22 +1,62 @@
|
||||||
from microdot import Microdot, send_file, Response
|
from microdot import Microdot, send_file, Response
|
||||||
from microdot.utemplate import Template
|
from microdot.utemplate import Template
|
||||||
from microdot.websocket import with_websocket
|
from microdot.websocket import with_websocket
|
||||||
|
import machine
|
||||||
import json
|
from settings import set_settings
|
||||||
import wifi
|
import wifi
|
||||||
|
import json
|
||||||
|
import aioespnow
|
||||||
|
|
||||||
def web(settings):
|
def web(settings, patterns):
|
||||||
app = Microdot()
|
app = Microdot()
|
||||||
Response.default_content_type = 'text/html'
|
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('/')
|
@app.route('/')
|
||||||
async def index(request):
|
async def index_hnadler(request):
|
||||||
return Template('/index.html').render(settings=settings, patterns=patterns.patterns.keys())
|
mac = wifi.get_mac().hex()
|
||||||
|
return Template('/index.html').render(settings=settings, patterns=patterns.patterns.keys(), mac=mac)
|
||||||
|
|
||||||
@app.route("/static/<path:path>")
|
@app.route("/static/<path:path>")
|
||||||
def static(request, path):
|
def static_handler(request, path):
|
||||||
if '..' in path:
|
if '..' in path:
|
||||||
# Directory traversal is not allowed
|
# Directory traversal is not allowed
|
||||||
return 'Not found', 404
|
return 'Not found', 404
|
||||||
return send_file('static/' + path)
|
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
|
return app
|
||||||
|
|
Loading…
Reference in New Issue