diff --git a/meshview/mqtt_store.py b/meshview/mqtt_store.py index 4841e5a..67490e2 100644 --- a/meshview/mqtt_store.py +++ b/meshview/mqtt_store.py @@ -81,52 +81,35 @@ async def process_envelope(topic, env): ) session.add(seen) - - if env.packet.decoded.portnum == PortNum.NODEINFO_APP: - user = decode_payload.decode_payload( - PortNum.NODEINFO_APP, env.packet.decoded.payload - ) - if user: - result = await session.execute(select(Node).where(Node.id == user.id)) - if user.id and user.id[0] == "!": - try: - node_id = int(user.id[1:], 16) - except ValueError: - node_id = None - pass - else: - node_id = None + try: + user = decode_payload.decode_payload(PortNum.NODEINFO_APP, env.packet.decoded.payload) + if user and user.id: + node_id = int(user.id[1:], 16) if user.id[0] == "!" else None + hw_model = HardwareModel.Name(user.hw_model) if hasattr(HardwareModel, 'Name') else "unknown" + role = Config.DeviceConfig.Role.Name(user.role) if hasattr(Config.DeviceConfig.Role, + 'Name') else "unknown" - try: - hw_model = HardwareModel.Name(user.hw_model) - except ValueError: - hw_model = "unknown" - try: - role = Config.DeviceConfig.Role.Name(user.role) - except ValueError: - role = "unknown" + node = (await session.execute(select(Node).where(Node.id == user.id))).scalar_one_or_none() - if node := result.scalar_one_or_none(): - node.node_id = node_id - node.long_name = user.long_name - node.short_name = user.short_name - node.hw_model = hw_model - node.role = role - node.channel = env.channel_id - node.last_update =datetime.datetime.now() - - else: - node = Node( - id=user.id, - node_id=node_id, - long_name=user.long_name, - short_name=user.short_name, - hw_model=hw_model, - role=role, - channel=env.channel_id, - ) - session.add(node) + if node: + node.node_id = node_id + node.long_name = user.long_name + node.short_name = user.short_name + node.hw_model = hw_model + node.role = role + node.channel = env.channel_id + node.last_update = datetime.datetime.now() + else: + node = Node( + id=user.id, node_id=node_id, + long_name=user.long_name, short_name=user.short_name, + hw_model=hw_model, role=role, channel=env.channel_id, + last_update=datetime.datetime.now(), + ) + session.add(node) + except Exception as e: + print(f"Error processing NODEINFO_APP: {e}") if env.packet.decoded.portnum == PortNum.POSITION_APP: position = decode_payload.decode_payload( diff --git a/meshview/templates/net.html b/meshview/templates/net.html index 9d6fcbb..5222753 100644 --- a/meshview/templates/net.html +++ b/meshview/templates/net.html @@ -21,8 +21,7 @@ {% block body %} -
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.

+
{{ site_config["site"]["weekly_net_message"] }}

{% for packet in packets %} diff --git a/meshview/web.py b/meshview/web.py index 4af2ecf..773147b 100644 --- a/meshview/web.py +++ b/meshview/web.py @@ -1127,7 +1127,7 @@ async def net(request): print_memory_usage() # Fetch packets for the given node ID and port number packets = await store.get_packets( - node_id=0xFFFFFFFF, portnum=PortNum.TEXT_MESSAGE_APP, limit=200 + node_id=0xFFFFFFFF, portnum=PortNum.TEXT_MESSAGE_APP, limit=1000 ) # Convert packets to UI packets diff --git a/sample.config.ini b/sample.config.ini index abfaa80..67bed20 100644 --- a/sample.config.ini +++ b/sample.config.ini @@ -1,25 +1,27 @@ [server] bind = * port = 8081 -tls_cert = -acme_challenge = +tls_cert = +acme_challenge = [site] -domain = http://meshview.bayme.sh +domain = https://www.bayme.sh title = Bay Area Mesh -message = +message = Real time data from around the bay area and beyond. # Map structure map_top_left_lat=39 map_top_left_lon=-123 map_bottom_right_lat=36 map_bottom_right_lon=-121 +# Note about how your weekly mesh runs. time and tag used for the system to track. +weekly_net_message= Weekly Mesh check-in. We will keep it open on every Wednesday from 5:00pm for checkins. The message format should be (LONG NAME) - (CITY YOU ARE IN) #BayMeshNet. [mqtt] server = mqtt.bayme.sh -topics = ["msh/US/bayarea/#", "msh/US/CA/mrymesh/#"] +topics = ["msh/US/bayarea/#", "msh/US/CA/mrymesh/#"] port = 1883 username = meshdev password = large4cats [database] -connection_string = sqlite+aiosqlite:///packets.db +connection_string = sqlite+aiosqlite:///packets.db \ No newline at end of file