From 4ed1e170325a48f5a71061a2c2971ac21d15c2c2 Mon Sep 17 00:00:00 2001 From: jimmy Date: Tue, 27 Jan 2026 00:42:14 +1300 Subject: [PATCH] Update ESPNow message handling for list-based select format - Change select format from string to list: ["preset_name"] or ["preset_name", step] - Support step parameter in select messages - Update message parsing to handle new format --- src/main.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main.py b/src/main.py index c87bc4d..151011c 100644 --- a/src/main.py +++ b/src/main.py @@ -3,14 +3,13 @@ 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"], selected=settings["pattern"]) -patterns.colors = [(8,0,0)] -patterns.select("rainbow") wdt = WDT(timeout=10000) wdt.feed() @@ -29,6 +28,19 @@ while True: if e.any(): host, msg = e.recv() data = json.loads(msg) - if settings.get("name") in data.get("names", []): - settings.set_settings(data.get("settings", {}), patterns, data.get("save", False)) + if data["v"] != "1": + continue + 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 "colors" in preset_data: + preset_data["colors"] = convert_and_reorder_colors(preset_data["colors"], 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)