Desktop control for ELK-BLEDOM / MELK Bluetooth LED strips — drive multiple strips at once with a live color picker, presets, and a system tray.
pip install -r requirements.txt
python main.pyIf
pip installfails on the newest Python, use a 3.11–3.13 interpreter (PySide6/Pillow wheels can lag).
brew tap ugurcandede/tap
brew install --cask lumeaThe cask clears Gatekeeper for you. To update later: brew upgrade --cask lumea.
Download Lumea-windows.exe and run it. On the SmartScreen prompt, choose More info → Run anyway.
- Python 3.11+
- A strip advertising as
ELK-BLE,MELK, orELK-BULB - Bluetooth turned on
- Scan — lists nearby strips.
- Tick the devices you want, then press Connect Selected. Double-click a row to set an alias.
- On / Off and the color picker (live) — commands go to every checked-and-connected device at once.
- Presets — the 5 swatches: left-click applies, right-click saves the current color.
- Disconnect All drops every connection.
Closing the window keeps the app in the system tray. Checked devices, aliases, presets and the last color are saved and restored on launch, and dropped links auto-reconnect.
- Control multiple strips at once
- Per-device aliases
- Live color picker with 5 savable presets
- System tray — runs in the background, icon reflects the current color
- Settings persistence and auto-reconnect
main.py entry point: QApplication + qasync event loop
ble.py scan(); ElkBledom (one strip); DeviceManager (many strips, fan-out)
ui.py LedController: device list, color, presets, system tray
colorpicker.py embedded SV-square + hue-bar color picker
icon.py app icon + dynamic tray icon
protocol.py pure command encoders
Not affiliated with the makers of ELK-BLEDOM / MELK devices.