Skip to content

feat(topology): force-directed mesh graph from NEIGHBORINFO and TRACEROUTE#72

Open
iceice400 wants to merge 1 commit into
KMX415:mainfrom
iceice400:feat/topology-graph-tab
Open

feat(topology): force-directed mesh graph from NEIGHBORINFO and TRACEROUTE#72
iceice400 wants to merge 1 commit into
KMX415:mainfrom
iceice400:feat/topology-graph-tab

Conversation

@iceice400
Copy link
Copy Markdown
Contributor

Summary

  • Extend GET /api/analytics/topology?hours=24 — returns { nodes, edges, routes } from NEIGHBORINFO + TRACEROUTE (last 500 NI / 100 route packets)
  • New Topology sidebar tab with D3 force-directed graph (node size = packet count, colour = protocol)
  • Weak links (RSSI < -110 dBm) shown dashed; click node highlights TRACEROUTE path edges
  • Map topology overlay updated for new API response shape

Why

Operators need a mesh link view beyond the map polylines. Reuses decoded NEIGHBORINFO/TRACEROUTE already in SQLite — read-only, no relay/TX impact.

Type

  • Bug fix
  • Feature
  • Docs
  • Refactor
  • UI
  • Installer
  • Region support
  • Hardware change

Testing

  • Local unit tests
  • Tested on hardware
  • Dashboard tested on device
python -m unittest tests.test_topology_api -v

Manual checklist (on gateway with NEIGHBORINFO traffic):

  1. Sidebar → Topology → graph renders with ≥10 nodes on busy mesh
  2. Toggle 1h / 6h / 24h — counts and edges refresh
  3. Weak links (< -110 dBm) appear dashed/grey
  4. Click node → TRACEROUTE path edges highlight cyan
  5. Dashboard map → Topology Links overlay still works
  6. Confirm no relay/TX behaviour change

Hardware: RAK7248 or Pi + HAT · US915 mesh with NEIGHBORINFO

Impact

  • Parsing
  • Relay
  • TX
  • Radio driver
  • Region logic
  • UI + read-only API
  • Installer only

Risks: Low — read-only SQL; edge query capped at 500 packets. D3 loaded from CDN (same pattern as Chart.js).

AI-assisted?

  • Yes

…ROUTE

Extend GET /api/analytics/topology with hours window, nodes, edges, and traceroute paths. Add Topology dashboard tab with D3 force graph; map overlay reads new response shape.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant