from settings import Settings from machine import WDT from espnow import ESPNow import network from patterns import Patterns from utils import convert_and_reorder_colors import json settings = Settings() print(settings) patterns = Patterns(settings["led_pin"], settings["num_leds"]) wdt = WDT(timeout=10000) wdt.feed() sta_if = network.WLAN(network.STA_IF) sta_if.active(True) sta_if.disconnect() sta_if.config(channel=1) e = ESPNow() e.active(True) while True: wdt.feed() patterns.tick() if e.any(): host, msg = e.recv() data = json.loads(msg) if data["v"] != "1": continue print(data) if "presets" in data: for name, preset_data in data["presets"].items(): # Convert hex color strings to RGB tuples and reorder based on device color order if "c" in preset_data: preset_data["c"] = convert_and_reorder_colors(preset_data["c"], settings) patterns.edit(name, preset_data) if settings.get("name") in data.get("select", {}): select_list = data["select"][settings.get("name")] # Select value is always a list: ["preset_name"] or ["preset_name", step] if select_list: preset_name = select_list[0] step = select_list[1] if len(select_list) > 1 else None patterns.select(preset_name, step=step)