From 03183384c615abbc3c08b027c190a77c1a372f2c Mon Sep 17 00:00:00 2001 From: Pablo Revilla Date: Fri, 21 Feb 2025 11:24:15 -0800 Subject: [PATCH] Adding screenshots --- config.ini | 2 +- main.py | 4 +++- meshview/mqtt_reader.py | 1 + meshview/templates/net.html | 2 +- meshview/web.py | 38 +------------------------------------ 5 files changed, 7 insertions(+), 40 deletions(-) diff --git a/config.ini b/config.ini index 693429b..9b4e152 100644 --- a/config.ini +++ b/config.ini @@ -6,7 +6,7 @@ acme_challenge = [mqtt] server = mqtt.bayme.sh -topics = ['msh/US/bayarea/#', 'msh/US/CA/mrymesh/#'] +topics = ["msh/US/bayarea/#"] port = 1883 username = meshdev password = large4cats diff --git a/main.py b/main.py index 7accc67..f92a106 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,7 @@ from meshview import database from meshview import store from meshview import web from meshview import http +import json async def load_database_from_mqtt(mqtt_server: str , mqtt_port: int, topic: str, mqtt_user: str | None = None, mqtt_passwd: str | None = None): @@ -23,10 +24,11 @@ async def main(config): mqtt_user: str = config["mqtt"]["username"] if config["mqtt"]["password"] != "": mqtt_passwd: str = config["mqtt"]["password"] + mqtt_topics = json.loads(config["mqtt"]["topics"]) async with asyncio.TaskGroup() as tg: tg.create_task( - load_database_from_mqtt(config["mqtt"]["server"], int(config["mqtt"]["port"]), config["mqtt"]["topics"], mqtt_user, mqtt_passwd) + load_database_from_mqtt(config["mqtt"]["server"], int(config["mqtt"]["port"]), mqtt_topics, mqtt_user, mqtt_passwd) ) tg.create_task( web.run_server( diff --git a/meshview/mqtt_reader.py b/meshview/mqtt_reader.py index 5215f98..c63d3ce 100644 --- a/meshview/mqtt_reader.py +++ b/meshview/mqtt_reader.py @@ -33,6 +33,7 @@ async def get_topic_envelopes(mqtt_server, mqtt_port, topics, mqtt_user, mqtt_pa mqtt_server, port=mqtt_port , username=mqtt_user, password=mqtt_passwd , identifier=identifier, ) as client: for topic in topics: + print(topic) await client.subscribe(topic) async for msg in client.messages: try: diff --git a/meshview/templates/net.html b/meshview/templates/net.html index b16e0db..9d6fcbb 100644 --- a/meshview/templates/net.html +++ b/meshview/templates/net.html @@ -24,7 +24,7 @@
Weekly Mesh check-in. We will keep it open on every Wednesday from 5:00pm for checkins so you do not have to rush.
The message format should be (LONG NAME) - (CITY YOU ARE IN) #BayMeshNet.

-
+
{% for packet in packets %} {% include 'chat_packet.html' %} {% else %} diff --git a/meshview/web.py b/meshview/web.py index 2669546..5265195 100644 --- a/meshview/web.py +++ b/meshview/web.py @@ -1573,7 +1573,7 @@ async def net(request): raise # Let aiohttp handle HTTP exceptions properly except Exception as e: - print("Error processing chat request") + print("Error processing net request") return web.Response( text="An internal server error occurred.", status=500, @@ -1581,42 +1581,6 @@ async def net(request): ) -@routes.get("/net_events") -async def net_events(request): - chat_packet = env.get_template("net_packet.html") - - # Precompile regex for performance (case insensitive) - seq_pattern = re.compile(r"seq \d+$") - - with notify.subscribe(node_id=0xFFFFFFFF) as event: - async with sse_response(request) as resp: - while resp.is_connected(): - try: - await asyncio.wait_for(event.wait(), timeout=10) - except asyncio.TimeoutError: - continue # Timeout occurred, loop again - - if event.is_set(): - # Ensure event.packets is valid before accessing it - packets = [ - p for p in (event.packets or []) - if p.portnum == PortNum.TEXT_MESSAGE_APP - ] - event.clear() - - try: - for packet in packets: - ui_packet = Packet.from_model(packet) - if not seq_pattern.match(ui_packet.payload) and "baymeshnet" in ui_packet.payload.lower(): - await resp.send( - chat_packet.render(packet=ui_packet), - event="net_packet", - ) - except ConnectionResetError: - print("Client disconnected from SSE stream.") - return # Gracefully exit on disconnection - - @routes.get("/map") async def map(request): try: