Add color order
This commit is contained in:
parent
3fa9377438
commit
ec29dbdd01
13
src/main.py
13
src/main.py
|
@ -1,6 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import aioespnow
|
import aioespnow
|
||||||
from settings import Settings, set_settings
|
from settings import Settings
|
||||||
from web import web
|
from web import web
|
||||||
from patterns import Patterns
|
from patterns import Patterns
|
||||||
import gc
|
import gc
|
||||||
|
@ -17,11 +17,18 @@ async def main():
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
|
||||||
patterns = Patterns(settings["led_pin"], settings["num_leds"], selected=settings["pattern"])
|
patterns = Patterns(settings["led_pin"], settings["num_leds"], selected=settings["pattern"])
|
||||||
patterns.set_color1(tuple(int(settings["color1"][i:i+2], 16) for i in (1, 3, 5)))
|
if settings["color_order"] == "rbg": color_order = (1, 5, 3)
|
||||||
patterns.set_color2(tuple(int(settings["color2"][i:i+2], 16) for i in (1, 3, 5)))
|
else: color_order = (1, 3, 5)
|
||||||
|
patterns.set_color1(tuple(int(settings["color1"][i:i+2], 16) for i in color_order))
|
||||||
|
patterns.set_color2(tuple(int(settings["color2"][i:i+2], 16) for i in color_order))
|
||||||
patterns.set_brightness(int(settings["brightness"]))
|
patterns.set_brightness(int(settings["brightness"]))
|
||||||
patterns.set_delay(int(settings["delay"]))
|
patterns.set_delay(int(settings["delay"]))
|
||||||
|
|
||||||
|
wifi.connect(settings.get("wifi_ssid", ""),
|
||||||
|
settings.get("wifi_password", ""),
|
||||||
|
settings.get("wifi_ip", ""),
|
||||||
|
settings.get("wifi_gateway", "")
|
||||||
|
)
|
||||||
w = web(settings, patterns)
|
w = web(settings, patterns)
|
||||||
print(settings)
|
print(settings)
|
||||||
# start the server in a bacakground task
|
# start the server in a bacakground task
|
||||||
|
|
|
@ -9,6 +9,8 @@ class Settings(dict):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.load() # Load settings from file during initialization
|
self.load() # Load settings from file during initialization
|
||||||
|
if self["color_order"] == "rbg": self.color_order = (1, 5, 3)
|
||||||
|
else: self.color_order = (1, 3, 5)
|
||||||
|
|
||||||
def set_defaults(self):
|
def set_defaults(self):
|
||||||
self["led_pin"] = 10
|
self["led_pin"] = 10
|
||||||
|
@ -18,6 +20,7 @@ class Settings(dict):
|
||||||
self["color2"] = "#ff0000"
|
self["color2"] = "#ff0000"
|
||||||
self["delay"] = 100
|
self["delay"] = 100
|
||||||
self["brightness"] = 10
|
self["brightness"] = 10
|
||||||
|
self["color_order"] = "rgb"
|
||||||
self["name"] = f"led-{ubinascii.hexlify(wifi.get_mac()).decode()}"
|
self["name"] = f"led-{ubinascii.hexlify(wifi.get_mac()).decode()}"
|
||||||
self["ap_password"] = ""
|
self["ap_password"] = ""
|
||||||
self["wifi_ssid"] = ""
|
self["wifi_ssid"] = ""
|
||||||
|
@ -45,6 +48,43 @@ class Settings(dict):
|
||||||
self.set_defaults()
|
self.set_defaults()
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
def set_settings(self, raw_json, patterns):
|
||||||
|
patterns.sync()
|
||||||
|
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 self.color_order)) # Convert hex to RGB
|
||||||
|
elif key == "color2":
|
||||||
|
patterns.set_color2(tuple(int(value[i:i+2], 16) for i in self.color_order)) # 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":
|
||||||
|
self[key] = value
|
||||||
|
self.save()
|
||||||
|
machine.reset()
|
||||||
|
elif key == "color_order":
|
||||||
|
if value == "rbg": self.color_order = (1, 5, 3)
|
||||||
|
else: self.color_order = (1, 3, 5)
|
||||||
|
else:
|
||||||
|
return "Invalid key", 400
|
||||||
|
self[key] = value
|
||||||
|
self.save()
|
||||||
|
return "OK", 200
|
||||||
|
except (KeyError, ValueError):
|
||||||
|
return "Bad request", 400
|
||||||
|
|
||||||
# Example usage
|
# Example usage
|
||||||
def main():
|
def main():
|
||||||
settings = Settings()
|
settings = Settings()
|
||||||
|
@ -58,39 +98,7 @@ def main():
|
||||||
print(f"Loaded number of LEDs: {new_settings['num_leds']}")
|
print(f"Loaded number of LEDs: {new_settings['num_leds']}")
|
||||||
print(settings)
|
print(settings)
|
||||||
|
|
||||||
def set_settings(raw_json, settings, patterns):
|
|
||||||
patterns.sync()
|
|
||||||
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()
|
|
||||||
else:
|
|
||||||
return "Invalid key", 400
|
|
||||||
settings[key] = value
|
|
||||||
settings.save()
|
|
||||||
return "OK", 200
|
|
||||||
except (KeyError, ValueError):
|
|
||||||
return "Bad request", 400
|
|
||||||
|
|
||||||
# Run the example
|
# Run the example
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue