55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
|
import json
|
||
|
import os
|
||
|
import uasyncio as asyncio
|
||
|
|
||
|
class Settings(dict):
|
||
|
SETTINGS_FILE = "/settings.json"
|
||
|
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
self.load() # Load settings from file during initialization
|
||
|
|
||
|
def set_defaults(self):
|
||
|
self["num_leds"] = 50
|
||
|
self["selected_pattern"] = "blink"
|
||
|
self["color1"] = "#000f00"
|
||
|
self["color2"] = "#0f0000"
|
||
|
self["delay"] = 100
|
||
|
self["brightness"] = 100
|
||
|
self["wifi"] = {"ssid": "", "password": ""}
|
||
|
|
||
|
def save(self):
|
||
|
try:
|
||
|
j = json.dumps(self)
|
||
|
with open(self.SETTINGS_FILE, 'w') as file:
|
||
|
file.write(j)
|
||
|
print("Settings saved successfully.")
|
||
|
except Exception as e:
|
||
|
print(f"Error saving settings: {e}")
|
||
|
|
||
|
def load(self):
|
||
|
try:
|
||
|
with open(self.SETTINGS_FILE, 'r') as file:
|
||
|
loaded_settings = json.load(file)
|
||
|
self.update(loaded_settings)
|
||
|
print("Settings loaded successfully.")
|
||
|
except Exception as e:
|
||
|
print(f"Error loading settings: {e}")
|
||
|
self.set_defaults()
|
||
|
|
||
|
# Example usage
|
||
|
def main():
|
||
|
settings = Settings()
|
||
|
print(f"Number of LEDs: {settings['num_leds']}")
|
||
|
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)
|
||
|
|
||
|
# Run the example
|
||
|
if __name__ == "__main__":
|
||
|
main()
|