- 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
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 (0–255). When off, this is the brightness used when you turn on. |
| Segment brightness | state.seg[].bri |
Per-segment brightness (0–255). Multiplies with the segment’s color/effect. |
| White channel | state.seg[].col[0][3] |
The W in RGBW: primary color is [R, G, B, W]. White channel 0–255 (how much dedicated white is mixed in). |
CLI:
--bri N— global brightness.--seg-bri N— segment 0 brightness.--white N— segment 0 primary color’s white channel (0–255). 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 1–250), 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/*.jsonfor that. - To add more presets: create a new JSON file with
psave,n, and state, then runwled_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