netdiag-app/native-plugin
Eduard Wisch 3c95ff6b07
All checks were successful
Build APK / build-apk (push) Successful in 1m49s
Phase 6: IP-Test (Dose prüfen) und WLAN-Empfangstracker [apk]
IP-Test: USB-RJ45-Adapter in Netzwerkdose stecken und sofort IP-Adresse,
DHCP-Server, Gateway und Link-Geschwindigkeit (10/100/1000 Mbit) ablesen.
Auto-Refresh alle 2 s, Speichern mit optionalem Raum/Dose-Name ins Protokoll.

WLAN-Empfangstracker: Netz auswählen und beim Durchgehen live RSSI verfolgen.
Hybrid-Modus: 500 ms Polling bei verbundenem Netz (kein Scan-Throttling),
~30 s Scan-Sweep bei Fremd-BSSID. Sessions mit Samples, Min/Max/Avg und
Sparkline-Verlauf werden im Protokoll gespeichert.

Ersetzt DHCP-Info-Tool und WLAN-Scan-Tool (eigene Routen /iptest/ + /wifi/).
Kotlin-Plugin: linkInfo(), startWifiScan(), startWifiTrack/stop/status().

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 10:03:25 +02:00
..
MonitorService.kt Neues Werkzeug: Geräte-Monitor (Dauerüberwachung) [apk] 2026-05-19 23:12:26 +02:00
NetDiagScannerPlugin.kt Phase 6: IP-Test (Dose prüfen) und WLAN-Empfangstracker [apk] 2026-05-20 10:03:25 +02:00
README.md Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00
Snmp.kt Initiales Commit — NetDiag App vollständig implementiert [apk] 2026-05-19 12:01:56 +02:00

Natives Scan-Plugin NetDiagScanner

Der WebView kann keine Raw-Sockets/ICMP/ARP — die eigentliche Netzwerk-Messung läuft in diesem nativen Android-Plugin (Kotlin).

Dateien

  • NetDiagScannerPlugin.kt — Capacitor-Plugin mit allen Scan-Methoden
  • Snmp.kt — minimaler SNMP-v2c-GET-Client

Integration (einmalig, nach npx cap add android)

  1. Android-Projekt erzeugen (falls noch nicht vorhanden):

    npm install
    npm run build
    npx cap add android
    
  2. Plugin-Dateien kopieren nach:

    android/app/src/main/java/de/data_it_solution/netdiag/
    ├── NetDiagScannerPlugin.kt
    └── Snmp.kt
    
  3. Plugin registrieren in android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt:

    package de.data_it_solution.netdiag
    
    import android.os.Bundle
    import com.getcapacitor.BridgeActivity
    
    class MainActivity : BridgeActivity() {
      override fun onCreate(savedInstanceState: Bundle?) {
        registerPlugin(NetDiagScannerPlugin::class.java)
        super.onCreate(savedInstanceState)
      }
    }
    
  4. Berechtigungen in android/app/src/main/AndroidManifest.xml (innerhalb <manifest>):

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    

    ACCESS_FINE_LOCATION ist Pflicht, damit Android WLAN-Scan-Ergebnisse liefert.

  5. Kotlin-Coroutines sicherstellen — in android/app/build.gradle:

    dependencies {
        implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0"
    }
    

Bekannte Einschränkungen

  • ARP/MAC: /proc/net/arp ist ab Android 10 teils nicht mehr lesbar — dann bleiben MAC/Hersteller leer; Geräte werden trotzdem über Ping/Hostname erkannt.
  • Hersteller-Lookup: nur kleiner OUI-Auszug eingebaut. Für volle Abdeckung die IEEE-OUI-Datei als Asset einbinden und in ouiVendor() nutzen.
  • DHCP-Discover: Best-effort — Port 68 kann vom System-DHCP-Client belegt sein.
  • Durchsatz-Test: benötigt eine TCP-Sink/Source-Gegenstelle (2. Gerät bzw. iperf3-kompatibler Server). Misst sonst nur Fehlversuche.
  • Stresstest: für lange Läufe sollte ein Foreground-Service ergänzt werden, sonst kann Android den Prozess im Hintergrund beenden.
  • PoE-/Strommessung: bewusst nicht enthalten (Hardware-Grenze) — späteres Modul.