Added WS2812 and Light ArtNet DMX control over UDP port 6454 #17059
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
ArtNet is a royalty-free UDP based protocol to transport DMX lighting control.It allows to control either a Light, or a WS2812 Matrix/Strip with a remote software with real-time animations.
This feature is experimental and tested only with LED Lab (Mac and iOS)
When enabling ArtNet mode, Tasmota listens to UDP port 6454 on local address and on multicast address
239.255.25.59
. Incoming DMX/ArtNet packets drive the display and light.Important: DMX/ArtNet payload must be sent in
GBR
format, i.e. 3 bytes in Green/Red/Blue order.While in ArtNet mode, you can control the brightness with
Dimmer
and turn off light/display withPower
; or with the Web UI. Changing the color has no effect until you stop ArtNet mode.Operating modes
LED matrix
When setting
"Rows":<x>
with<x>
greater than1
, the display is considered as a LED matrix. The first row matches the Univers number, and following rows are matched to increasing Universe numbers.Example for M5Stack Atom Matrix or ESP32C3 RGB:
The following are done with Athom LED strip controller (ESP8266), using an external level shifter, and 8x8 Adafruit matrix.
Smooth animation:
![ezgif-3-5d1d4b87d0](https://user-images.githubusercontent.com/49731213/201535653-3bb395b8-f84c-4083-93d7-a54782933ebf.gif)
Fast animation:
![ezgif-3-98953661ef](https://user-images.githubusercontent.com/49731213/201535659-8020174c-9dde-4d95-a930-9423e4a54a1e.gif)
Linear Strip
When setting
"Rows":1
ArtNet uses the WS2812 as a linear strip, and converts the paylaod to strip values.Example for M5Stack Atom Matrix or ESP32C3 RGB:
Single Light
When setting
"Cols":0
(zero columns) ArtNet uses the first GBR payload to control the global light (ex PWM) or the entire WS2812 strip.Example:
Commands
ArtNetConfig {"Rows":5, "Cols":5, "Offset":0, "Alternate":false, "Universe":0}
There are two modes for ArtNet configuration: simple light or adressable leds.
In simple Light mode,
"cols"
is zero. Only"Universe"
needs to be specified.Example:
ArtNetConfig {"Cols":0, "Universe":0}
In Adressable Light mode, all parameters can be specified.
Rows
: number of rows of display,1
for light mode or single stripCols
: number of columns of the display, or length of the strip, or0
for single light"Offset"
: number of adressable leds to skipAlternate
: (true/false) indicates that every other line is reversed (common in large matrix)Universe
: starting DMX Universe number for the first line (0 based so you may need to substract 1 from software)SetOption148 1
for autorun at restartSetOption148 0
to disable ArtNet mode at restartTroubleshooting
Note: ArtNet mode is not compatible with
Fade
orScheme
.When ArtNet mode is enabled, packet metrics are added to Teleperiod or can be shown with
Status 10
.ArtNetConfig
parameters are pesisted in the following Settings:StepPixels
Pixels
containing Rows*ColsRotation
SetOption16
(counter/clock-wise)Limitations
The display size is currently limite to 30x30 leds due to RAM and size constraints. It should be possible to go beyond this size with custom builds.
The display was only tested with LED Lab from Christopher Schardt
LED payload must be formed by a series of 3-bytes for WS2812 or 4-bytes for SK6812 in the following format: GRB for WS2812 and RGBW for SK6812.
Multicast is currently untested.
Checklist:
NOTE: The code change must pass CI tests. Your PR cannot be merged unless tests pass