keypatch/README.md
toptah c39fd04b07 Anpassung
- Readme mit Beschreibug der Software
- style.css mit modernerem look und HOBBYHIMMEL Farben
2026-03-12 21:09:02 +01:00

194 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
- 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
---