wled_push: include modified wled_push.py

Made-with: Cursor
This commit is contained in:
2026-03-09 01:03:57 +08:00
parent e76e78deec
commit d3eb5d286a
+28 -1
View File
@@ -54,7 +54,9 @@ def main():
p.add_argument("--on", action="store_true", help="Turn on") p.add_argument("--on", action="store_true", help="Turn on")
p.add_argument("--off", action="store_true", help="Turn off") p.add_argument("--off", action="store_true", help="Turn off")
p.add_argument("--toggle", "-t", action="store_true", dest="toggle", help="Toggle on/off") p.add_argument("--toggle", "-t", action="store_true", dest="toggle", help="Toggle on/off")
p.add_argument("--bri", type=int, metavar="0-255", help="Brightness") p.add_argument("--bri", type=int, metavar="0-255", help="Global brightness")
p.add_argument("--seg-bri", type=int, metavar="0-255", dest="seg_bri", help="Segment 0 brightness")
p.add_argument("--white", "-w", type=int, metavar="0-255", help="Segment 0 white channel (col[0][3], RGBW)")
p.add_argument("--cct", type=int, metavar="0-255", help="Color temp: 0=warm, 255=cool white (segment 0)") p.add_argument("--cct", type=int, metavar="0-255", help="Color temp: 0=warm, 255=cool white (segment 0)")
p.add_argument("--preset", "-p", type=int, metavar="ID", help="Load preset by ID") p.add_argument("--preset", "-p", type=int, metavar="ID", help="Load preset by ID")
p.add_argument("--v", action="store_true", help="Return full state in response") p.add_argument("--v", action="store_true", help="Return full state in response")
@@ -74,6 +76,31 @@ def main():
payload["on"] = "t" payload["on"] = "t"
if args.bri is not None: if args.bri is not None:
payload["bri"] = max(0, min(255, args.bri)) payload["bri"] = max(0, min(255, args.bri))
if args.seg_bri is not None:
seg_bri = max(0, min(255, args.seg_bri))
payload.setdefault("seg", [])
seg0 = next((s for s in payload["seg"] if s.get("id") == 0), payload["seg"][0] if payload["seg"] else None)
if seg0 is None:
payload["seg"].insert(0, {"id": 0, "bri": seg_bri})
else:
seg0["bri"] = seg_bri
if args.white is not None:
w = max(0, min(255, args.white))
payload.setdefault("seg", [])
seg0 = next((s for s in payload["seg"] if s.get("id") == 0), payload["seg"][0] if payload["seg"] else None)
if seg0 is None:
payload["seg"].insert(0, {"id": 0, "fx": 0, "col": [[0, 0, 0, w], [0, 0, 0, 0], [0, 0, 0, 0]]})
else:
seg0.setdefault("col", [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
if len(seg0["col"]) < 1:
seg0["col"] = [[0, 0, 0, w], [0, 0, 0, 0], [0, 0, 0, 0]]
else:
prim = list(seg0["col"][0])
while len(prim) < 4:
prim.append(0)
prim[3] = w
seg0["col"][0] = prim
seg0["fx"] = 0 # Solid so white channel is visible
if args.cct is not None: if args.cct is not None:
cct = max(0, min(255, args.cct)) cct = max(0, min(255, args.cct))
payload.setdefault("seg", []) payload.setdefault("seg", [])