Files
home_assistant/README.md
T
tomatocream e76e78deec Pull WLED state from device; add Sunrise preset and presets docs
- wled_pull: update full.json, state.json, info.json from device
- Add wled_config/presets/sunrise.json (psave payload for preset 1)
- README: document defining and pushing presets

Made-with: Cursor
2026-03-09 01:03:24 +08:00

4.5 KiB
Raw Blame History

Home Assistant

Scripts and config for managing WLED at 192.168.240.30.

WLED scripts

Python 3, no extra deps (stdlib only).

Pull (read state/config from WLED)

# Full snapshot (state + info + effects + palettes)
python wled_pull.py

# Just state, info, or config
python wled_pull.py state
python wled_pull.py info
python wled_pull.py cfg

# Save to file
python wled_pull.py --save wled_config/backup.json
python wled_pull.py full -o wled_config/full.json

Push (send commands to WLED)

python wled_push.py --on
python wled_push.py --off
python wled_push.py --toggle
python wled_push.py --bri 128
python wled_push.py --preset 1
python wled_push.py --file wled_config/state.json
python wled_push.py --file wled_config/sunrise_8am.json
python wled_push.py --file wled_config/presets/sunrise.json   # save preset to device (psave)

Use --host to override the default 192.168.240.30.

Brightness and white channel

WLED has three separate level-style controls:

Control JSON Description
Global brightness state.bri Main dimmer for the whole light (0255). When off, this is the brightness used when you turn on.
Segment brightness state.seg[].bri Per-segment brightness (0255). Multiplies with the segments color/effect.
White channel state.seg[].col[0][3] The W in RGBW: primary color is [R, G, B, W]. White channel 0255 (how much dedicated white is mixed in).

CLI:

  • --bri N — global brightness.
  • --seg-bri N — segment 0 brightness.
  • --white N — segment 0 primary colors white channel (0255). Use with Solid effect for predictable results.
python wled_push.py --on --bri 200           # global only
python wled_push.py --seg-bri 128            # dim segment 0 only
python wled_push.py --white 255              # full white channel (segment 0)
python wled_push.py --bri 255 --seg-bri 255 --white 255  # all full

White vs warm light (CCT)

Your WLED device (WLED-Gledopto at 192.168.240.30) supports CCT (color temperature). This controls the warm vs cool blend of the white output; the white channel (--white) controls how much white is mixed in (e.g. with RGB). In the API, segment cct uses a relative scale:

  • cct: 0 → warmest (warm white, ~2700 K)
  • cct: 255 → coolest (cool white, ~6500 K)

Current state (from your last pull): light on, brightness 254, segment 0 with Solid effect (fx: 0), CCT 0 (warm), primary color dim gray [56,56,56,56].

Set cool/white light:

python wled_push.py --on --bri 255 --cct 255
# or from a JSON file:
python wled_push.py --file wled_config/white.json

Set warm light:

python wled_push.py --on --bri 255 --cct 0
# or:
python wled_push.py --file wled_config/warm.json

To only change color temperature and keep current on/off and brightness, use only --cct:

python wled_push.py --cct 255   # switch to cool white
python wled_push.py --cct 0     # switch to warm

Config backup

wled_config/ holds JSON pulled from the device: full.json, state.json, info.json. Use wled_push.py --file wled_config/state.json to restore state.

Presets (define in JSON, push to device)

Presets are stored on the WLED device; you can define them in JSON and push once to create/update them. Use the WLED psave API: include psave (preset slot 1250), optional n (name), ib (include brightness), and the state you want saved.

Example — Sunrise preset (warm white, Solid, for the 8am alarm):

python wled_push.py --file wled_config/presets/sunrise.json

That sends the payload in wled_config/presets/sunrise.json to the device. The device saves it as preset ID 1 named "Sunrise". Home Assistant can then use select.wled_gledopto_preset with option "Sunrise" in the sunrise alarm script.

  • full.json is a snapshot from pull (state + info + effects + palettes). It does not define presets; use wled_config/presets/*.json for that.
  • To add more presets: create a new JSON file with psave, n, and state, then run wled_push.py --file path/to/preset.json.

Sunrise alarm

wled_config/sunrise_8am.json starts a 30-minute sunrise that finishes at 08:00.

# Test the sunrise payload immediately
python wled_push.py --file wled_config/sunrise_8am.json

# Poll the local clock and trigger the sunrise daily
python sunrise_alarm.py

# Custom alarm time and duration
python sunrise_alarm.py --alarm 08:00 --duration 30