From 4c3337a2320fe23acb03162b7fa4eb2ad9c6b929 Mon Sep 17 00:00:00 2001 From: jimmy Date: Sun, 18 May 2025 21:30:40 +1200 Subject: [PATCH] Update settings.py --- src/settings.py | 56 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/src/settings.py b/src/settings.py index 7ad5c81..cf381c9 100644 --- a/src/settings.py +++ b/src/settings.py @@ -1,4 +1,7 @@ import json +import wifi +import ubinascii +import machine class Settings(dict): SETTINGS_FILE = "/settings.json" @@ -9,12 +12,13 @@ class Settings(dict): def set_defaults(self): self["num_leds"] = 50 - self["selected_pattern"] = "blink" - self["color1"] = "#000f00" - self["color2"] = "#0f0000" + self["pattern"] = "on" + self["color1"] = "#00ff00" + self["color2"] = "#ff0000" self["delay"] = 100 - self["brightness"] = 100 - self["wifi"] = {"ssid": "", "password": ""} + self["brightness"] = 10 + self["name"] = "led-controller" + self["ap_password"] = "" def save(self): try: @@ -34,6 +38,7 @@ class Settings(dict): except Exception as e: print(f"Error loading settings") self.set_defaults() + self.save() # Example usage def main(): @@ -42,12 +47,49 @@ def main(): settings['num_leds'] = 100 print(f"Updated number of LEDs: {settings['num_leds']}") settings.save() - + # Create a new Settings object to test loading new_settings = Settings() print(f"Loaded number of LEDs: {new_settings['num_leds']}") print(settings) +def set_settings(raw_json, settings, patterns): + try: + data = json.loads(raw_json) + print(data) + for key, value in data.items(): + print(key, value) + if key == "color1": + patterns.set_color1(tuple(int(value[i:i+2], 16) for i in (1, 3, 5))) # Convert hex to RGB + elif key == "color2": + patterns.set_color2(tuple(int(value[i:i+2], 16) for i in (1, 3, 5))) # Convert hex to RGB + elif key == "num_leds": + patterns.update_num_leds(4, value) + elif key == "pattern": + if not patterns.select(value): + return "Pattern doesn't exist", 400 + elif key == "delay": + delay = int(data["delay"]) + patterns.set_delay(delay) + elif key == "brightness": + brightness = int(data["brightness"]) + patterns.set_brightness(brightness) + elif key == "name": + settings[key] = value + settings.save() + machine.reset() + elif key == "sync": + patterns.sync() + return "OK", 200 + else: + return "Invalid key", 400 + settings[key] = value + settings.save() + return "OK", 200 + + except (KeyError, ValueError): + return "Bad request", 400 + # Run the example if __name__ == "__main__": - main() \ No newline at end of file + main()