Files
WLED_MM_Infinity/docs/rfp-infinity-controller-plan.md
jan 4bc4e1257e
Some checks failed
WLED CI / wled_build (push) Has been cancelled
Deploy Nightly / wled_build (push) Has been cancelled
Deploy Nightly / Deploy nightly (push) Has been cancelled
Backup RFP Infinity controller state before Resolume changes
2026-05-14 12:31:13 +02:00

96 lines
3.1 KiB
Markdown

# Infinity Controller auf WLED-MM-Basis
## Zielbild
Die Installation wird als dedizierter Master-ESP plus sechs WLED-MM Nodes betrieben. Die sechs Nodes rendern lokal auf je drei Ausgaengen mit je 106 LEDs. Der Master empfaengt Web-UI und DMX/grandMA-Steuerung und verteilt nur synchronisierte Szenenparameter, keine laufenden Pixelstreams.
## Bestehende Basis
- Node-Firmware-Target: `rfp_esp32s3_wroom1_n16r8_3x106`
- Node-Ausgaenge: `GPIO4`, `GPIO5`, `GPIO6`
- Pixel pro Ausgang: `106`, `106`, `106`
- Logische Node-Segmente: `top = 0-105`, `middle = 106-211`, `bottom = 212-317`
- DDP bleibt Debug/Fallback und wird nicht als Show-Sync verwendet.
## Implementierungsplan
- Node-Target beibehalten und um Infinity-Node-Rolle erweitern.
- Neues Master-Target `rfp_esp32s3_wroom1_n16r8_master` anlegen.
- Master-IP-Default als `192.168.178.10` dokumentieren und im Infinity-Modul verwenden.
- Node-IP-Defaults als `192.168.178.11` bis `192.168.178.16` verwenden.
- Physische DMX-Eingabe am Master ueber `WLED_ENABLE_DMX_INPUT` aktivieren.
- DMX-Defaultpins: `RX=16`, `TX=17`, `EN=18`, `UART=2`.
- Eigenes UDP-Protokoll `Infinity Sync v1` getrennt von WLED-Notifier und DDP implementieren.
- Web-UI unter `/infinity` und JSON API unter `/json/infinity` bereitstellen.
- DMX-Modus `DMX_MODE_INFINITY` mit 32 Kanaelen einbauen.
## Sync-Modell
Der Master sendet `ClockSync`, `SceneState` und `BeatTrigger` per UDP-Unicast. Nodes senden `NodeStatus` zurueck. Nodes rendern lokal gegen `master_time_us`, dadurch bestimmt nicht die Paketankunft den sichtbaren Frame.
SceneState enthaelt:
- Effekt-ID
- Preset-ID
- Brightness
- Speed
- Intensity
- Palette
- Primaer-/Sekundaer-/Tertiaerfarbe
- Group-Mask
- Direction
- Seed
- Phase
- Transition
- `apply_at_us`
## DMX/grandMA Personality v1
| Kanal | Funktion |
| ---: | --- |
| 1 | Dimmer |
| 2 | Enable / Blackout |
| 3 | Preset |
| 4 | Effect |
| 5 | Speed |
| 6 | Intensity |
| 7 | Palette |
| 8 | Hue |
| 9 | Saturation |
| 10 | Value |
| 11 | Direction / Flags |
| 12 | Transition |
| 13 | Group Mask |
| 14 | Top Dimmer |
| 15 | Middle Dimmer |
| 16 | Bottom Dimmer |
| 17 | Beat Trigger |
| 18 | Sync Reset |
| 19 | Custom 1 |
| 20 | Custom 2 |
| 21 | Custom 3 |
| 22 | Seed |
| 23 | Reserved |
| 24 | Safety / Fade |
| 25-32 | Reserved |
## Testplan
- Node-Target bauen.
- Master-Target bauen.
- Fresh-Config: drei Busse mit je 106 LEDs pruefen.
- Segment-Test: Top, Middle, Bottom einzeln blinken lassen.
- Sync-Test: zwei Nodes, danach sechs Nodes mit gleichem `apply_at_us`.
- DMX-Test: physisches DMX steuert Master-State und Nodes folgen ohne DDP.
- Reconnect-Test: Node rebootet und uebernimmt aktuellen SceneState.
- Failsafe-Test: Master weg, DMX weg, Netzwerk weg, Paketverlust.
- Show-Test: mindestens 8 Stunden Dauerbetrieb.
## Annahmen
- Ein siebter ESP32-S3 wird als Master verwendet.
- Node-Reihenfolge bleibt `node-01` bis `node-06`.
- Node-IPs bleiben `.11` bis `.16` im Netz `192.168.178.0/24`.
- LED-Reihenfolge bleibt `top/GPIO4`, `middle/GPIO5`, `bottom/GPIO6`.
- Lokale bestehende Aenderungen im WLED-MM-Repo werden nicht zurueckgesetzt.