Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions wled00/data/settings_sync.htm
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ <h3>Realtime</h3>
</select><br>
<div id=xp>Port: <input name="EP" type="number" min="1" max="65535" value="5568" class="d5" required><br></div>
Multicast: <input type="checkbox" name="EM"><br>
Proxy Universe <input name=PU type=number min=0 max=63999 required> to DMX via MAX485 DI pin connected to D4 (0=disabled, compile with WLED_ENABLE_DMX)<br>
Start universe: <input name="EU" type="number" min="0" max="63999" required><br>
<i>Reboot required.</i> Check out <a href="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/ahodges9/LedFx" target="_blank">LedFx</a>!<br>
Skip out-of-sequence packets: <input type="checkbox" name="ES"><br>
Expand Down
5 changes: 3 additions & 2 deletions wled00/dmx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
*/

#ifdef WLED_ENABLE_DMX
#include "src/dependencies/dmx/ESPDMX.h"
DMXESPSerial dmx;

void handleDMX()
{
// don't act, when in DMX Proxy mode
if (e131ProxyUniverse != 0) return;

// TODO: calculate brightness manually if no shutter channel is set

uint8_t brightness = strip.getBrightness();
Expand Down
9 changes: 9 additions & 0 deletions wled00/e131.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, bool isArtnet){
seq = p->sequence_number;
}

#ifdef WLED_ENABLE_DMX
// does not act on out-of-order packets yet
if (e131ProxyUniverse > 0 && uni == e131ProxyUniverse) {
for (uint16_t i = 1; i <= dmxChannels; i++)
dmx.write(i, e131_data[i]);
dmx.update();
}
#endif

// only listen for universes we're handling & allocated memory
if (uni >= (e131Universe + E131_MAX_UNIVERSE_COUNT)) return;

Expand Down
2 changes: 2 additions & 0 deletions wled00/html_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ function S(){GCH(15);GetV();mMap();}function H(){window.open("https://github.com
<button type="button" onclick="B()">Back</button><button type="submit">Save</button><hr>
<h2>Imma firin ma lazer (if it has DMX support)</h2><!-- TODO: Change to something less-meme-related //-->

<i>This functionality may be disabled by DMX Proxy Universe &ne; 0 on sync settings page</i><br>
<i>Number of fixtures is taken from LED config page</i><br>

Channels per fixture (15 max): <input type="number" min="1" max="15" name="CN" maxlength="2" onchange="mMap();"><br />
Expand Down Expand Up @@ -293,6 +294,7 @@ Receive UDP realtime: <input type=checkbox name=RD><br><br>
</select><br>
<div id=xp>Port: <input name=EP type=number min=1 max=65535 value=5568 class=d5 required><br></div>
Multicast: <input type=checkbox name=EM><br>
Proxy Universe <input name=PU type=number min=0 max=63999 required> to DMX via MAX485 DI pin connected to D4 (0=disabled, compile with WLED_ENABLE_DMX)<br>
Start universe: <input name=EU type=number min=0 max=63999 required><br>
<i>Reboot required.</i> Check out <a href=https://github.com/ahodges9/LedFx target=_blank>LedFx</a>!<br>
Skip out-of-sequence packets: <input type=checkbox name=ES><br>
Expand Down
4 changes: 4 additions & 0 deletions wled00/set.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,10 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
e131Multicast = request->hasArg("EM");
t = request->arg("EP").toInt();
if (t > 0) e131Port = t;
#ifdef WLED_ENABLE_DMX // include only if DMX is enabled
t = request->arg("PU").toInt();
if (t >= 0 && t <= 63999) e131ProxyUniverse = t;
#endif
t = request->arg("EU").toInt();
if (t >= 0 && t <= 63999) e131Universe = t;
t = request->arg("DA").toInt();
Expand Down
8 changes: 8 additions & 0 deletions wled00/wled.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@
#include "src/dependencies/blynk/BlynkSimpleEsp.h"
#endif

#ifdef WLED_ENABLE_DMX
#include "src/dependencies/dmx/ESPDMX.h"
#endif

#include "src/dependencies/e131/ESPAsyncE131.h"
#include "src/dependencies/async-mqtt-client/AsyncMqttClient.h"
#include "src/dependencies/json/AsyncJson-v6.h"
Expand Down Expand Up @@ -226,6 +230,10 @@ WLED_GLOBAL bool receiveDirect _INIT(true); // receive UDP
WLED_GLOBAL bool arlsDisableGammaCorrection _INIT(true); // activate if gamma correction is handled by the source
WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to force max brightness if source has very dark colors that would be black

#ifdef WLED_ENABLE_DMX
WLED_GLOBAL DMXESPSerial dmx;
WLED_GLOBAL uint16_t e131ProxyUniverse _INIT(0); // output this E1.31 (sACN) / ArtNet universe via MAX485 (0 = disabled)
#endif
WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consequtive universes)
WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454
WLED_GLOBAL byte DMXMode _INIT(DMX_MODE_MULTIPLE_RGB); // DMX mode (s.a.)
Expand Down
15 changes: 14 additions & 1 deletion wled00/wled_eeprom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

//eeprom Version code, enables default settings instead of 0 init on update
#define EEPVER 19
#define EEPVER 20
//0 -> old version, default
//1 -> 0.4p 1711272 and up
//2 -> 0.4p 1711302 and up
Expand All @@ -28,6 +28,7 @@
//17-> 0.9.1-dmx
//18-> 0.9.1-e131
//19-> 0.9.1n
//20-> 0.9.1p

void commit()
{
Expand Down Expand Up @@ -211,6 +212,11 @@ void saveSettingsToEEPROM()
EEPROM.write(2181, macroNl);
EEPROM.write(2182, macroDoublePress);

#ifdef WLED_ENABLE_DMX
EEPROM.write(2185, e131ProxyUniverse & 0xFF);
EEPROM.write(2186, (e131ProxyUniverse >> 8) & 0xFF);
#endif

EEPROM.write(2187, e131Port & 0xFF);
EEPROM.write(2188, (e131Port >> 8) & 0xFF);

Expand Down Expand Up @@ -524,6 +530,13 @@ void loadSettingsFromEEPROM(bool first)
e131Port = EEPROM.read(2187) + ((EEPROM.read(2188) << 8) & 0xFF00);
}

#ifdef WLED_ENABLE_DMX
if (lastEEPROMversion > 19)
{
e131ProxyUniverse = EEPROM.read(2185) + ((EEPROM.read(2186) << 8) & 0xFF00);
}
#endif

receiveDirect = !EEPROM.read(2200);
notifyMacro = EEPROM.read(2201);

Expand Down
3 changes: 3 additions & 0 deletions wled00/xml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,9 @@ void getSettingsJS(byte subPage, char* dest)
sappend('v',"EP",e131Port);
sappend('c',"ES",e131SkipOutOfSequence);
sappend('c',"EM",e131Multicast);
#ifdef WLED_ENABLE_DMX
sappend('v',"PU",e131ProxyUniverse);
#endif
sappend('v',"EU",e131Universe);
sappend('v',"DA",DMXAddress);
sappend('v',"DM",DMXMode);
Expand Down