WLEDwiki/UDP-Realtime-Control-(WARLS...

35 lines
2.5 KiB
Markdown
Raw Normal View History

WLED offers a way to directly drive the connected LEDs via UDP. The protocol is referred to as WLED [Audio-Reactive-Led-Strip](https://github.com/scottlawsonbc/audio-reactive-led-strip) (WARLS), since the support of that project was its primary goal. However, it can also be used for other realtime applications like an ambilight.
WARLS uses the same UDP port the notifier uses (default 21324, can be changed in settings).
At the moment, the HTTP API and webserver will be disabled while active, Alexa and button control remains functional.
It does not support the white channel of RGBW LEDs yet and uses the current brightness and gamma correction settings.
Byte 0 of the UDP packet has the value 1 which tells the server to use WARLS instead of the default notifier protocol.
Byte 1 tells the server how many seconds to wait after the last recieved packet before returning to normal mode, in practice you should use 1-2 (seconds) here in most cases so that the module returns to normal mode quickly.
After this the LED color information is transmitted like:
Byte | Description
--- | ---
2 + n*4 | LED Index
3 + n*4 | Red Value
4 + n*4 | Green Value
5 + n*4 | Blue Value
When WARLS mode starts, all LEDs will be black. However, you don't have to change all LEDs using one packet.
Changing a single LED therefore only requires a packet of 2+4 bytes. All LEDs maintain their color until it is changed or the module exits WARLS mode because of a timeout.
### Setup with ARLS
The software now supports audio-reactive-led-strip!
1. Download [audio-reactive-led-strip](https://github.com/scottlawsonbc/audio-reactive-led-strip) and follow its installation instruction. Use python 3! You can also use my (untested) [fork](https://github.com/Aircoookie/audio-reactive-led-strip). In that case, you can skip step 2 and it should also work with python 2.
2. Insert the following code in led.py after line 66:
m.append(1);
m.append(2);
These are the first two bytes of the protocol.
3. In config.py set your led amount, ESP IP and WLED UDP notifier port. For FPS, a setting between 15-30 is recommended.
4. Run visualization.py! If you have a low amount of LEDS (e.g. 10) try lowering the sigma values in line 129-131.
5. If you have multiple WLED devices, you can sync them all with music.
Use the led count of your largest device and set the IP to X.X.X.255 (UDP broadcast).
You can adjust the position of the amplitude with the WARLS offset setting.
Note that web control currently does not work while it is active.