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看板, 云资产清单, 无后门, 智能家居, 物联网, 逆向工具, 逆向工程