labsensacional/mrstar-ble-light
GitHub: labsensacional/mrstar-ble-light
通过逆向工程的 GATT 协议,用 Python 直接控制廉价 MR Star / GATT-DEMO RGB BLE 灯具,无需厂商 App 或云端。
Stars: 0 | Forks: 0
# mrstar-ble-light
使用 Python 控制廉价的**“MR Star” / GATT-DEMO RGB BLE 灯** —— 无需应用,无需云端。这是对这些灯具使用的未公开 GATT 协议进行逆向工程的结果。
如果你的 RGB 灯带/灯具通过蓝牙广播为 **`GATT-DEMO`**,且其 Android 应用为 **“MR Star”**(`com.frok.mrstar`),本项目可以直接控制它。
55 Colors in HSV
```
完整分析(反编译的命令表及其发现过程):参见
[`docs/ble_reverse_engineering.md`](docs/ble_reverse_engineering.md)。
## 5 秒内体验(无需灯具,无需 Bluetooth)
```
python3 examples/protocol_demo.py
```
打印每个命令的原始帧字节,并展示 RGB→HSV 转换 —— 即真实的控制器通过 BLE 写入的确切字节。
## 安装
```
pip install bleak
```
## 搭配真实灯具使用
```
python3 examples/scan.py # find your light's address
python3 mrstar_light.py on
python3 mrstar_light.py color 255 120 0 # RGB; auto-converted to HSV
python3 mrstar_light.py brightness 50
python3 mrstar_light.py mode running
python3 mrstar_light.py speed 40
python3 mrstar_light.py direction reverse
python3 mrstar_light.py list-modes
```
### 选择设备
没有硬编码 MAC 地址。地址按以下顺序解析:
1. `--mac AA:BB:CC:DD:EE:FF`
2. `MRSTAR_MAC` 环境变量
3. 自动扫描第一个 `GATT-DEMO` 设备
```
python3 mrstar_light.py --mac AA:BB:CC:DD:EE:FF green
export MRSTAR_MAC=AA:BB:CC:DD:EE:FF # then omit --mac
```
## 作为库使用
```
import asyncio
from mrstar_light import build_color_hsv, build_power, send
async def main():
addr = "AA:BB:CC:DD:EE:FF"
await send(addr, build_power(True), build_color_hsv(255, 0, 128))
asyncio.run(main())
```
所有 `build_*` 函数都是纯函数(返回 `bytes`),因此无需任何 Bluetooth 协议栈即可轻松测试或重用。
## 注意事项
- 控制器在断电时会忽略颜色/效果更改,因此 CLI 会在发送非电源命令前自动发送“开机”指令。
- 网络传输中的颜色格式为 HSV(色调 0–360,饱和度 0–1000);系统已为你处理了 RGB→HSV 转换。
- 已在 Linux 上通过 `bleak` 配合 BlueZ 进行了测试;由于 `bleak` 是跨平台的,因此 macOS / Windows 理论上也能正常工作。
## 许可证
MIT —— 参见 [LICENSE](LICENSE)。

标签:Python, 云资产清单, 无后门, 智能家居, 物联网, 硬件控制, 蓝牙, 计算机取证, 逆向工具, 逆向工程