diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index eac6ea25a2..b2f6e23a2c 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -751,11 +751,15 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { CJSON(DMXStartLED,dmx[F("start-led")]); JsonArray dmx_fixmap = dmx[F("fixmap")]; - for (int i = 0; i < dmx_fixmap.size(); i++) { - if (i > 14) break; + for (int i = 0; i < MIN(dmx_fixmap.size(), MAX_CHANNELS_PER_FIXTURE); i++) { CJSON(DMXFixtureMap[i],dmx_fixmap[i]); } + JsonArray dmx_chsval = dmx[F("chsval")]; + for (int i = 0; i < MIN(dmx_chsval.size(), MAX_CHANNELS_PER_FIXTURE); i++) { + CJSON(DMXChannelsValue[i],dmx_chsval[i]); + } + CJSON(e131ProxyUniverse, dmx[F("e131proxy")]); #endif @@ -1253,10 +1257,15 @@ void serializeConfig(JsonObject root) { dmx[F("start-led")] = DMXStartLED; JsonArray dmx_fixmap = dmx.createNestedArray(F("fixmap")); - for (unsigned i = 0; i < 15; i++) { + for (unsigned i = 0; i < MAX_CHANNELS_PER_FIXTURE; i++) { dmx_fixmap.add(DMXFixtureMap[i]); } + JsonArray dmx_chsval = dmx.createNestedArray(F("chsval")); + for (unsigned i = 0; i < MAX_CHANNELS_PER_FIXTURE; i++) { + dmx_chsval.add(DMXChannelsValue[i]); + } + dmx[F("e131proxy")] = e131ProxyUniverse; #endif diff --git a/wled00/const.h b/wled00/const.h index 1abf245396..704f15f75a 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -655,4 +655,8 @@ static_assert(WLED_MAX_BUSSES <= 32, "WLED_MAX_BUSSES exceeds hard limit"); #define IRAM_ATTR_YN IRAM_ATTR #endif +#ifdef WLED_ENABLE_DMX + #define MAX_CHANNELS_PER_FIXTURE 15 +#endif + #endif diff --git a/wled00/data/settings_dmx.htm b/wled00/data/settings_dmx.htm index 7458ec9fe7..837f6d3226 100644 --- a/wled00/data/settings_dmx.htm +++ b/wled00/data/settings_dmx.htm @@ -7,10 +7,20 @@