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):