- Python 98%
- Shell 2%
| install.sh | ||
| meshcore-v2.py | ||
| README.md | ||
| requirements_app.txt | ||
MeshCore WebApp v2 — Kurzbeschreibung
Zweck: Browser-basiertes Dashboard zur Überwachung und Bedienung eines MeshCore-Nodes (Meshtastic-kompatibel) über TCP, Serial oder BLE.
Architektur
MeshCore Node
│ TCP/Serial/BLE
▼
meshcore_app_v2.py
├── MeshCoreManager ← meshcore_py API, Events, Cache
├── aiohttp WebServer ← HTTP + WebSocket
├── aiosqlite DB ← Nachrichten, Kontakte, Channels
└── WebSocket Broadcast → Browser
Start:
python3 meshcore_app_v2.py --tcp 192.168.1.100 5000
python3 meshcore_app_v2.py --serial /dev/ttyUSB0
python3 meshcore_app_v2.py --demo # ohne Hardware
Features
Verbindung
-
TCP, Serial, BLE — automatischer Reconnect
-
Demo-Modus mit Dummy-Daten zum Testen
Kontakte
-
Liste aller bekannten Nodes mit Online-Status (grüner Punkt < 10 min)
-
Sortierung: Ungelesene zuerst, dann nach letztem Kontakt
-
Typen: Client / Repeater / Room
-
Rechtsklick-Modal mit Key, Pfad, RSSI, SNR, Batterie, GPS, Uptime
-
Repeater: kein Chat, nur Info-Modal
Nachrichten
-
Direktnachrichten pro Kontakt
-
Kanal-Nachrichten (Channel 0–7)
-
Unread-Counter mit blinkendem Punkt auf Avatar und Tab
-
ACK-Status: ✓✓ bestätigt / ✓→ Broadcast / ✗ fehlgeschlagen
-
Pfad der letzten Nachricht (Hops)
Channels
-
Automatisch von Node geladen (max. 8)
-
Eigener Chat-Bereich pro Channel
Karte
-
Leaflet/OpenStreetMap
-
Nodes mit GPS werden als farbige Punkte dargestellt
-
Eigener Node wird aus
SELF_INFOeingetragen
Mein Gerät (Panel unten links)
-
Name, Akku, Uptime, Modell/FW, Frequenz
-
Quellen:
SELF_INFO,get_bat(),get_stats_core(),DEVICE_INFO
Log
-
Alle eingehenden/ausgehenden Nachrichten
-
Verbindungsereignisse, Fehler
Technischer Stack
| Komponente | Technologie |
|---|---|
| Backend | Python 3.11+, asyncio |
| MeshCore API | meshcore-py (subscribe, start_auto_message_fetching) |
| Web-Server | aiohttp |
| Datenbank | aiosqlite / SQLite |
| Frontend | Vanilla JS, Leaflet, IBM Plex Mono, Outfit |
| Kommunikation | WebSocket (JSON) |
Bekannte Einschränkungen
-
Channel-Nachrichten haben keinen Absender (MeshCore-Protokoll liefert keinen pubkey im Channel-Payload)
-
Pfad nur bei eingehenden Direktnachrichten verfügbar
-
GPS nur wenn Node es sendet