UI: Color palette REST integration, MIDI 44–51 color slot selection, Color 1/2 previews with next indicator and click-to-select target; use REST for pattern changes and parameter updates (brightness, delay, n1–n3); send colors only on confirm; load palette on startup; fix NoneType await issue in async handlers
This commit is contained in:
@@ -18,6 +18,27 @@ import asyncio
|
||||
import json
|
||||
import websockets
|
||||
import re
|
||||
import os
|
||||
|
||||
|
||||
def load_dotenv(filepath: str = ".env"):
|
||||
try:
|
||||
if not os.path.exists(filepath):
|
||||
return
|
||||
with open(filepath, 'r') as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if not line or line.startswith('#'):
|
||||
continue
|
||||
if '=' not in line:
|
||||
continue
|
||||
key, value = line.split('=', 1)
|
||||
key = key.strip()
|
||||
value = value.strip().strip('"').strip("'")
|
||||
if key and key not in os.environ:
|
||||
os.environ[key] = value
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def build_messages(args):
|
||||
@@ -77,7 +98,9 @@ async def run_test(uri: str, messages: list[dict], sleep_s: float):
|
||||
|
||||
def parse_args():
|
||||
p = argparse.ArgumentParser(description="Send UI commands to control_server WebSocket")
|
||||
p.add_argument("--uri", default="ws://localhost:8765", help="WebSocket URI (default ws://localhost:8765)")
|
||||
load_dotenv()
|
||||
default_uri = os.getenv("CONTROL_SERVER_URI", "ws://10.1.1.117:8765")
|
||||
p.add_argument("--uri", default=default_uri, help=f"WebSocket URI (default {default_uri})")
|
||||
p.add_argument("--pattern", help="Pattern name for pattern_change")
|
||||
p.add_argument("--r", type=int, help="Red 0-255 for color_change")
|
||||
p.add_argument("--g", type=int, help="Green 0-255 for color_change")
|
||||
|
Reference in New Issue
Block a user