Network Dashboard
Zentrale Erfassung, Beschriftung und Steuerung aller Netzwerkgeräte im Heimnetz über ein Web-Dashboard. Läuft komplett lokal mit Node.js-Standardmodulen, keine Cloud-Abhängigkeiten.
Architektur
Das System folgt einem Agent-Modell: Ein lokaler Scanner erfasst das LAN per nmap, prüft Web-Oberflächen und sendet die Inventardaten per HTTP an einen zentralen Server. Der Server speichert alles als JSON und liefert das Dashboard über Port 3000.
Agent (agent.js)
- Scannt Subnetz per nmap (Ping-Scan mit XML-Ausgabe)
- Erfasst je Gerät: IP, MAC, Hostname (Reverse-DNS)
- Hersteller-Lookup über api.macvendors.com (gedrosselt, gecacht)
- Web-Oberflächen-Check auf Port 443/80
- Sendet Inventar per POST an Server (Token-geschützt)
- Dauerbetrieb: Alle 10 Minuten, robust gegen Fehler
Server & Dashboard (server.js)
- Authentifizierung: Login mit Zugangs-Code, Auto-Logout nach 15 Min Inaktivität
- Inventar-Ansicht: Tabelle gruppiert nach Standort, inline-Bearbeitung, Suche, sortierbar
- Status-Markierung: Grün = geprüft, Rot = zu kontrollieren
- iPhone-Ansicht: Kompakte 2-zeilige Kacheln, Detailseite zum Abhaken
- Auto-Refresh: Alle 20 Sekunden, neue Geräte erscheinen von selbst
- Shelly-Integration: An/Aus pro Gerät, Live-Status, Firmware-Updates (5-Min Abstand)
Automatische Zuordnungen
- Shelly-Erkennung: Geräte aus shelly_devices.json bekommen Typ „Shelly" und Namen
- Hostnamen: MAC-basiert aus NETGEAR-APs und TP-Link-Repeater
- Standort-Regeln: IP-Bereich-basiert (z.B. 10.0.0.100–110 = HOLZ WKST)
Einrichtung (Windows)
- Node.js und nmap installieren
- Fester IP für den PC (10.0.0.59)
Firewall_3000_freigeben.batals Admin ausführenAutostart_einrichten.batals Admin ausführen (Agent startet automatisch beim Anmelden)- Zugriff:
http://localhost:3000(PC) oderhttp://10.0.0.59:3000(Handy) - Anmelden mit Code: ******
Konfiguration
| Datei | Zweck |
|---|---|
| agent/config.json | Subnetz, nmap-Pfad, API-Token, VPS-Endpoint |
| server/config.json | Port (3000), Zugangs-Code (6696), Session-TTL |
| server/shelly_devices.json | Shelly-Geräte (Name, IP, Gen, Channel, Auth) |
| server/hostnames.json | MAC → Gerätename (manuell erweiterbar) |
| server/standort_regeln.json | IP-Bereich → Standort-Zuordnung |
Ausblick Juli 26
Geplant ist ein Umzug auf Raspberry Pi 4 2GB Ram für 24/7-Dauerbetrieb ohne PC. Server und Agent als systemd-Dienste mit Autostart und Neustart bei Absturz.
DATENSICHERUNG: die Daten werden in eine data_backup.json geschrieben.