@@ -111,7 +111,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
111111 return ; // nothing to do
112112 break ;
113113
114- case DMX_MODE_SINGLE_RGB:
114+ case DMX_MODE_SINGLE_RGB: // RGB only
115115 if (uni != e131Universe) return ;
116116 if (dmxChannels-DMXAddress+1 < 3 ) return ;
117117 realtimeLock (realtimeTimeoutMs, mde);
@@ -121,7 +121,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
121121 setRealtimePixel (i, e131_data[DMXAddress+0 ], e131_data[DMXAddress+1 ], e131_data[DMXAddress+2 ], wChannel);
122122 break ;
123123
124- case DMX_MODE_SINGLE_DRGB:
124+ case DMX_MODE_SINGLE_DRGB: // Dimmer + RGB
125125 if (uni != e131Universe) return ;
126126 if (dmxChannels-DMXAddress+1 < 4 ) return ;
127127 realtimeLock (realtimeTimeoutMs, mde);
@@ -136,9 +136,13 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
136136 setRealtimePixel (i, e131_data[DMXAddress+1 ], e131_data[DMXAddress+2 ], e131_data[DMXAddress+3 ], wChannel);
137137 break ;
138138
139- case DMX_MODE_EFFECT:
139+ case DMX_MODE_EFFECT: // Length 1: Apply Preset ID, length 11-13: apply effect config
140140 if (uni != e131Universe) return ;
141- if (dmxChannels-DMXAddress+1 < 11 ) return ;
141+ if (dmxChannels-DMXAddress+1 < 11 ) {
142+ if (dmxChannels-DMXAddress+1 > 1 ) return ;
143+ applyPreset (e131_data[DMXAddress+0 ], CALL_MODE_NOTIFICATION);
144+ return ;
145+ }
142146 if (DMXOldDimmer != e131_data[DMXAddress+0 ]) {
143147 DMXOldDimmer = e131_data[DMXAddress+0 ];
144148 bri = e131_data[DMXAddress+0 ];
0 commit comments