# xyj-device-test **Repository Path**: skapi/xyj-device-test ## Basic Information - **Project Name**: xyj-device-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-24 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 测试洗衣机面板 用于测试洗衣机远程控制能力的静态页面工具,支持后台账号登录、洗衣机型号选择、传输设备选择、MQTT 设备连接、远程指令发送、状态查询与上报解析。 ## 技术栈 - **前端框架**:纯 HTML / CSS / JavaScript(无构建工具) - **UI 组件库**:[Layui](https://layui.dev/) - **MQTT 客户端**:[mqtt.js](https://github.com/mqttjs/MQTT.js)(前端直连 Broker) - **后端接口**:RESTful API(JSON),鉴权方式为 Bearer Token ## 项目结构 ``` ├── config/ │ └── app-config.json # API 地址配置 ├── docs/ │ ├── 协议/ # 洗衣机通信协议文档(PDF) │ ├── 设计文档/ # 页面设计文档与设计图 │ └── 需求文档/ # 项目需求文档 ├── js/ │ └── mqtt.min.js # MQTT.js 客户端库 ├── layui/ # Layui 组件库(CSS / JS / 字体) ├── login.html # 登录页 ├── index.html # 首页(型号与传输设备选择) ├── detail.html # 详情页(设备连接、指令发送、状态解析、调试日志) └── .gitignore ``` ## 页面说明 ### 登录页 (`login.html`) - 后台账号密码登录 - 登录成功后缓存 Token,后续请求自动携带 `Authorization: Bearer {token}` - Token 失效时自动跳转回登录页 ### 首页 (`index.html`) - 选择传输设备(华允 / 塔石) - 从远程接口动态加载洗衣机型号列表 - 选择型号后进入详情页 ### 详情页 (`detail.html`) 核心测试工作台,包含以下模块: | 模块 | 功能 | | --- | --- | | 设备连接区 | 输入设备编号,获取 MQTT 配置并建立前端直连,订阅/发布主题自动计算 | | 功能与指令区 | 动态加载一级/二级功能列表,支持扩展参数设置,获取并发送启动指令 | | 状态展示区 | 实时展示设备在线状态、运行状态、模式、阶段、故障、剩余时间、门锁、DTU 信息等 | | 调试日志区 | 记录 MQTT 连接、订阅、发送、接收、解析、错误等全链路日志 | ## MQTT 主题规则 根据传输设备类型自动计算主题: | 传输设备 | 发送主题(前端 -> 设备) | 接收主题(设备 -> 前端) | | --- | --- | --- | | 华允 | `wash/hy/{deviceNo}/submsg` | `wash/hy/{deviceNo}/pubmsg` | | 塔石 | `wash/ts/{deviceNo}/submsg` | `wash/ts/{deviceNo}/pubmsg` | ## API 配置 API 基础地址按以下优先级解析: 1. URL 参数 `?apiBase=https://xxx.com`(最高优先级,同时缓存到 localStorage) 2. 配置文件 `config/app-config.json` 中的 `apiBase` 字段 3. localStorage 缓存值 4. 默认值 `https://bak.api.xyj.dev.aiksbox.com` 修改 `config/app-config.json` 即可切换后端环境: ```json { "apiBase": "http://192.168.9.9:9000" } ``` ## 主要接口 | 功能 | 方法 | 路径 | | --- | --- | --- | | 后台登录 | POST | `/api/v1/admin/login` | | 获取 MQTT 配置 | POST | `/api/v1/admin/xyj-test/mqtt-config` | | 获取洗衣机型号 | POST | `/api/v1/admin/xyj-test/washing-types` | | 获取一级功能 | POST | `/api/v1/admin/xyj-test/primary-functions` | | 获取二级功能 | POST | `/api/v1/admin/xyj-test/secondary-functions` | | 获取启动指令 | POST | `/api/v1/admin/xyj-test/get-command` | | 获取查询指令 | POST | `/api/v1/admin/xyj-test/get-query-command` | | 解析上报报文 | POST | `/api/v1/admin/xyj-test/parse-back-command` | 除登录接口外,其他接口均需携带 `Authorization: Bearer {token}` 请求头。 ## 本地运行 本项目为纯静态页面,无需构建,直接使用任意 HTTP 服务器托管即可: ```bash # 使用 Python python3 -m http.server 8080 # 使用 Node.js (npx) npx serve . # 或直接部署到 Nginx / Apache 的 Web 目录 ``` 访问 `http://localhost:8080/login.html` 即可开始使用。 ## 注意事项 - 本项目仅用于内部测试环境,不适用于生产部署 - MQTT 连接信息由远程接口动态下发,前端不硬编码敏感配置 - 不同洗衣机协议型号的功能差异由后端接口驱动,前端保持通用 - 详细需求与设计文档见 `docs/` 目录