DDP commands don't persist

When I send a DDP packet to WLED 0.13.3, it takes effect immediately, but then is quickly replaced by whatever the default effect is. Is this expected? With an ESPixelStick (with effects disabled) the DDP command persists until another one arrives.

Let’s say I have told my lights to stay off at boot, and I have no presets. I boot the WLED. Lights are off, as expected. Then I send this DDP packet:

&{hdr:[65 1 1 1] dOff:0 dLen:150 body:[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]}

(forgive the go version of the packet – I hope the contents are clear enough)

The lights light, briefly, but then turn off within less than a second. It’s acting like WLED effects are the primary behavior, which it’ll override for a period of time if a DDP packet arrives, but then it’ll return to WLED effects if there’s no DDP packet soon after.

Why is this a problem? I’m trying to make GitHub - aaknitt/pixel_mapper: Semi-automatic mapping of RGB pixels in 3D space using computer vision work. That program’s purpose in life is to triangulate pixel positions to build a model for xLights. To do this it needs to turn on a pixel and leave it on until it can detect the pixel’s location. The github version of pixel_mapper uses a seemingly-unmaintained e1.31 library to send commands, but I’ve decided to replace that with something that talks DDP since that’s what the rest of my show uses. It’s hard to do CV on an image if you can’t get the pixel to stay on long enough to save a frame.

wled goes back to what it was doing when the data stops.

OK thanks. Filed WLED feature request https://github.com/Aircoookie/WLED/issues/2836