English | Deutsch
Firmware für das Waveshare ESP32-S3-ETH-8DI-8RO / ESP32-S3-POE-ETH-8DI-8RO Modul mit Web-Interface, TCP-Steuerung, WiFi-Support und OTA-Updates.
- Ethernet (W5500) mit DHCP oder statischer IP
- WiFi — AP-Modus für Erstkonfiguration, optionaler STA-Modus
- Web-Interface zur Konfiguration und Steuerung
- TCP-Befehlsschnittstelle für Relaissteuerung
- OTA-Firmware-Updates über das Web-Interface
- 8 Digitale Eingänge (optokoppler-isoliert)
- 8 Relaisausgänge via TCA9554 I2C-Expander
- Input→Relais Mapping — Eingänge können Relais direkt steuern (Saal-Steuerung)
- Modbus RS485 — Unterstützung für externe Relais-Module
- Benutzerdefinierte Labels für Relais und Eingänge
- RGB Status-LED (WS2812) mit Netzwerk- und Aktivitätsanzeige
- NTP-Zeitsynchronisation mit konfigurierbarer Zeitzone
- Befehlsprotokoll (letzte 50 Befehle mit Zeitstempel)
- PlatformIO (empfohlen) oder Arduino IDE
- USB-C-Kabel für die erste Programmierung
# Kompilieren
pio run
# Firmware hochladen
pio run -t upload
# Filesystem (Web-Interface) hochladen
pio run -t uploadfs
# Serial Monitor (115200 Baud)
pio device monitor- ESP32 Board Support (v3.x) installieren
- Benötigte Libraries installieren:
- ArduinoJson (^7.0.0)
- ElegantOTA (^3.1.0)
- AsyncTCP (^1.1.1)
- ESPAsyncWebServer (^1.2.3)
- Board auswählen: "ESP32S3 Dev Module"
src/main.cppals.inoDatei öffnen- Hochladen
Optokoppler-isoliert, Active LOW mit internem Pull-up.
| Eingang | GPIO |
|---|---|
| DI1 | 4 |
| DI2 | 5 |
| DI3 | 6 |
| DI4 | 7 |
| DI5 | 8 |
| DI6 | 9 |
| DI7 | 10 |
| DI8 | 11 |
Gesteuert via TCA9554 I2C I/O-Expander (Adresse 0x20).
| I2C | GPIO |
|---|---|
| SDA | 42 |
| SCL | 41 |
Die 8 Relais (RO1-RO8) werden über die TCA9554-Pins P0-P7 gesteuert.
| Signal | GPIO |
|---|---|
| SCLK | 15 |
| MOSI | 13 |
| MISO | 14 |
| CS | 16 |
| INT | 12 |
| Funktion | GPIO |
|---|---|
| RS485 TX | 17 |
| RS485 RX | 18 |
| RGB LED | 38 |
| Buzzer | 46 |
- Firmware und Filesystem hochladen
- Das Modul startet einen WiFi Access Point:
- SSID:
cinerelais1(= Hostname) - Passwort: offen (kein Passwort)
- SSID:
- Mit dem AP verbinden und
http://192.168.4.1aufrufen - Im Web-Interface Ethernet/WiFi konfigurieren
- Gerät neustarten
Nach dem Start ist das Web-Interface erreichbar:
- Ethernet: IP aus DHCP oder konfigurierte statische IP
- WiFi AP:
http://192.168.4.1 - WiFi STA: IP aus DHCP oder konfigurierte statische IP
Funktionen:
- Relais ein-/ausschalten (Klick) oder pulsen (Rechtsklick)
- Impuls-Modus: Alle Klicks lösen Impulse aus
- Alle Relais gleichzeitig steuern
- Benutzerdefinierte Labels für Relais und Eingänge
- Input→Relais Mapping für Saal-Steuerung (500ms Entprellung)
- Modbus RS485 für externe Relais-Module
- Ethernet-Konfiguration (DHCP/statische IP)
- WiFi-Konfiguration (AP/STA, DHCP/statische IP)
- NTP-Zeitzone per Dropdown auswählen
- System-Informationen (Hardware, Netzwerk, Uptime)
- OTA-Firmware-Update
Verbinden Sie sich mit einem TCP-Client (z.B. nc, telnet) zum konfigurierten Port (Standard: 5000).
| Befehl | Beschreibung |
|---|---|
r1_on ... r8_on |
Relais einschalten |
r1_off ... r8_off |
Relais ausschalten |
r1_pulse |
Relais pulsen (Standard-Dauer) |
r1_pulse_1000 |
Relais für 1000ms pulsen |
all_on |
Alle Relais einschalten |
all_off |
Alle Relais ausschalten |
all_pulse |
Alle Relais pulsen |
all_pulse_500 |
Alle Relais für 500ms pulsen |
status |
JSON-Status aller Ein-/Ausgänge |
help |
Hilfe anzeigen |
Beispiele:
# Mit netcat verbinden
nc 192.168.1.100 5000
# Relais 1 einschalten
r1_on
# Relais 3 für 1000ms pulsen
r3_pulse_1000
# Alle Relais ausschalten
all_off
# Status abfragen
statusEingänge können so konfiguriert werden, dass sie bestimmte Relais steuern — ideal für Saal-Steuer-Taster im Kino:
- Im Web-Interface unter Einstellungen → Input→Aktionen konfigurieren
- Pro Eingang mehrere Relais auswählbar (Checkbox)
- Relais sind aktiv, solange der Eingang aktiv ist
- 500ms Entprellung verhindert Flattern bei verrauschten Signalen
- Änderungen werden sofort wirksam (kein Neustart nötig)
Anwendungsbeispiel:
- Input 1 (Saal-Taster "Licht An") → Relais 1 + 2
- Input 2 (Saal-Taster "Licht Aus") → keine Zuweisung
- Input 3 (Vorhang-Taster) → Relais 5
Externe Relais-Module können über Modbus RTU (RS485) angesteuert werden:
- Anschluss: TX=GPIO17, RX=GPIO18
- Baudrate: 9600
- Adressbereich: 1-247 (automatischer Scan möglich)
- Unterstützte Module: 6 oder 8 Relais
TCP-Befehle für Modbus-Relais:
m1_r1_on # Modbus Relais 1 einschalten
m1_r3_pulse # Modbus Relais 3 pulsen
m1_all_off # Alle Modbus-Relais ausschalten
modbus_scan # Nach Modbus-Gerät suchen- Web-Interface öffnen
- "OTA Firmware Update öffnen" klicken
- Login: Benutzer
admin, Passwortflash .binDatei auswählen und hochladen- Gerät startet automatisch neu
Die RGB-LED (WS2812 auf GPIO 38) zeigt verschiedene Zustände an:
| Farbe | Muster | Bedeutung |
|---|---|---|
| Grün | Dauerlicht | Ethernet verbunden |
| Cyan | Dauerlicht | WiFi STA verbunden |
| Blau | Pulsierend | Nur WiFi AP aktiv |
| Rot | Schnell blinkend | Keine Netzwerkverbindung |
| Orange | Kurzer Blitz | Befehl empfangen |
| Gelb | Kurzer Blitz | Relais-Aktivität |
| Lila | Pulsierend | OTA-Update läuft |
Die LED-Helligkeit ist im Web-Interface einstellbar (Standard: 20%).
| Parameter | Standard-Wert |
|---|---|
| Hostname | cinerelais1 |
| DHCP (Ethernet) | Aktiviert |
| WiFi | Aktiviert |
| WiFi AP | Aktiviert |
| WiFi AP Passwort | (offen) |
| TCP-Port | 5000 |
| Impulsdauer | 500 ms |
| Statische IP | 192.168.1.100 |
| NTP | Aktiviert |
| NTP-Server | pool.ntp.org |
| Zeitzone | CET-1CEST (Europa/Berlin) |
| LED | Aktiviert |
| LED-Helligkeit | 20% |
Alle Einstellungen können über das Web-Interface geändert werden. Die Konfiguration wird im Flash-Speicher (LittleFS) als /config.json gespeichert.
Wichtig: Nach Änderung der Netzwerk-Einstellungen ist ein Neustart erforderlich!
| Endpunkt | Methode | Beschreibung |
|---|---|---|
/api/status |
GET | Aktueller Status (JSON) |
/api/config |
GET | Aktuelle Konfiguration (JSON) |
/api/config |
POST | Konfiguration speichern |
/api/relay |
POST | Einzelnes Relais steuern |
/api/relays |
POST | Alle Relais steuern |
/api/log |
GET | Befehlsprotokoll (letzte 50 Einträge) |
/api/restart |
POST | Gerät neustarten |
/update |
GET | OTA-Update Seite |
# Status abfragen
curl http://192.168.1.100/api/status
# Relais 1 einschalten
curl -X POST -d "relay=1&state=on" http://192.168.1.100/api/relay
# Relais 2 für 2000ms pulsen
curl -X POST -d "relay=2&state=pulse&duration=2000" http://192.168.1.100/api/relay
# Alle Relais ausschalten
curl -X POST -d "state=off" http://192.168.1.100/api/relays
# WiFi SSID konfigurieren
curl -X POST -d "wifiSSID=MeinWLAN&wifiPassword=geheim" http://192.168.1.100/api/config- I2C-Verbindung prüfen (SDA=GPIO42, SCL=GPIO41)
- Serial Monitor auf "TCA9554 found at 0x20" prüfen
- Falls nicht gefunden: Board-Hardware prüfen
- Ethernet-Kabel prüfen
- PoE-Stromversorgung prüfen (falls POE-Version)
- Serial Monitor auf "ETH Got IP" prüfen
- Prüfen ob WiFi in Konfiguration aktiviert ist
- Prüfen ob WiFi AP aktiviert ist
- Hostname = SSID des Access Points
- IP-Adresse im Serial Monitor prüfen
- Bei WiFi AP:
192.168.4.1verwenden - Browser-Cache leeren
MIT License
