- Readme mit Beschreibug der Software - style.css mit modernerem look und HOBBYHIMMEL Farben |
||
|---|---|---|
| .github | ||
| .vscode | ||
| data | ||
| hardware | ||
| Hardware | ||
| src | ||
| .gitignore | ||
| compile.log | ||
| LICENSE | ||
| platformio.ini | ||
| README.md | ||
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:
- Station-Modus — Verbindung zu bestehendem WiFi-Netzwerk
- 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— Dashboardadmin.html— Admin-Panelfs.html— Dateisystem-Managerportconfig.html— Port-Konfigurationstyle.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-SignalGET /admin/once— Detaillierte Systeminfo
Port-Verwaltung:
GET /portconfig/data— Konfiguration aller 16 Ports (JSON)POST /portconfig— Speichern von Port-Namen und Enable-StatusGET /status/data— Live-Status aller Ports (Name, Enable, aktueller Zustand)
Dateisystem:
POST /upload— Datei-UploadGET /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 SetupConnect.ino— WiFi-Management und VerbindungslogikWebserver.ino— HTTP-Endpoints und Web-UIAdmin.ino— Adminpanel und SysteminfoLittleFS.ino— Dateisystem-VerwaltungNeoPixelHandler.ino— LED-Steuerung und Farb-CodierungConfig.ino— Port-Konfiguration und Persistierung