Lotus LED
Управление LED-лентами
Управление LED-лентами BLEDOM по Bluetooth — с реверс-инжинирингом протокола, на Rust и Python.Controlling BLEDOM LED strips over Bluetooth — with protocol reverse-engineering, in Rust and Python.Керування LED-стрічками BLEDOM через Bluetooth — з реверс-інжинірингом протоколу, на Rust і Python.
О проектеOverviewПро проєкт
Дешёвые LED-ленты BLEDOM / ELK-BLEDOM / Lotus Lantern продаются повсюду, но управляются убогим официальным мобильным приложением. Я решил это исправить.
Сначала был реверс-инжиниринг: я разобрал по байтам их протокол поверх Bluetooth LE — как кодируются цвет, яркость, режимы. Затем на этой основе написал собственное управление: библиотека и CLI на Rust, и отдельный контроллер на Python. Rust-версия кросс-компилируется в Windows-exe прямо из WSL.
В результате лента умеет куда больше, чем в родном приложении: синхронизация со звуком через FFT, режим Ambilight по экрану, тепловая карта нагрузки системы, сцены, рассветы и таймеры сна. Полный цикл — от вскрытия чужого протокола до удобного инструмента.
Cheap BLEDOM / ELK-BLEDOM / Lotus Lantern LED strips are sold everywhere but controlled by a miserable official mobile app. I decided to fix that.
First came the reverse engineering: I dissected their Bluetooth LE protocol byte by byte — how colour, brightness and modes are encoded. Then on that basis I wrote my own control: a library and CLI in Rust, and a separate Python controller. The Rust version cross-compiles to a Windows .exe right from WSL.
As a result the strip can do far more than in the native app: audio sync via FFT, an Ambilight mode following the screen, a system-load heatmap, scenes, sunrises and sleep timers. A full cycle — from cracking someone's protocol to a convenient tool.
Дешеві LED-стрічки BLEDOM продаються всюди, але керуються убогим офіційним застосунком.
Спершу був реверс-інжиніринг: я розібрав їхній Bluetooth LE протокол по байтах. Потім написав власне керування: бібліотека та CLI на Rust, окремий контролер на Python.
У результаті стрічка вміє значно більше: синхронізація зі звуком через FFT, Ambilight, теплова карта навантаження, сцени, світанки й таймери сну.
ОсобенностиFeaturesОсобливості
- Реверс-инжиниринг BLE-протокола лент BLEDOM
- Библиотека и CLI на Rust, контроллер на Python
- Синхронизация со звуком через FFT
- Режим Ambilight по экрану и тепловая карта нагрузки
- Сцены, рассветы, таймеры сна
- Кросс-компиляция в Windows-exe из WSL
- Reverse-engineering of the BLEDOM strips' BLE protocol
- A Rust library and CLI, a Python controller
- Audio sync via FFT
- An Ambilight screen mode and a system-load heatmap
- Scenes, sunrises, sleep timers
- Cross-compilation to a Windows .exe from WSL
- Реверс-інжиніринг BLE-протоколу стрічок BLEDOM
- Бібліотека та CLI на Rust, контролер на Python
- Синхронізація зі звуком через FFT
- Режим Ambilight та теплова карта навантаження
- Сцени, світанки, таймери сну
- Крос-компіляція у Windows-exe з WSL