Files
lanyuanxiaoyao 63dc55fa5a refactor: 重构为单向生成架构,CLI 零参数可用
- 迁移 examples/rules/ 到 src/rules/,resources/devices.json 到 src/devices.json
- 迁移 resources/fetch-devlist.js 到 src/tools/fetch-devlist.ts 并改造为 ESM
- CLI 简化为零参数:bun run pack 自动编译并输出 dist/miot_{timestamp}.bak
- 移除备份合并能力:删除 mergeCompiledRules、RuleReplaceStrategy、dry-run、replace 参数
- 编译器简化为从零生成,不再支持 baseBackup 合并
- 新增 fetch-devices 命令用于从中枢网关更新设备清单
- 新增 bn.js、elliptic 依赖
- 更新测试路径引用,移除依赖合并逻辑的测试用例
- 更新 README.md 反映新项目结构和命令
2026-05-08 00:03:27 +08:00

23 lines
1.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <ip> <passcode>` 命令
- **THEN** 系统 SHALL 连接 `ws://<ip>/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`