From 4c7646b2fe8f12177cc07eea2a2595d1629833b9 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Sat, 14 Mar 2026 02:41:07 +1300 Subject: [PATCH] Adjust defaults and preset handling - Switch startup_preset to default key - Add built-in on/off presets and tweak device defaults Made-with: Cursor --- deploy.sh | 0 src/main.py | 12 +++++++----- src/presets.json | 1 + src/presets.py | 9 ++++++++- src/settings.py | 8 ++++---- 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 deploy.sh create mode 100644 src/presets.json diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..e69de29 diff --git a/src/main.py b/src/main.py index c88b981..e37e545 100644 --- a/src/main.py +++ b/src/main.py @@ -13,10 +13,11 @@ print(settings) presets = Presets(settings["led_pin"], settings["num_leds"]) presets.load() presets.b = settings.get("brightness", 255) -startup_preset = settings.get("startup_preset") -if startup_preset: - presets.select(startup_preset) - print(f"Selected startup preset: {startup_preset}") +# Use the default preset name from settings (set via controller or defaults) +default_preset = settings.get("default") +if default_preset: + presets.select(default_preset) + print(f"Selected startup preset: {default_preset}") wdt = WDT(timeout=10000) wdt.feed() @@ -35,6 +36,7 @@ while True: presets.tick() if e.any(): host, msg = e.recv() + print(msg) data = json.loads(msg) # Only handle messages with the expected version. if data.get("v") != "1": @@ -66,7 +68,7 @@ while True: step = select_list[1] if len(select_list) > 1 else None presets.select(preset_name, step=step) if "default" in data: - settings["startup_preset"] = data["default"] + settings["default"] = data["default"] print(f"Set startup preset to: {data['default']}") settings.save() if "save" in data: diff --git a/src/presets.json b/src/presets.json new file mode 100644 index 0000000..1c4f27f --- /dev/null +++ b/src/presets.json @@ -0,0 +1 @@ +{"14": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 102, 0]], "b": 255, "n2": 1000, "n1": 2000, "p": "pulse", "n3": 2000, "d": 800}, "15": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 0, 0], [0, 255, 0]], "b": 255, "n2": 0, "n1": 0, "p": "blink", "n3": 0, "d": 500}, "5": {"n5": 0, "n4": 1, "a": true, "n6": 0, "c": [[255, 0, 0], [0, 0, 255]], "b": 255, "n2": 5, "n1": 5, "p": "chase", "n3": 1, "d": 200}, "4": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 0, 0], [0, 255, 0], [0, 0, 255]], "b": 255, "n2": 0, "n1": 0, "p": "transition", "n3": 0, "d": 500}, "7": {"n5": 0, "n4": 5, "a": true, "n6": 0, "c": [[255, 165, 0], [128, 0, 128]], "b": 255, "n2": 10, "n1": 2, "p": "circle", "n3": 2, "d": 200}, "11": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 0, 0]], "b": 255, "n2": 0, "n1": 0, "p": "on", "n3": 0, "d": 100}, "12": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[0, 0, 255]], "b": 255, "n2": 0, "n1": 0, "p": "on", "n3": 0, "d": 100}, "6": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[0, 255, 0]], "b": 255, "n2": 500, "n1": 1000, "p": "pulse", "n3": 1000, "d": 500}, "3": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 255, 255]], "b": 255, "n2": 0, "n1": 2, "p": "rainbow", "n3": 0, "d": 100}, "2": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 255, 255]], "b": 0, "n2": 0, "n1": 0, "p": "off", "n3": 0, "d": 100}, "1": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 255, 255]], "b": 255, "n2": 0, "n1": 0, "p": "on", "n3": 0, "d": 100}, "10": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[230, 242, 255]], "b": 200, "n2": 0, "n1": 0, "p": "on", "n3": 0, "d": 100}, "13": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 255, 255]], "b": 255, "n2": 0, "n1": 1, "p": "rainbow", "n3": 0, "d": 150}, "9": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 245, 230]], "b": 200, "n2": 0, "n1": 0, "p": "on", "n3": 0, "d": 100}, "8": {"n5": 0, "n4": 0, "a": true, "n6": 0, "c": [[255, 0, 0], [0, 255, 0], [0, 0, 255], [255, 255, 0]], "b": 255, "n2": 0, "n1": 0, "p": "blink", "n3": 0, "d": 1000}} \ No newline at end of file diff --git a/src/presets.py b/src/presets.py index 620cd8d..338fb5c 100644 --- a/src/presets.py +++ b/src/presets.py @@ -82,6 +82,13 @@ class Presets: self.generator = None def select(self, preset_name, step=None): + # Auto-create simple built-in presets for common names on first use + if preset_name not in self.presets and preset_name in ("on", "off"): + if preset_name == "on": + self.presets[preset_name] = Preset({"p": "on"}) + else: + self.presets[preset_name] = Preset({"p": "off"}) + if preset_name in self.presets: preset = self.presets[preset_name] if preset.p in self.patterns: @@ -93,7 +100,7 @@ class Presets: self.generator = self.patterns[preset.p](preset) self.selected = preset_name # Store the preset name, not the object return True - # If preset doesn't exist or pattern not found, default to "off" + # If preset doesn't exist or pattern not found, indicate failure return False def update_num_leds(self, pin, num_leds): diff --git a/src/settings.py b/src/settings.py index af075cd..ff76a3b 100644 --- a/src/settings.py +++ b/src/settings.py @@ -13,14 +13,14 @@ class Settings(dict): def set_defaults(self): self["led_pin"] = 10 - self["num_leds"] = 50 + self["num_leds"] = 119 self["color_order"] = "rgb" - self["name"] = f"led-{ubinascii.hexlify(network.WLAN(network.AP_IF).config('mac')).decode()}" + self["name"] = "a" self["debug"] = False - self["default"] = None - self["brightness"] = 255 + self["default"] = "on" + self["brightness"] = 32 def save(self): try: