mejiasd3v/ha-narwal-cx7
GitHub: mejiasd3v/ha-narwal-cx7
为 Narwal Freo Z Ultra(CX7)扫地机器人提供非官方的 Home Assistant 云端集成,通过逆向 MQTT 协议实现远程控制和状态监测。
Stars: 0 | Forks: 0
# 适用于 Home Assistant 的 Narwal Cloud CX7
用于 Narwal Freo Z Ultra (CX7) 的实验性 Home Assistant 集成和协议工具。
该集成提供了一个 vacuum 实体和电池传感器。启动、停止、暂停、恢复、回充以及实时状态更新使用 Narwal 的云 MQTT 服务。在一次性私有会话引导之后,access token 和 refresh token 会自动轮换。
## 状态
- 测试型号:Freo Z Ultra / CX7
- Home Assistant 集成类型:cloud push
- 实体:vacuum 和电池传感器
- 控制:启动、停止、暂停、恢复、回充
- 依赖项:运行时仅依赖 Python 标准库
- 本地控制:就目前已知的协议而言,CX7 暂不支持
## 安装说明
1. 将 `custom_components/narwal_cloud_cx7` 复制到 Home Assistant 的 `/config/custom_components/` 目录中。
2. 使用以下工作流创建一个私有会话。
3. 将其安装为 `/config/.storage/narwal_cloud_cx7_session.json`,并将其限制为仅限 Home Assistant 进程访问:
chmod 600 /config/.storage/narwal_cloud_cx7_session.json
4. 重启 Home Assistant。
5. 从 **设置 > 设备与服务** 中添加 **Narwal Cloud CX7**。
会话文件必须保持可写状态,因为该集成会以原子方式持久化已轮换的 token。
## 私有会话引导
Narwal 并未针对此用例公开凭据或协议文档。因此,引导过程需要抓取您自己的官方 Android App 会话。切勿分享或提交生成的文件。
要求:
- Android 模拟器,以及通过合法途径获取的 App 构建版本
- `adb`、`mitmproxy`、`frida` 以及 Python 3.11 或更高版本
- 一个测试账号或您自己的 Narwal 账号
启动基础抓包实验室:
```
./scripts/start-emulator.sh
./scripts/start-mitm.sh
./scripts/configure-proxy.sh
```
使用 HTTPDNS 的 App 可能会绕过 Android 代理。解析当前的 Narwal HTTPS 和 MQTT 主机,启动合适的 mitmproxy 反向监听器,并将观察到的目标地址传递给 Frida 抓包助手:
```
./scripts/frida_capture.py \
--https-target \
--mqtt-target
```
在官方 App 中完成身份验证并执行所需的控制操作后,导出私有会话:
```
mitmdump -nr artifacts/captures/app.flow \
-s scripts/export_http_session.py --set termlog_verbosity=error
mitmdump -nr artifacts/captures/mqtt.flow \
-s scripts/export_tcp_streams.py --set termlog_verbosity=error
./scripts/parse_mqtt.py --broker-host
./scripts/merge_http_session.py
```
生成的 `artifacts/captures/narwal-session.json` 包含凭据、设备作用域的 topic 以及抓取到的命令 payload。该文件会被 Git 忽略,并且以 `0600` 权限模式写入。
完成后停止抓包:
```
./scripts/clear-proxy.sh
```
## 开发说明
```
python3 -m unittest discover -s tests -v
ruff check .
python3 -m compileall -q narwal_cloud custom_components scripts
```
协议发现和已知限制记录在 [`docs/protocol.md`](docs/protocol.md) 中。
## 安全性
抓取的数据可能包含账号 token、设备 ID、地图、Wi-Fi 元数据和命令 payload。在收集或分享诊断信息之前,请查阅 [`SECURITY.md`](SECURITY.md)。
## 许可证
MIT
标签:Home Assistant, 云服务对接, 抓包代理, 智能家居, 物联网集成, 逆向工具