I’ve been using WLED for years now for simple things, but this is the first year I’ve decided to use them for Christmas lights. So far, they work like a charm! The only minor sticking point I have is that the “Fairytwinkle” preset is so NEARLY perfect. For whatever reason, all the strings will fade out and back in roughly every 60 seconds. If possible, I’d like them to just twinkle in a loop w/o this minutely fade out/in. Is this something I can modify? Even if it takes making a custom build, I will, but I just can’t find how the effects are calculated to save my life .
First off, what version of WLED are you running and with what controller?
Well worth the effort to get up V0.15.0, as there are many updates.
As far as “twinkle” type effects I prefer the Glitter effect.
It works much the same as twinkle (if you’re looking for a White sparkle) and it has been very stable to setup and implement.
I’m on 15.0rc1 FWIW
please provide more details about your settings and how you setup the segment(s) and FX. There either is something wrong with your settings or you discovered a new bug.
It certainly doesn’t look like a bug. It looks intentional.
Here is a short clip showing the effect. Note, the 2 visible strands are on separate controllers in sync, so that’s why the fade was a little out-of-phase.
As far as the configuration goes, here’s the preset:
{
"on": true,
"bri": 255,
"transition": 7,
"mainseg": 0,
"seg": [
{
"id": 0,
"grp": 1,
"spc": 0,
"of": 0,
"on": true,
"frz": false,
"bri": 255,
"cct": 127,
"set": 0,
"n": "",
"col": [
[
0,
0,
0
],
[
0,
0,
0
],
[
0,
0,
0
]
],
"fx": 51,
"sx": 128,
"ix": 128,
"pal": 53,
"c1": 128,
"c2": 128,
"c3": 16,
"sel": true,
"rev": false,
"mi": false,
"o1": false,
"o2": false,
"o3": false,
"si": 0,
"m12": 0
}
]
}
And here’s the config:
{
"rev": [
1,
0
],
"vid": 2412100,
"id": {
"mdns": "wled-8407f8",
"name": "WLED Entryway",
"inv": "Light",
"sui": false
},
"nw": {
"espnow": false,
"linked_remote": "",
"ins": [
{
"ssid": "***REMOVED***",
"pskl": 16,
"ip": [
0,
0,
0,
0
],
"gw": [
0,
0,
0,
0
],
"sn": [
255,
255,
255,
0
]
}
],
"dns": [
8,
8,
8,
8
]
},
"ap": {
"ssid": "WLED-AP",
"pskl": 8,
"chan": 1,
"hide": 0,
"behav": 0,
"ip": [
4,
3,
2,
1
]
},
"wifi": {
"sleep": false,
"phy": false,
"txpwr": 34
},
"hw": {
"led": {
"total": 194,
"maxpwr": 16500,
"ledma": 0,
"cct": false,
"cr": false,
"ic": false,
"cb": 0,
"fps": 42,
"rgbwm": 255,
"ld": true,
"ins": [
{
"start": 0,
"len": 66,
"pin": [
8
],
"order": 1,
"rev": false,
"skip": 0,
"type": 22,
"ref": false,
"rgbwm": 0,
"freq": 0,
"maxpwr": 5613,
"ledma": 30
},
{
"start": 66,
"len": 128,
"pin": [
9
],
"order": 1,
"rev": false,
"skip": 0,
"type": 22,
"ref": false,
"rgbwm": 0,
"freq": 0,
"maxpwr": 10887,
"ledma": 30
}
]
},
"com": [],
"btn": {
"max": 4,
"pull": true,
"ins": [
{
"type": 2,
"pin": [
0
],
"macros": [
0,
0,
0
]
},
{
"type": 0,
"pin": [
-1
],
"macros": [
0,
0,
0
]
},
{
"type": 0,
"pin": [
-1
],
"macros": [
0,
0,
0
]
},
{
"type": 0,
"pin": [
-1
],
"macros": [
0,
0,
0
]
}
],
"tt": 32,
"mqtt": false
},
"ir": {
"pin": -1,
"type": 0,
"sel": true
},
"relay": {
"pin": -1,
"rev": false,
"odrain": false
},
"baud": 1152,
"if": {
"i2c-pin": [
-1,
-1
],
"spi-pin": [
-1,
-1,
-1
]
}
},
"light": {
"scale-bri": 100,
"pal-mode": 0,
"aseg": false,
"gc": {
"bri": 1,
"col": 2.8,
"val": 2.8
},
"tr": {
"mode": true,
"fx": true,
"dur": 7,
"pal": false,
"rpc": 5,
"hrp": true
},
"nl": {
"mode": 1,
"dur": 60,
"tbri": 0,
"macro": 0
}
},
"def": {
"ps": 1,
"on": true,
"bri": 128
},
"if": {
"sync": {
"port0": 21324,
"port1": 65506,
"espnow": false,
"recv": {
"bri": true,
"col": true,
"fx": true,
"pal": true,
"grp": 0,
"seg": false,
"sb": false
},
"send": {
"en": true,
"dir": true,
"btn": false,
"va": false,
"hue": false,
"grp": 1,
"ret": 2
}
},
"nodes": {
"list": true,
"bcast": true
},
"live": {
"en": true,
"mso": false,
"rlm": true,
"port": 5568,
"mc": false,
"dmx": {
"uni": 1,
"seqskip": false,
"e131prio": 0,
"addr": 1,
"dss": 0,
"mode": 4
},
"timeout": 25,
"maxbri": false,
"no-gc": true,
"offset": 0
},
"va": {
"alexa": false,
"macros": [
0,
0
],
"p": 0
},
"mqtt": {
"en": false,
"broker": "",
"port": 1883,
"user": "",
"pskl": 0,
"cid": "WLED-8407f8",
"rtn": false,
"topics": {
"device": "wled/8407f8",
"group": "wled/all"
}
},
"hue": {
"en": false,
"id": 1,
"iv": 25,
"recv": {
"on": true,
"bri": true,
"col": true
},
"ip": [
192,
168,
89,
0
]
},
"ntp": {
"en": true,
"host": "0.wled.pool.ntp.org",
"tz": 0,
"offset": 0,
"ampm": false,
"ln": 0,
"lt": 0
}
},
"ol": {
"clock": 0,
"cntdwn": false,
"min": 0,
"max": 29,
"o12pix": 0,
"o5m": false,
"osec": false,
"osb": false
},
"timers": {
"cntdwn": {
"goal": [
20,
1,
1,
0,
0,
0
],
"macro": 0
},
"ins": [
{
"en": 1,
"hour": 255,
"min": 0,
"macro": 0,
"dow": 127
},
{
"en": 1,
"hour": 255,
"min": 0,
"macro": 0,
"dow": 127
}
]
},
"ota": {
"lock": false,
"lock-wifi": false,
"pskl": 7,
"aota": true
},
"um": {}
}
Interestingly, I’m running that effect on one of my large trees.
I hadn’t noticed this issue until I went and looked for it.
I can confirm the issue, here’s my preset:
{"on":true,"bri":98,"transition":0,"mainseg":0,"seg":[{"id":0,"start":0,"stop":600,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":255,"cct":127,"set":0,"col":[[0,0,191],[203,219,255],[0,0,0]],"fx":51,"sx":128,"ix":51,"pal":2,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0}]}
Mine is blue with white twinkle and everything goes full white when the effect hits.
Doesn’t seem to be precisely 60s spans, a little longer than that.
Tried to enable Global Buffer, but no change.
Doesn’t seem to show up in Peek.
Running V 0.15.0-rc1 on SP511e (8266 w/2M)
I forgot to mention I moved to v15.0 and the effect is still there. Is there any way to build custom effects or do I need to use/make a fork of WLED to do it ?
Honestly, I’d class this as a bug and post it as an issue to Github.
This effect has been used in my setups for some time (my Grandaughter picked it years ago) and didn’t cause this issue.
Feel free to grab my Preset as a secondary example.
I just tested and confirmed it does show up for me when I use peek which does make it seem intentional. The fade into white is based on your selected background color (which is black in my case).
I’m not that experienced in C++, but the git blame for the effect seems mostly unchanged so I’m still not convinced this isn’t intentional. Maybe the code will make more sense to someone else. WLED/wled00/FX.cpp at b4aa8376deae9d0b66ae9268ba85665de07d43f3 · Aircoookie/WLED · GitHub
I did also find an answer on how to write custom effects using user mods, but like I said previously, I’m not great at C++ so that doesn’t seem like a great route for me .
I can confirm this as well, I see a sudden darkening. I’d say its a bug. Can you check if its gone if you downgrade to 14.4?
Moved to ESP32 for test (using peek only).
All tests w/ my “Blue Twinkle preset” as above.
Ver 0.14.4 didn’t see any indication in peek that the effect “crashes” (all White) after 5 minutes of run time.
Ver 0.15.0 White crash consistently ~every 65.5s (after perhaps 1 or 2 startup cycles)
On my 8266 (running 0.15.0) I tried changing the Effect Speed (0 to 255) and Intensity (0 to 228). Neither seemed to have much effect on the “crash” cycle time, it remained quite constant at 65.5s (same as for the ESP32)
good info. I will try to fix it.
I think I got it fixed. @PyroFox can you please test this? bin can be downloaded here:
also fixed “the same” bug in Fairy FX as well (less obvious glitch but still there)
Sorry, maybe I’m being a bit thick, but for me that link shows a list of “artifacts produced” (various .bins), but no way to download them?
Tested on both my ESP32-C3 and my classic ESP32 and it worked like a charm! Are you saying that “refresh” cycle was the effect crashing? How do you debug something like that?
@divsys, just download the artifact with your board name, then use OTA to flash it. In my case (since I had a mix of boards) I used “esp32dev” and “esp32c3dev”.
Was able to get .bin files (once I logged into github -Doh!).
Resolves the issue as far as I have been able to watch, I quit after about 10 mins.
As noted, the previous version was pretty consistent on my devices.
Thanks to @dedehai for all the fast work!
yes correct. There were changes made to the code to improve speed and flash usage by changing 8-bit and 16bit variables into native 32bit variables. Some effect rely on integer overflows of those 8bit and 16bit variables. I fixed quite a few FX already, the bugs are hard to spot and some slipped beta-testing. how I knew this one? was quite easy: 65535 is the max value of a 16bit variable, take that in milliseconds and you get a 65,535 second interval. so must be one of the timer variables. to fix it: look at code, think hard, change, upload test, adjust upload test until its fixed.