feat: Add node discovery feature and improve advert notification

Implemented new "Discover Nodes" feature in Network Commands menu:
- Added .node_discover command to meshcli wrapper (cli.py)
- Created interactive modal with sortable table showing nearby repeaters
- Displays SNR, RSSI, path length, and signal quality indicators
- Added refresh functionality to rescan for nodes

Fixed advert notification to show clean "Advert sent" message
instead of full meshcli output.

Technical changes:
- app/meshcore/cli.py: Added node_discover() function with JSON parsing
- app/routes/api.py: Updated SPECIAL_COMMANDS and execute_special_command()
  to handle node_discover return type and clean advert message
- app/templates/base.html: Added "Discover Nodes" menu button and modal
- app/static/js/app.js: Added discoverNodes() and displayNodeDiscoveryResults()
- README.md: Added documentation for Discover Nodes feature

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
MarekWo
2026-01-02 14:34:02 +01:00
parent 797096b551
commit 75ec789fba
5 changed files with 282 additions and 13 deletions

View File

@@ -505,6 +505,24 @@ Sends a single advertisement frame to announce your node's presence in the mesh
2. Click "Send Advert" under Network Commands
3. Wait for confirmation toast
#### Discover Nodes
Scans the mesh network to find nearby repeaters and displays their signal quality. Useful for network diagnostics and finding the best repeater connections.
1. Click the menu icon (☰) in the navbar
2. Click "Discover Nodes" under Network Commands
3. A modal window opens showing nearby repeaters with:
- **Node ID**: Public key prefix and tag
- **SNR (Signal-to-Noise Ratio)**: Higher is better (>10dB = excellent, 5-10dB = good, <5dB = poor)
- **RSSI**: Received signal strength in dBm
- **SNR In**: Inbound signal quality
- **Hops**: Number of hops to reach the node
4. Click "Refresh" to rescan for nodes
Results are sorted by signal strength (strongest first) and color-coded:
- 🟢 **Green**: SNR ≥ 10dB (excellent connection)
- 🟡 **Yellow**: SNR 5-10dB (good connection)
- 🔴 **Red**: SNR < 5dB (poor connection)
#### Flood Advert (Use Sparingly!)
Sends advertisement in flooding mode, forcing all nodes to retransmit. **Use only when:**
- Starting a completely new network