# ESP32设备绑定功能使用指南 ## 📋 功能概述 ESP32音乐播放器现在支持绑定到用户账号,实现个性化功能: - ✅ 设备与用户账号绑定 - ✅ 安全的Token认证机制 - ✅ 通过语音命令完成绑定 - ✅ 为后续歌单功能奠定基础 --- ## 🚀 快速开始 ### **第1步:启动服务器** ```powershell cd d:\esp32-music-server\Meow\MeowEmbeddedMusicServer go run . ``` 服务器将在 `http://localhost:2233` 启动 --- ### **第2步:用户登录** 访问:`http://localhost:2233` 使用测试账号登录: - 用户名:`test` - 密码:`123456` --- ### **第3步:生成绑定码** **方式1:使用命令行工具(临时)** ```powershell # 向服务器请求生成绑定码 curl -X POST http://localhost:2233/api/device/generate-code ` -H "Content-Type: application/json" ` -H "Cookie: session_token=YOUR_SESSION_TOKEN" ``` **方式2:使用浏览器控制台(推荐)** 1. 登录后按 `F12` 打开开发者工具 2. 切换到 **Console** 标签 3. 输入以下代码: ```javascript fetch('/api/device/generate-code', { method: 'POST', headers: {'Content-Type': 'application/json'} }) .then(r => r.json()) .then(data => { console.log('绑定码:', data.code); alert('绑定码:' + data.code + '\n有效期:5分钟'); }); ``` 4. 记下显示的6位数字绑定码,例如:`123456` --- ### **第4步:ESP32端绑定** 对ESP32说: ``` "小智,绑定设备,绑定码123456" ``` 或者: ``` "小智,bind device, binding code is 123456" ``` ESP32会回复: ``` ✅ 设备绑定成功! 已绑定到用户: test ``` --- ### **第5步:验证绑定状态** 对ESP32说: ``` "小智,查询设备状态" ``` ESP32会显示: ``` 📱 设备信息: MAC地址: AA:BB:CC:DD:EE:FF 绑定状态: ✅ 已绑定 绑定用户: test 服务器验证: ✅ 通过 ``` --- ## 🔧 高级功能 ### **解绑设备** 对ESP32说: ``` "小智,解绑设备" ``` ### **自定义设备名称** 对ESP32说: ``` "小智,绑定设备,绑定码123456,设备名称客厅音响" ``` --- ## 📊 数据存储 ### **服务器端** 设备信息存储在:`d:\esp32-music-server\Meow\MeowEmbeddedMusicServer\devices.json` ```json { "devices": { "AA:BB:CC:DD:EE:FF": { "mac": "AA:BB:CC:DD:EE:FF", "username": "test", "device_name": "ESP32音乐播放器", "token": "a1b2c3d4e5f6...", "bind_time": "2025-11-24T16:00:00Z", "last_seen": "2025-11-24T16:30:00Z", "is_active": true } } } ``` ### **ESP32端** Token存储在NVS(非易失性存储)中: - 命名空间:`device` - Key: `token` - 设备Token - Key: `username` - 绑定的用户名 --- ## 🔌 API文档 ### **1. 生成绑定码** ``` POST /api/device/generate-code Authorization: 需要登录 ``` **响应:** ```json { "success": true, "code": "123456", "expires_in": 300 } ``` --- ### **2. ESP32绑定设备** ``` POST /api/esp32/bind Content-Type: application/json ``` **请求体:** ```json { "mac": "AA:BB:CC:DD:EE:FF", "binding_code": "123456", "device_name": "ESP32音乐播放器" } ``` **响应:** ```json { "success": true, "message": "设备绑定成功", "token": "a1b2c3d4e5f6...", "username": "test" } ``` --- ### **3. 验证设备Token** ``` GET /api/esp32/verify X-Device-Token: a1b2c3d4e5f6... ``` **响应:** ```json { "success": true, "device": { "mac": "AA:BB:CC:DD:EE:FF", "username": "test", "device_name": "ESP32音乐播放器", "bind_time": "2025-11-24T16:00:00Z", "last_seen": "2025-11-24T16:30:00Z" } } ``` --- ## 🧪 测试流程 ### **完整测试步骤** 1. **启动服务器** ```powershell go run . ``` 2. **生成绑定码**(使用浏览器控制台) 3. **ESP32绑定** - 对ESP32说:"小智,绑定设备,绑定码123456" - 观察ESP32日志: ``` [DeviceManager] Starting device binding with code: 123456 [DeviceManager] Sending bind request to: http://... [DeviceManager] Bind request status code: 200 [DeviceManager] Device successfully bound to user: test ``` 4. **查询状态** - 对ESP32说:"小智,查询设备状态" 5. **验证服务器数据** - 检查 `devices.json` 文件是否包含设备信息 6. **测试解绑** - 对ESP32说:"小智,解绑设备" - 再次查询状态,应显示未绑定 --- ## 🐛 故障排除 ### **问题1:绑定码无效** **现象**:ESP32提示"绑定失败" **解决方案**: - 检查绑定码是否输入正确 - 绑定码有效期为5分钟,请重新生成 - 确认网络连接正常 --- ### **问题2:设备已绑定** **现象**:提示"设备已绑定到用户XXX" **解决方案**: - 先解绑设备:对ESP32说"小智,解绑设备" - 或者在服务器端删除 `devices.json` 中的设备记录 --- ### **问题3:网络连接失败** **现象**:ESP32无法连接到服务器 **解决方案**: - 检查ESP32是否连接到WiFi - 确认服务器地址是否正确:`http://http-embedded-music.miao-lab.top:2233` - 检查防火墙设置 --- ## 📝 下一步 绑定功能完成后,可以继续开发: ✅ **阶段1:基础绑定** - 已完成 ⏳ **阶段2:歌单系统** - 待开发 ⏳ **阶段3:Web管理界面** - 待开发 --- ## 💡 提示 - 绑定码每次生成后只能使用一次 - 一个设备只能绑定到一个用户 - Token存储在ESP32的NVS中,断电不丢失 - 可以通过解绑并重新绑定来更换用户 --- **🎉 享受您的个性化ESP32音乐播放器!**