keypatch/README.md

6.8 KiB
Raw Blame History

keypatch

Keypatch basieren auf einem WEMOS D1 mini und einem PCF8575 IO Erweiterungen

24 RJ45 Ports sind jeweils über 2 Adern codiert. Wenn ein Kabel mit der richtigen Codierung eingesteckt wird, wird eine LED auf einem NeoPixel über dem jeweiligen Port grün, bei fehlendem oder falschem Kabel rot.

Hardware

1. Hauptplatine (Wemos D1 mini + NeoPixel)

  • Wemos D1 mini (ESP8266)
  • Anschluss für PCF8575 Module
    • D1 SCL + 10k PullUp
    • D2 SDA + 10k PullUp
  • Anschluss für NeoPixel-Strip:
    • D6 → NeoPixel DIN (330 Ω in Serie)
    • 5V Versorgung + 1000 µF Elko nahe LED-Streifen
  • Backbone-Header (5 Pins): 3V3, GND, SCL, SDA, INT

2. PCF8575-Module

  • PCF8575 Modul (2,55,5 V)
  • I²C-Pins (SCL, SDA) mit Hauptplatine verbunden
  • IOs schalten gegen GND

3. Adressierung

Die Adressen der Module werden per A0/A1/A2 Jumper gesetzt:

  • Modul A 0x20 (A0=0,A1=0,A2=0)
  • Modul B 0x21 (A0=1,A1=0,A2=0)

Codierung der Ports:

Port PinA PinB KabelA KabelB PCF
1 1 2 weiß-orange orange 0x21-P00
2 1 3 weiß-orange weiß-grün 0x21-P01
3 1 4 weiß-orange blau 0x21-P02
4 1 5 weiß-orange weiß-blau 0x21-P03
5 1 6 weiß-orange grün 0x21-P04
6 1 7 weiß-orange weiß-braun 0x21-P05
7 1 8 weiß-orange braun 0x21-P06
8 2 3 orange weiß-grün 0x21-P07
9 2 4 orange blau 0x21-P10
10 2 5 orange weiß-blau 0x21-P11
11 2 6 orange grün 0x21-P12
12 2 7 orange weiß-braun 0x21-P13
13 2 8 orange braun 0x21-P14
14 3 4 weiß-grün blau 0x21-P15
15 3 5 weiß-grün weiß-blau 0x21-P16
16 3 6 weiß-grün grün 0x21-P17
17 3 7 weiß-grün weiß-braun 0x22-P00
18 3 8 weiß-grün braun 0x22-P01
19 4 5 blau weiß-blau 0x22-P02
20 4 6 blau grün 0x22-P03
21 4 7 blau weiß-braun 0x22-P04
22 4 8 blau braun 0x22-P05
23 5 6 weiß-blau grün 0x22-P06
24 5 7 weiß-blau weiß-braun 0x22-P07

Software-Features

🌐 Webserver & Benutzeroberfläche

Das System stellt einen vollständig konfigurierbaren Webserver bereit mit folgenden Seiten:

  • Dashboard (/) — Übersicht und Kontrolzentrum
  • Admin-Panel (/admin) — Systeminfo und Verwaltungsfunktionen
  • Dateisystem-Manager (/fs.html) — Upload, Download und Verwaltung von Dateien auf der SD
  • Port-Konfiguration (/portconfig) — Konfigurieren und Benennen der 16 RJ45-Ports

🔌 Port Management & LED-Anzeige

Automatische Portüberwachung:

  • Echtzeit-Überwachung aller 16 Ports via PCF8575 IO-Expander
  • Automatische Erkennung von korrekten/fehlerhaften Kabelverbindungen
  • Polling-Zyklus alle ~50ms

NeoPixel LED-Codierung:

  • Grün: Port-Zustand korrekt (Kabel richtig eingesteckt)
  • Rot (blinkend): Port-Zustand falsch (Kabel falsch oder nicht eingesteckt)
  • Aus: Port ist deaktiviert

Port-Konfiguration:

  • Individuelle Benennung jedes Ports möglich
  • Aktivieren/Deaktivieren von Ports
  • Globale Blinkfrequenz für fehlerhafte Ports einstellbar (in ms)
  • Persistente Speicherung der Konfiguration in portconfig.json, inklusive Blinkintervall

