# 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,5–5,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 - Persistente Speicherung der Konfiguration in `portconfig.json` ### 📡 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 ---