Metrix187/roku-smart-home-api
GitHub: Metrix187/roku-smart-home-api
通过逆向工程 Roku 智能家居云端 API,实现对 BC1000X 灯泡的免 App 控制,提供 CLI 和本地 Web Dashboard。
Stars: 0 | Forks: 0
# roku-smart-home-api
无需 App 即可控制 Roku Smart Home (BC1000X) 灯泡。
这些灯泡是换标的 Wyze color A19s。它们仅支持云端:没有本地 API,并且
无法添加到 Wyze App 中,因此像 ha-wyzeapi 这样的工具无法识别它们。我
使用 mitmproxy 截获了 Roku Smart Home iOS App 的云端调用,并
在一个小型的 Python 脚本中重放了它们。
由 sky 逆向工程。
## 它的功能
支持控制电源、RGB 颜色、白光色温和亮度,已在实体灯泡上验证。
无需 App,也无需刷写固件。
```
python roku_bulb.py # list bulbs
python roku_bulb.py power on
python roku_bulb.py color FF2D00
python roku_bulb.py temp 4000
python roku_bulb.py bright 60
```
还有一个小型的基于标准库的 Web Dashboard (`dashboard.py`),你可以在局域网内运行
并从手机打开:支持每个灯泡的开关、滑块和颜色选择器。
## 工作原理
该 App 与两个云端进行通信。电源控制发送至 Roku
(`iot-devices.prod.mobile.roku.com/devices/{id}/command`)。颜色、亮度和
色温发送至 Wyze (`api.wyzeiot.com/app/v2/auto/run_action_list`),
用于设置灯泡 MAC 地址上的 mesh 属性 P3/P1501/P1502/P1507。Endpoint、payload 和
属性 ID 详见 [PROTOCOL.md](PROTOCOL.md)。
## 设置
这些脚本会从 App 的 mitmproxy 抓包中读取 auth token,因此没有任何内容是
硬编码的。抓取一个会话(参见 [PROTOCOL.md](PROTOCOL.md))并运行
`python roku_bulb.py`。无需第三方包。
## 限制
- 基于云端而非本地:需要互联网,且依赖供应商的后端服务正常运行。
- Token 会过期,且目前没有自动刷新功能,因此你偶尔需要重新抓取。
- 非官方 API,因此只要 Roku 或 Wyze 更改了其后端,它随时可能失效。
## 许可证
MIT,详见 [LICENSE](LICENSE)。仅供个人/研究使用,与 Roku 或
Wyze 无关。请在你拥有的硬件上使用。
标签:API, Python, Web看板, 云资产清单, 无后门, 智能家居, 物联网, 逆向工具, 逆向工程