# Capability: Fetch Devices Tool ## Purpose Provide a standalone CLI tool to fetch device lists from a Mi Home central hub gateway via ECJPAKE-encrypted WebSocket connection and write the result to `src/devices.json`. ## Requirements ### Requirement: 设备清单抓取工具 系统 SHALL 提供独立的 CLI 工具,通过 ECJPAKE 加密连接中枢网关 WebSocket 接口,调用 `getDevList` API 获取设备清单,并将结果直接写入 `src/devices.json`。 #### Scenario: 通过 IP 和 passcode 抓取设备 - **WHEN** 用户执行 `bun run fetch-devices ` 命令 - **THEN** 系统 SHALL 连接 `ws:///centrallinkws/`,完成 ECJPAKE 密钥协商和加密通道建立,调用 `getDevList` API,将结果以 `{ fetchedAt, url, count, devList }` 格式写入 `src/devices.json` #### Scenario: passcode 格式校验 - **WHEN** 用户输入的 passcode 不是 6 位数字 - **THEN** 系统 SHALL 报错并退出,不写入文件 #### Scenario: 连接失败处理 - **WHEN** 网关连接超时或 WebSocket 连接失败 - **THEN** 系统 SHALL 报错并退出,不写入文件,不修改已有的 `src/devices.json`