From cceb5733c9e260e1e44db49da14a9f921e8cd970 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Wed, 22 Apr 2026 18:54:03 +0100 Subject: [PATCH 1/7] Use device-reported repo for firmware releases and upgrades --- src/wled/models.py | 6 ++++++ src/wled/wled.py | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/wled/models.py b/src/wled/models.py index 9f00b507..340993af 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -14,6 +14,7 @@ from mashumaro.types import SerializableType, SerializationStrategy from .const import ( + DEFAULT_REPO, MIN_REQUIRED_VERSION, LightCapability, LiveDataOverride, @@ -489,6 +490,11 @@ class Info(BaseModel): # pylint: disable=too-many-instance-attributes product: str = "DIY Light" """The product name. Always FOSS for standard installations.""" + repo: str = field(default=DEFAULT_REPO, metadata=field_options(alias="repo")) + """GitHub repository in 'org/repo' format reported by the device firmware. + Used in preference to the default repo when fetching releases or upgrading. + """ + release: str | None = None """The release name of the firmware build. diff --git a/src/wled/wled.py b/src/wled/wled.py index 12b9dbf0..baffa1e2 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -654,6 +654,10 @@ async def upgrade( # noqa: PLR0912 msg = "Device already running the requested version" raise WLEDUpgradeError(msg) + # Prefer the repo reported by the device itself; older firmware that does + # not include the field will have fallen back to DEFAULT_REPO already. + repo = self._device.info.repo + # Determine if this is an Ethernet board ethernet = "" if ( From 14712299195e589d40b15fb5e3e676c0f5adc89e Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Wed, 22 Apr 2026 19:00:08 +0100 Subject: [PATCH 2/7] Add tests for device-reported repo field --- tests/test_models.py | 14 ++++++++++++++ tests/test_wled.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/tests/test_models.py b/tests/test_models.py index 0542b9fd..bb224180 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -315,6 +315,20 @@ def test_info_version_deserialized() -> None: assert str(info.version) == "0.14.0" +def test_info_repo_defaults_to_default_repo() -> None: + """Test repo defaults to DEFAULT_REPO when not present in response.""" + from wled.const import DEFAULT_REPO + + info = Info.from_dict(_base_info()) + assert info.repo == DEFAULT_REPO + + +def test_info_repo_uses_device_value_when_present() -> None: + """Test repo is taken from the device response when present.""" + info = Info.from_dict(_base_info(repo="MoonModules/WLED")) + assert info.repo == "MoonModules/WLED" + + # ========================================================================= # State model # ========================================================================= diff --git a/tests/test_wled.py b/tests/test_wled.py index 2226d04d..2320a725 100644 --- a/tests/test_wled.py +++ b/tests/test_wled.py @@ -1332,6 +1332,42 @@ async def test_upgrade_success() -> None: await wled.upgrade(version="0.15.0") +async def test_upgrade_uses_device_repo() -> None: + """Test upgrade downloads firmware from the repo reported by the device.""" + with aioresponses() as mocked: + async with aiohttp.ClientSession() as session: + wled_data = load_fixture_json("wled") + wled_data["info"]["arch"] = "esp32" + wled_data["info"]["ver"] = "0.14.0" + wled_data["info"]["repo"] = "MoonModules/WLED" + mocked.get( + "http://example.com/json", + status=200, + body=json.dumps(wled_data), + content_type="application/json", + ) + mocked.get( + "http://example.com/presets.json", + status=200, + body=json.dumps(load_fixture_json("presets")), + content_type="application/json", + ) + wled = WLED("example.com", session=session) + await wled.update() + mocked.get( + "https://github.com/MoonModules/WLED/releases/download/v0.15.0/WLED_0.15.0_ESP32.bin", + status=200, + body=b"fake firmware", + ) + mocked.post( + "http://example.com/update", + status=200, + body="OK", + content_type="text/plain", + ) + await wled.upgrade(version="0.15.0") + + async def test_upgrade_ethernet_board() -> None: """Test upgrade with Ethernet board (empty bssid).""" with aioresponses() as mocked: From 85a567303330af4d42c081a6209f54f3cc66f3f0 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Wed, 22 Apr 2026 19:02:31 +0100 Subject: [PATCH 3/7] Update snapshots for Info.repo field --- tests/__snapshots__/test_models.ambr | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/__snapshots__/test_models.ambr b/tests/__snapshots__/test_models.ambr index b94c0d54..0121ae13 100644 --- a/tests/__snapshots__/test_models.ambr +++ b/tests/__snapshots__/test_models.ambr @@ -1,16 +1,16 @@ # serializer version: 1 # name: test_device_fixture[cct] - Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(2024, 7, 23, 16, 31, 12, tzinfo=datetime.timezone.utc), total=983, used=20), free_heap=164804, ip='127.0.0.1', leds=Leds(cct=True, count=178, fps=0, light_capabilities=, max_power=0, max_segments=32, power=0, rgbw=True, segment_light_capabilities=[], wv=True), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED CCT light', custom_palette_count=4, palette_count=75, product='FOSS', release='ESP32', sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=79769), version=, websocket=1, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=255, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=2, segments={0: Segment(brightness=255, cct=53, clones=-1, color=Color(primary=[0, 0, 0, 255], secondary=[0, 0, 0, 0], tertiary=[0, 0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=178, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=178, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='Rotozoomer'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70), 255: Palette(custom=True, name='Custom 1', palette_id=255), 254: Palette(custom=True, name='Custom 2', palette_id=254), 253: Palette(custom=True, name='Custom 3', palette_id=253), 252: Palette(custom=True, name='Custom 4', palette_id=252)}, playlists={}, presets={}) + Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(2024, 7, 23, 16, 31, 12, tzinfo=datetime.timezone.utc), total=983, used=20), free_heap=164804, ip='127.0.0.1', leds=Leds(cct=True, count=178, fps=0, light_capabilities=, max_power=0, max_segments=32, power=0, rgbw=True, segment_light_capabilities=[], wv=True), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED CCT light', custom_palette_count=4, palette_count=75, product='FOSS', repo='wled/WLED', release='ESP32', sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=79769), version=, websocket=1, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=255, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=2, segments={0: Segment(brightness=255, cct=53, clones=-1, color=Color(primary=[0, 0, 0, 255], secondary=[0, 0, 0, 0], tertiary=[0, 0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=178, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=178, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='Rotozoomer'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70), 255: Palette(custom=True, name='Custom 1', palette_id=255), 254: Palette(custom=True, name='Custom 2', palette_id=254), 253: Palette(custom=True, name='Custom 3', palette_id=253), 252: Palette(custom=True, name='Custom 4', palette_id=252)}, playlists={}, presets={}) # --- # name: test_device_fixture[rgb] - Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(2024, 6, 19, 20, 9, 47, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=198384, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=515, rgbw=False, segment_light_capabilities=[, ], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGB Light', custom_palette_count=0, palette_count=71, product='FOSS', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=966), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-43, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=1, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=15, mirror=False, mirror_y=False, name='Ceiling', offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=False, set_id=0, sound_simulation=, spacing=0, speed=32, start=0, start_y=0, stop=15, stop_y=0, transpose=False), 1: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[255, 170, 0], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=3, expand_1d=0, freeze=False, grouping=1, intensity=64, length=15, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=1, reverse=True, reverse_y=False, segment_id=1, selected=True, set_id=0, sound_simulation=, spacing=0, speed=16, start=15, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) + Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(2024, 6, 19, 20, 9, 47, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=198384, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=515, rgbw=False, segment_light_capabilities=[, ], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGB Light', custom_palette_count=0, palette_count=71, product='FOSS', repo='wled/WLED', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=966), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-43, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=1, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=15, mirror=False, mirror_y=False, name='Ceiling', offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=False, set_id=0, sound_simulation=, spacing=0, speed=32, start=0, start_y=0, stop=15, stop_y=0, transpose=False), 1: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[255, 170, 0], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=3, expand_1d=0, freeze=False, grouping=1, intensity=64, length=15, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=1, reverse=True, reverse_y=False, segment_id=1, selected=True, set_id=0, sound_simulation=, spacing=0, speed=16, start=15, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) # --- # name: test_device_fixture[rgb_single_segment] - Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=False, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGB Light', custom_palette_count=0, palette_count=71, product='FOSS', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=32, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) + Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=False, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGB Light', custom_palette_count=0, palette_count=71, product='FOSS', repo='wled/WLED', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=32, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) # --- # name: test_device_fixture[rgb_websocket] - Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=False, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED WebSocket', custom_palette_count=0, palette_count=71, product='FOSS', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=0, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) + Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=False, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED WebSocket', custom_palette_count=0, palette_count=71, product='FOSS', repo='wled/WLED', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=0, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[127, 172, 255], secondary=[0, 0, 0], tertiary=[0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) # --- # name: test_device_fixture[rgbw] - Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=True, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGBW Light', custom_palette_count=0, palette_count=71, product='FOSS', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[255, 0, 0, 139], secondary=[0, 0, 0, 0], tertiary=[0, 0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) + Device(info=Info(architecture='esp32', arduino_core_version='v3.3.6-16-gcc5440f6a2', brand='WLED', build='2405180', effect_count=187, filesystem=Filesystem(last_modified=datetime.datetime(1970, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), total=983, used=12), free_heap=196960, ip='127.0.0.1', leds=Leds(cct=False, count=30, fps=5, light_capabilities=, max_power=850, max_segments=32, power=536, rgbw=True, segment_light_capabilities=[], wv=False), live_ip='', live_mode='', live=False, mac_address='aabbccddeeff', name='WLED RGBW Light', custom_palette_count=0, palette_count=71, product='FOSS', repo='wled/WLED', release=None, sync_toggle_receive=False, udp_port=21324, uptime=datetime.timedelta(seconds=461), version=, websocket=None, wifi=Wifi(bssid='AA:AA:AA:AA:AA:BB', channel=11, rssi=-44, signal=100)), state=State(brightness=128, ledmap=0, main_segment_id=0, nightlight=Nightlight(duration=60, mode=, on=False, remaining=-1, target_brightness=0), on=True, playlist_id=None, preset_id=None, segments={0: Segment(brightness=255, cct=127, clones=-1, color=Color(primary=[255, 0, 0, 139], secondary=[0, 0, 0, 0], tertiary=[0, 0, 0, 0]), custom1=128, custom2=128, custom3=16, effect_id=0, expand_1d=0, freeze=False, grouping=1, intensity=128, length=30, mirror=False, mirror_y=False, name=None, offset=0, on=True, option1=False, option2=False, option3=False, palette_id=0, reverse=False, reverse_y=False, segment_id=0, selected=True, set_id=0, sound_simulation=, spacing=0, speed=128, start=0, start_y=0, stop=30, stop_y=0, transpose=False)}, sync=UDPSync(receive=True, receive_groups=, send=False, send_groups=), transition=7, live_data_override=), effects={0: Effect(effect_id=0, name='Solid'), 1: Effect(effect_id=1, name='Blink'), 2: Effect(effect_id=2, name='Breathe'), 3: Effect(effect_id=3, name='Wipe'), 4: Effect(effect_id=4, name='Wipe Random'), 5: Effect(effect_id=5, name='Random Colors'), 6: Effect(effect_id=6, name='Sweep'), 7: Effect(effect_id=7, name='Dynamic'), 8: Effect(effect_id=8, name='Colorloop'), 9: Effect(effect_id=9, name='Rainbow'), 10: Effect(effect_id=10, name='Scan'), 11: Effect(effect_id=11, name='Scan Dual'), 12: Effect(effect_id=12, name='Fade'), 13: Effect(effect_id=13, name='Theater'), 14: Effect(effect_id=14, name='Theater Rainbow'), 15: Effect(effect_id=15, name='Running'), 16: Effect(effect_id=16, name='Saw'), 17: Effect(effect_id=17, name='Twinkle'), 18: Effect(effect_id=18, name='Dissolve'), 19: Effect(effect_id=19, name='Dissolve Rnd'), 20: Effect(effect_id=20, name='Sparkle'), 21: Effect(effect_id=21, name='Sparkle Dark'), 22: Effect(effect_id=22, name='Sparkle+'), 23: Effect(effect_id=23, name='Strobe'), 24: Effect(effect_id=24, name='Strobe Rainbow'), 25: Effect(effect_id=25, name='Strobe Mega'), 26: Effect(effect_id=26, name='Blink Rainbow'), 27: Effect(effect_id=27, name='Android'), 28: Effect(effect_id=28, name='Chase'), 29: Effect(effect_id=29, name='Chase Random'), 30: Effect(effect_id=30, name='Chase Rainbow'), 31: Effect(effect_id=31, name='Chase Flash'), 32: Effect(effect_id=32, name='Chase Flash Rnd'), 33: Effect(effect_id=33, name='Rainbow Runner'), 34: Effect(effect_id=34, name='Colorful'), 35: Effect(effect_id=35, name='Traffic Light'), 36: Effect(effect_id=36, name='Sweep Random'), 37: Effect(effect_id=37, name='Chase 2'), 38: Effect(effect_id=38, name='Aurora'), 39: Effect(effect_id=39, name='Stream'), 40: Effect(effect_id=40, name='Scanner'), 41: Effect(effect_id=41, name='Lighthouse'), 42: Effect(effect_id=42, name='Fireworks'), 43: Effect(effect_id=43, name='Rain'), 44: Effect(effect_id=44, name='Tetrix'), 45: Effect(effect_id=45, name='Fire Flicker'), 46: Effect(effect_id=46, name='Gradient'), 47: Effect(effect_id=47, name='Loading'), 48: Effect(effect_id=48, name='Rolling Balls'), 49: Effect(effect_id=49, name='Fairy'), 50: Effect(effect_id=50, name='Two Dots'), 51: Effect(effect_id=51, name='Fairytwinkle'), 52: Effect(effect_id=52, name='Running Dual'), 53: Effect(effect_id=53, name='RSVD'), 54: Effect(effect_id=54, name='Chase 3'), 55: Effect(effect_id=55, name='Tri Wipe'), 56: Effect(effect_id=56, name='Tri Fade'), 57: Effect(effect_id=57, name='Lightning'), 58: Effect(effect_id=58, name='ICU'), 59: Effect(effect_id=59, name='Multi Comet'), 60: Effect(effect_id=60, name='Scanner Dual'), 61: Effect(effect_id=61, name='Stream 2'), 62: Effect(effect_id=62, name='Oscillate'), 63: Effect(effect_id=63, name='Pride 2015'), 64: Effect(effect_id=64, name='Juggle'), 65: Effect(effect_id=65, name='Palette'), 66: Effect(effect_id=66, name='Fire 2012'), 67: Effect(effect_id=67, name='Colorwaves'), 68: Effect(effect_id=68, name='Bpm'), 69: Effect(effect_id=69, name='Fill Noise'), 70: Effect(effect_id=70, name='Noise 1'), 71: Effect(effect_id=71, name='Noise 2'), 72: Effect(effect_id=72, name='Noise 3'), 73: Effect(effect_id=73, name='Noise 4'), 74: Effect(effect_id=74, name='Colortwinkles'), 75: Effect(effect_id=75, name='Lake'), 76: Effect(effect_id=76, name='Meteor'), 77: Effect(effect_id=77, name='Meteor Smooth'), 78: Effect(effect_id=78, name='Railway'), 79: Effect(effect_id=79, name='Ripple'), 80: Effect(effect_id=80, name='Twinklefox'), 81: Effect(effect_id=81, name='Twinklecat'), 82: Effect(effect_id=82, name='Halloween Eyes'), 83: Effect(effect_id=83, name='Solid Pattern'), 84: Effect(effect_id=84, name='Solid Pattern Tri'), 85: Effect(effect_id=85, name='Spots'), 86: Effect(effect_id=86, name='Spots Fade'), 87: Effect(effect_id=87, name='Glitter'), 88: Effect(effect_id=88, name='Candle'), 89: Effect(effect_id=89, name='Fireworks Starburst'), 90: Effect(effect_id=90, name='Fireworks 1D'), 91: Effect(effect_id=91, name='Bouncing Balls'), 92: Effect(effect_id=92, name='Sinelon'), 93: Effect(effect_id=93, name='Sinelon Dual'), 94: Effect(effect_id=94, name='Sinelon Rainbow'), 95: Effect(effect_id=95, name='Popcorn'), 96: Effect(effect_id=96, name='Drip'), 97: Effect(effect_id=97, name='Plasma'), 98: Effect(effect_id=98, name='Percent'), 99: Effect(effect_id=99, name='Ripple Rainbow'), 100: Effect(effect_id=100, name='Heartbeat'), 101: Effect(effect_id=101, name='Pacifica'), 102: Effect(effect_id=102, name='Candle Multi'), 103: Effect(effect_id=103, name='Solid Glitter'), 104: Effect(effect_id=104, name='Sunrise'), 105: Effect(effect_id=105, name='Phased'), 106: Effect(effect_id=106, name='Twinkleup'), 107: Effect(effect_id=107, name='Noise Pal'), 108: Effect(effect_id=108, name='Sine'), 109: Effect(effect_id=109, name='Phased Noise'), 110: Effect(effect_id=110, name='Flow'), 111: Effect(effect_id=111, name='Chunchun'), 112: Effect(effect_id=112, name='Dancing Shadows'), 113: Effect(effect_id=113, name='Washing Machine'), 114: Effect(effect_id=114, name='RSVD'), 115: Effect(effect_id=115, name='Blends'), 116: Effect(effect_id=116, name='TV Simulator'), 117: Effect(effect_id=117, name='Dynamic Smooth'), 118: Effect(effect_id=118, name='Spaceships'), 119: Effect(effect_id=119, name='Crazy Bees'), 120: Effect(effect_id=120, name='Ghost Rider'), 121: Effect(effect_id=121, name='Blobs'), 122: Effect(effect_id=122, name='Scrolling Text'), 123: Effect(effect_id=123, name='Drift Rose'), 124: Effect(effect_id=124, name='Distortion Waves'), 125: Effect(effect_id=125, name='Soap'), 126: Effect(effect_id=126, name='Octopus'), 127: Effect(effect_id=127, name='Waving Cell'), 128: Effect(effect_id=128, name='Pixels'), 129: Effect(effect_id=129, name='Pixelwave'), 130: Effect(effect_id=130, name='Juggles'), 131: Effect(effect_id=131, name='Matripix'), 132: Effect(effect_id=132, name='Gravimeter'), 133: Effect(effect_id=133, name='Plasmoid'), 134: Effect(effect_id=134, name='Puddles'), 135: Effect(effect_id=135, name='Midnoise'), 136: Effect(effect_id=136, name='Noisemeter'), 137: Effect(effect_id=137, name='Freqwave'), 138: Effect(effect_id=138, name='Freqmatrix'), 139: Effect(effect_id=139, name='GEQ'), 140: Effect(effect_id=140, name='Waterfall'), 141: Effect(effect_id=141, name='Freqpixels'), 142: Effect(effect_id=142, name='RSVD'), 143: Effect(effect_id=143, name='Noisefire'), 144: Effect(effect_id=144, name='Puddlepeak'), 145: Effect(effect_id=145, name='Noisemove'), 146: Effect(effect_id=146, name='Noise2D'), 147: Effect(effect_id=147, name='Perlin Move'), 148: Effect(effect_id=148, name='Ripple Peak'), 149: Effect(effect_id=149, name='Firenoise'), 150: Effect(effect_id=150, name='Squared Swirl'), 151: Effect(effect_id=151, name='RSVD'), 152: Effect(effect_id=152, name='DNA'), 153: Effect(effect_id=153, name='Matrix'), 154: Effect(effect_id=154, name='Metaballs'), 155: Effect(effect_id=155, name='Freqmap'), 156: Effect(effect_id=156, name='Gravcenter'), 157: Effect(effect_id=157, name='Gravcentric'), 158: Effect(effect_id=158, name='Gravfreq'), 159: Effect(effect_id=159, name='DJ Light'), 160: Effect(effect_id=160, name='Funky Plank'), 161: Effect(effect_id=161, name='RSVD'), 162: Effect(effect_id=162, name='Pulser'), 163: Effect(effect_id=163, name='Blurz'), 164: Effect(effect_id=164, name='Drift'), 165: Effect(effect_id=165, name='Waverly'), 166: Effect(effect_id=166, name='Sun Radiation'), 167: Effect(effect_id=167, name='Colored Bursts'), 168: Effect(effect_id=168, name='Julia'), 169: Effect(effect_id=169, name='RSVD'), 170: Effect(effect_id=170, name='RSVD'), 171: Effect(effect_id=171, name='RSVD'), 172: Effect(effect_id=172, name='Game Of Life'), 173: Effect(effect_id=173, name='Tartan'), 174: Effect(effect_id=174, name='Polar Lights'), 175: Effect(effect_id=175, name='Swirl'), 176: Effect(effect_id=176, name='Lissajous'), 177: Effect(effect_id=177, name='Frizzles'), 178: Effect(effect_id=178, name='Plasma Ball'), 179: Effect(effect_id=179, name='Flow Stripe'), 180: Effect(effect_id=180, name='Hiphotic'), 181: Effect(effect_id=181, name='Sindots'), 182: Effect(effect_id=182, name='DNA Spiral'), 183: Effect(effect_id=183, name='Black Hole'), 184: Effect(effect_id=184, name='Wavesins'), 185: Effect(effect_id=185, name='Rocktaves'), 186: Effect(effect_id=186, name='Akemi')}, palettes={0: Palette(custom=False, name='Default', palette_id=0), 1: Palette(custom=False, name='* Random Cycle', palette_id=1), 2: Palette(custom=False, name='* Color 1', palette_id=2), 3: Palette(custom=False, name='* Colors 1&2', palette_id=3), 4: Palette(custom=False, name='* Color Gradient', palette_id=4), 5: Palette(custom=False, name='* Colors Only', palette_id=5), 6: Palette(custom=False, name='Party', palette_id=6), 7: Palette(custom=False, name='Cloud', palette_id=7), 8: Palette(custom=False, name='Lava', palette_id=8), 9: Palette(custom=False, name='Ocean', palette_id=9), 10: Palette(custom=False, name='Forest', palette_id=10), 11: Palette(custom=False, name='Rainbow', palette_id=11), 12: Palette(custom=False, name='Rainbow Bands', palette_id=12), 13: Palette(custom=False, name='Sunset', palette_id=13), 14: Palette(custom=False, name='Rivendell', palette_id=14), 15: Palette(custom=False, name='Breeze', palette_id=15), 16: Palette(custom=False, name='Red & Blue', palette_id=16), 17: Palette(custom=False, name='Yellowout', palette_id=17), 18: Palette(custom=False, name='Analogous', palette_id=18), 19: Palette(custom=False, name='Splash', palette_id=19), 20: Palette(custom=False, name='Pastel', palette_id=20), 21: Palette(custom=False, name='Sunset 2', palette_id=21), 22: Palette(custom=False, name='Beach', palette_id=22), 23: Palette(custom=False, name='Vintage', palette_id=23), 24: Palette(custom=False, name='Departure', palette_id=24), 25: Palette(custom=False, name='Landscape', palette_id=25), 26: Palette(custom=False, name='Beech', palette_id=26), 27: Palette(custom=False, name='Sherbet', palette_id=27), 28: Palette(custom=False, name='Hult', palette_id=28), 29: Palette(custom=False, name='Hult 64', palette_id=29), 30: Palette(custom=False, name='Drywet', palette_id=30), 31: Palette(custom=False, name='Jul', palette_id=31), 32: Palette(custom=False, name='Grintage', palette_id=32), 33: Palette(custom=False, name='Rewhi', palette_id=33), 34: Palette(custom=False, name='Tertiary', palette_id=34), 35: Palette(custom=False, name='Fire', palette_id=35), 36: Palette(custom=False, name='Icefire', palette_id=36), 37: Palette(custom=False, name='Cyane', palette_id=37), 38: Palette(custom=False, name='Light Pink', palette_id=38), 39: Palette(custom=False, name='Autumn', palette_id=39), 40: Palette(custom=False, name='Magenta', palette_id=40), 41: Palette(custom=False, name='Magred', palette_id=41), 42: Palette(custom=False, name='Yelmag', palette_id=42), 43: Palette(custom=False, name='Yelblu', palette_id=43), 44: Palette(custom=False, name='Orange & Teal', palette_id=44), 45: Palette(custom=False, name='Tiamat', palette_id=45), 46: Palette(custom=False, name='April Night', palette_id=46), 47: Palette(custom=False, name='Orangery', palette_id=47), 48: Palette(custom=False, name='C9', palette_id=48), 49: Palette(custom=False, name='Sakura', palette_id=49), 50: Palette(custom=False, name='Aurora', palette_id=50), 51: Palette(custom=False, name='Atlantica', palette_id=51), 52: Palette(custom=False, name='C9 2', palette_id=52), 53: Palette(custom=False, name='C9 New', palette_id=53), 54: Palette(custom=False, name='Temperature', palette_id=54), 55: Palette(custom=False, name='Aurora 2', palette_id=55), 56: Palette(custom=False, name='Retro Clown', palette_id=56), 57: Palette(custom=False, name='Candy', palette_id=57), 58: Palette(custom=False, name='Toxy Reaf', palette_id=58), 59: Palette(custom=False, name='Fairy Reaf', palette_id=59), 60: Palette(custom=False, name='Semi Blue', palette_id=60), 61: Palette(custom=False, name='Pink Candy', palette_id=61), 62: Palette(custom=False, name='Red Reaf', palette_id=62), 63: Palette(custom=False, name='Aqua Flash', palette_id=63), 64: Palette(custom=False, name='Yelblu Hot', palette_id=64), 65: Palette(custom=False, name='Lite Light', palette_id=65), 66: Palette(custom=False, name='Red Flash', palette_id=66), 67: Palette(custom=False, name='Blink Red', palette_id=67), 68: Palette(custom=False, name='Red Shift', palette_id=68), 69: Palette(custom=False, name='Red Tide', palette_id=69), 70: Palette(custom=False, name='Candy2', palette_id=70)}, playlists={}, presets={}) # --- From d6896c4e7039b458039b23ded5f08966c285e2b0 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 25 Apr 2026 17:37:04 +0100 Subject: [PATCH 4/7] Update src/wled/models.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/wled/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wled/models.py b/src/wled/models.py index 340993af..a90ad48e 100644 --- a/src/wled/models.py +++ b/src/wled/models.py @@ -492,7 +492,7 @@ class Info(BaseModel): # pylint: disable=too-many-instance-attributes repo: str = field(default=DEFAULT_REPO, metadata=field_options(alias="repo")) """GitHub repository in 'org/repo' format reported by the device firmware. - Used in preference to the default repo when fetching releases or upgrading. + Used in preference to the default repo during upgrade operations. """ release: str | None = None From eec1a6c4c3b7092fed10de51c5652fbe98643d2e Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 25 Apr 2026 17:38:55 +0100 Subject: [PATCH 5/7] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/wled/wled.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/wled/wled.py b/src/wled/wled.py index baffa1e2..9f9b3cee 100644 --- a/src/wled/wled.py +++ b/src/wled/wled.py @@ -654,9 +654,11 @@ async def upgrade( # noqa: PLR0912 msg = "Device already running the requested version" raise WLEDUpgradeError(msg) - # Prefer the repo reported by the device itself; older firmware that does - # not include the field will have fallen back to DEFAULT_REPO already. - repo = self._device.info.repo + # Prefer the repo reported by the device itself only when the caller + # did not override the default repository. Older firmware that does not + # include the field will already have fallen back to DEFAULT_REPO. + if repo == DEFAULT_REPO: + repo = self._device.info.repo # Determine if this is an Ethernet board ethernet = "" From 8f36752ad2547ba122e468de16ab4a4d0184c0e4 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 25 Apr 2026 17:41:55 +0100 Subject: [PATCH 6/7] move import statement --- tests/test_models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_models.py b/tests/test_models.py index bb224180..b461198d 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -23,6 +23,7 @@ from wled.utils import get_awesome_version from .conftest import full_device_data, load_fixture_json +from .const import DEFAULT_REPO # ========================================================================= # Helper functions @@ -317,8 +318,6 @@ def test_info_version_deserialized() -> None: def test_info_repo_defaults_to_default_repo() -> None: """Test repo defaults to DEFAULT_REPO when not present in response.""" - from wled.const import DEFAULT_REPO - info = Info.from_dict(_base_info()) assert info.repo == DEFAULT_REPO From 97b9a71b826b61831bad51a5ea8f396bb6fbca09 Mon Sep 17 00:00:00 2001 From: Will Tatam Date: Sat, 25 Apr 2026 17:45:16 +0100 Subject: [PATCH 7/7] Fix constants --- tests/const.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 tests/const.py diff --git a/tests/const.py b/tests/const.py new file mode 100644 index 00000000..185d355b --- /dev/null +++ b/tests/const.py @@ -0,0 +1,5 @@ +"""Constants for tests.""" + +from wled.const import DEFAULT_REPO + +__all__ = ["DEFAULT_REPO"]