NetDiag — Netzwerk-Diagnose App (SvelteKit + Capacitor)
Find a file
Eduard Wisch 2d35c6b729 WLAN-Demodaten: Kanalanalyse ohne echten Empfang ansehen
Auf Eddys Vorschlag. Der Android-Emulator hat keine WLAN-Hardware und liefert
bei jedem Scan null Netze — Kanalgraph, Gruppierung, Kanalempfehlung und die
Warnregeln ließen sich damit auf dem Gerät überhaupt nicht ansehen. Genau
deshalb ging die erste Fassung der Diagramme unbemerkt unlesbar in den Einsatz.

Schalter in den Einstellungen (Diagnose → WLAN-Demodaten). Ist er an, zeigt die
Kanalanalyse eine realistische Beispielumgebung statt echter Messwerte. Die
Daten decken bewusst die Grenzfälle ab: Mesh über zwei Bänder, mehrere Netze
auf demselben Kanal, ein 40-MHz-Netz im 2,4-GHz-Band und ein DFS- sowie ein
160-MHz-Netz im 5-GHz-Band (lösen beide Warnregeln aus), Netze in allen drei
UNII-Blöcken, ein Netz am Bandrand, ein offenes Netz ohne Standard-Angabe.
Leichtes Rauschen je Scan, damit mehrere Momentaufnahmen einen Zeitverlauf mit
sichtbarem Auf und Ab ergeben.

Damit keine Demo je für eine echte Messung gehalten wird:
- deutlich sichtbarer Hinweis im Kopf der Seite, solange der Modus an ist
- Messungs-Label beginnt mit "DEMODATEN — "
- result-JSON trägt demodaten:true; Dolibarr zeigt das in der Kartenansicht und
  im PDF als eigene Zeile (PDF besonders wichtig, das Dokument geht zum Kunden)

Im Emulator durchgespielt: Schalter an -> Kanalanalyse zeigt alle Diagramme mit
Netzen, 5-GHz-Band in drei lesbaren UNII-Blöcken, Fazit-Zeile und alle drei
Warnhinweise korrekt. Momentaufnahme gespeichert, synchronisiert und in der
Test-DB geprüft: Label und result-Flag korrekt als Demo markiert.

Zweitnutzen: Vorführung beim Kunden, unabhängig davon was gerade in der Luft ist.
2026-08-15 17:45:52 +02:00
.forgejo/workflows android/ fest ins Repo aufgenommen — Build wie beim Adressmanager [apk] 2026-05-19 18:09:23 +02:00
android Phase 4: WLAN-Kanalanalyse — Kanalgraph, Kanalempfehlung, Momentaufnahmen 2026-08-15 16:16:15 +02:00
native-plugin Phase 0: doppelte Plugin-Quelle aufgeloest, falsche Doku-Zusagen korrigiert 2026-08-14 18:39:40 +02:00
src WLAN-Demodaten: Kanalanalyse ohne echten Empfang ansehen 2026-08-15 17:45:52 +02:00
tools WLAN-Diagramme lesbar gemacht: dBm-Achse, 5-GHz-Aufteilung, Farben je Netz 2026-08-15 17:24:59 +02:00
.gitignore WLAN-Diagramme lesbar gemacht: dBm-Achse, 5-GHz-Aufteilung, Farben je Netz 2026-08-15 17:24:59 +02:00
capacitor.config.ts Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
package.json Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
README.md Phase 0: doppelte Plugin-Quelle aufgeloest, falsche Doku-Zusagen korrigiert 2026-08-14 18:39:40 +02:00
svelte.config.js Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
tsconfig.json Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
vite.config.ts Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00

NetDiag — Diagnose-App (Android)

Mobile Netzwerk-Diagnose-App. Erfasst vor Ort beim Kunden (Handy am WLAN oder USB-C→RJ45-Adapter) Geräte, Ports und Messungen und hängt die Protokolle ans Dolibarr-Modul netdiag an Kunde und Auftrag.

Stack

SvelteKit 2 · Svelte 5 · Tailwind 4 · Vite 7 · Capacitor 6 · SQLite-Offline

Entwicklung (Browser)

npm install
npm run dev          # http://localhost:5175

Im Browser liefert ein Mock (src/lib/scanner.ts) Beispiel-Scandaten — die Oberfläche lässt sich ohne Gerät entwickeln. API-Aufrufe gehen über den Vite-Proxy an den Dolibarr-Testserver (192.168.155.11, siehe vite.config.ts).

Android-Build

npm run build
npx cap add android        # einmalig
# android/ liegt komplett im Repo — cap sync kopiert nur die Web-Assets
npx cap sync android
npx cap open android

Release-APK über CI: Commit mit [apk] in der Message → Forgejo baut und lädt die APK in die Package Registry (netdiag-apk). Siehe .forgejo/workflows/build.yml.

Architektur

src/lib/
  api.ts            JSON-API-Client (JWT, 401-Refresh, Timeout)
  auth.svelte.ts    Anmelde-Status
  db.ts             Offline-Speicher (SQLite nativ / localStorage Browser)
  sync.svelte.ts    Sync-Queue -> Dolibarr (idempotent über clientUuid)
  scanner.ts        Brücke zum nativen Plugin (+ Browser-Mock)
  backButton.svelte.ts  Hardware-Back (Single-Instance, KB #480/#549)
  updater.ts        APK-Auto-Update-Prüfung (KB #363)
  tools/            erweiterbare Tool-Plattform
    index.ts        Registry — neues Tool hier eintragen
    netzwerk/       IP-Scan, Port, Ping, IP-Konflikt, SNMP, Traceroute, Stress
    internet/       Durchsatz-Test
    telefonie/      (folgt: SIP, FreePBX, RTP)
src/routes/
  login/ auftraege/ kunden/ protokoll/[id]/ einstellungen/
android/            natives Android-Projekt inkl. Kotlin-Plugin (einzige Quelle)
native-plugin/      nur noch Anleitung/Hinweise zum Plugin

Neues Tool hinzufügen

  1. Datei unter src/lib/tools/<kategorie>/<id>.ts anlegen, Tool implementieren.
  2. In src/lib/tools/index.ts importieren und in TOOLS eintragen.

Kein Eingriff in App-Logik, Sync oder Datenbank — das Ergebnis ist generisches JSON. Braucht das Tool eine neue native Messroutine, eine Methode im Kotlin-Plugin ergänzen.

Bedienung

  1. Anmelden (Dolibarr-Zugang; auf dem Gerät zusätzlich Server-URL).
  2. Aufträge — aktive direkt sichtbar, abgeschlossene per Checkbox, Suche. Alternativ über Kunden suchen.
  3. Auftrag/Kunde antippen → Diagnose-Protokoll öffnet sich.
  4. Werkzeuge ausführen (IP-Scan füllt die Geräteliste, je Gerät weitere Tools).
  5. Abschließen & synchronisieren — Protokoll geht ans Dolibarr, PDF landet im ECM. Offline bleibt es lokal und synct automatisch bei Verbindung.