diff --git a/meshview/store.py b/meshview/store.py index fc1dca0..67b9947 100644 --- a/meshview/store.py +++ b/meshview/store.py @@ -182,3 +182,12 @@ async def get_packets_seen(packet_id): .order_by(PacketSeen.import_time.desc()) ) return result.scalars() + + +async def has_packets(node_id, portnum): + async with database.async_session() as session: + return bool( + (await session.execute( + select(Packet.id).where(Packet.from_node_id == node_id).limit(1) + )).scalar() + ) diff --git a/meshview/templates/node.html b/meshview/templates/node.html index 6d05c7b..a317b16 100644 --- a/meshview/templates/node.html +++ b/meshview/templates/node.html @@ -45,7 +45,9 @@
hw model
{{node.hw_model}}
+ {% if has_telemetry %} + {% endif %} {% else %}
diff --git a/meshview/web.py b/meshview/web.py index 901e262..a287bc0 100644 --- a/meshview/web.py +++ b/meshview/web.py @@ -237,6 +237,7 @@ async def packet_list(request): node = tg.create_task(store.get_node(node_id)) trace = tg.create_task(build_trace(node_id)) neighbors = tg.create_task(build_neighbors(node_id)) + has_telemetry = tg.create_task(store.has_packets(node_id, PortNum.TELEMETRY_APP)) packets = (Packet.from_model(p) for p in await raw_packets) @@ -250,6 +251,7 @@ async def packet_list(request): packet_event="packet", trace=await trace, neighbors=await neighbors, + has_telemetry=await has_telemetry, ), content_type="text/html", ) @@ -264,6 +266,7 @@ async def uplinked_list(request): node = tg.create_task(store.get_node(node_id)) trace = tg.create_task(build_trace(node_id)) neighbors = tg.create_task(build_neighbors(node_id)) + has_telemetry = tg.create_task(store.has_packets(node_id, PortNum.TELEMETRY_APP)) packets = (Packet.from_model(p) for p in await raw_packets) @@ -277,6 +280,7 @@ async def uplinked_list(request): packet_event="uplinked", trace=await trace, neighbors=await neighbors, + has_telemetry=await has_telemetry, ), content_type="text/html", ) @@ -437,6 +441,14 @@ async def graph_power(request): battery.append(payload.device_metrics.battery_level) voltage.append(payload.device_metrics.voltage) + + if not date: + return web.Response( + status=404, + content_type="image/png", + ) + + max_time = datetime.timedelta(days=4) newest = date[0] for i, d in enumerate(date):