📡 WiFi & Netzwerkverbindung

Hauptmodi:

  1. Station-Modus — Verbindung zu bestehendem WiFi-Netzwerk
  2. Soft-AP Modus (Captive Portal) — Fallback-Konfigurationsmodus mit SSID EspConfig

Automatische Verbindungsverwaltung:

  • Timeout nach 30 Sekunden bei fehlgeschlagener Verbindung
  • Automatischer Fallback zur Soft-AP (Captive Portal)
  • Auto-Reconnect alle 5 Minuten
  • LED-Rückmeldung: Blinken während Verbindungsaufbau, leuchten im AP-Modus

Captive Portal:

  • Automatische Umleitung auf Konfigurationsseite
  • Sicheres Speichern von WiFi-Credentials (XOR-Verschlüsselte Speicherung in /wifi.dat)
  • Validierung: Passwort 8-64 Zeichen erforderlich

💾 Dateisystem (LittleFS)

Funktionen:

  • Upload von Dateien (Drag & Drop, Mehrfach)
  • Löschen von Dateien und Ordnern (rekursiv)
  • Erstellen neuer Ordner
  • Speicherübersicht (genutzt/verfügbar/gesamt)
  • Formatierung des gesamten Filesystems möglich

Sortierung:

  • Nach Dateiname (A-Z)
  • Nach Dateigröße

Vordefinierte HTML-Assets: Alle HTML/CSS-Dateien sind ins Filesystem eingebunden und können über die Web-UI verwaltet werden:

  • index.html — Dashboard
  • admin.html — Admin-Panel
  • fs.html — Dateisystem-Manager
  • portconfig.html — Port-Konfiguration
  • style.css — Styling

⚙️ Admin & System-Funktionen

Systemübersicht:

  • Live-Laufzeit (Tage, Stunden, Minuten, Sekunden)
  • WiFi-Signalstärke (RSSI in dBm)
  • Heap-Speicher und Fragmentierung
  • Flash-Speicher (Größe, Mode, Speed)
  • CPU-Frequenz
  • Reset-Grund
  • Sketch-Build-Zeit
  • ESP Core und SDK Version

Systemfunktionen:

  • WiFi-Reconnect — Manuelle Neuverbindung zum Netzwerk
  • ESP-Restart — Neustart des Gerätes
  • OTA-Updates — Wireless Sketch-Updates über Arduino IDE oder PlatformIO

🔗 REST-API Endpoints

Admin-Informationen:

  • GET /admin/renew — Laufzeit und WiFi-Signal
  • GET /admin/once — Detaillierte Systeminfo

Port-Verwaltung:

  • GET /portconfig/data — Konfiguration aller 16 Ports (JSON)
  • POST /portconfig — Speichern von Port-Namen und Enable-Status
  • GET /status/data — Live-Status aller Ports (Name, Enable, aktueller Zustand)

Dateisystem:

  • POST /upload — Datei-Upload
  • GET /format — Filesystem formatieren

Netzwerk:

  • GET /reconnect — WiFi-Reconnect triggern

Technische Architektur

Hardware-Kommunikation

I2C-Bus (Datenleitung D1/D2):

  • PCF8575 IO-Expander @ Adresse 0x21
  • Boot-Scan aller I2C-Adressen

GPIO/Schnittstellen:

  • D6 — NeoPixel DIN (16 RGB-LEDs, 800 kHz)
  • D1 — I2C SCL (mit 10kΩ PullUp)
  • D2 — I2C SDA (mit 10kΩ PullUp)

Serielle Schnittstelle:

  • Baudrate: 115200
  • Umfangreiches Debug-Output für Troubleshooting

Code-Organisation

Das Projekt ist in 7 Arduino-Tabs organisiert:

  • KeyPatch.ino — Hauptsketch und Setup
  • Connect.ino — WiFi-Management und Verbindungslogik
  • Webserver.ino — HTTP-Endpoints und Web-UI
  • Admin.ino — Adminpanel und Systeminfo
  • LittleFS.ino — Dateisystem-Verwaltung
  • NeoPixelHandler.ino — LED-Steuerung und Farb-Codierung
  • Config.ino — Port-Konfiguration und Persistierung