diff --git a/meshview/store.py b/meshview/store.py index 3d85758..fb67463 100644 --- a/meshview/store.py +++ b/meshview/store.py @@ -91,7 +91,7 @@ async def process_envelope(topic, env): position = decode_payload.decode_payload( PortNum.POSITION_APP, env.packet.decoded.payload ) - if position.latitude_i and position.longitude_i: + if position and position.latitude_i and position.longitude_i: from_node_id = getattr(env.packet, 'from') node = (await session.execute(select(Node).where(Node.node_id == from_node_id))).scalar_one_or_none() if node: diff --git a/meshview/templates/search_form.html b/meshview/templates/search_form.html index 9825952..dc1d070 100644 --- a/meshview/templates/search_form.html +++ b/meshview/templates/search_form.html @@ -23,6 +23,7 @@ 3: "Position", 4: "Node Info", 67: "Telemetry", + 70: "Traceroute", 71: "Neighbor Info", } %} diff --git a/meshview/web.py b/meshview/web.py index 64a4dea..c842aad 100644 --- a/meshview/web.py +++ b/meshview/web.py @@ -435,6 +435,8 @@ async def graph_power(request): voltage = [] for p in await store.get_packets_from(int(request.match_info['node_id']), PortNum.TELEMETRY_APP): _, payload = decode_payload.decode(p) + if not payload: + continue if not payload.HasField('device_metrics'): continue timestamp = datetime.datetime.fromtimestamp(payload.time) @@ -485,6 +487,8 @@ async def graph_neighbors(request): dates =[] for p in await store.get_packets_from(int(request.match_info['node_id']), PortNum.NEIGHBORINFO_APP): _, payload = decode_payload.decode(p) + if not payload: + continue if p.import_time < oldest: break