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
This commit is contained in:
20
src/main.py
20
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user