- Readme mit Beschreibug der Software - style.css mit modernerem look und HOBBYHIMMEL Farben
194 lines
6.7 KiB
Markdown
194 lines
6.7 KiB
Markdown
# 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
|
||
|
||
---
|