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