Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
2.4 KiB
小程序直连与自动蓝牙配网
小程序目录:C:\Users\19926\WeChatProjects\peibanzhushou,AppID wxfead7715305e1115。
开发后端:https://121.41.46.238。使用已有服务器,不使用云开发。
用户操作
- 登录家庭账号,打开设备 → 添加设备。
- 长按设备屏幕底部 3 秒,搜索并选择 EchoEar。
- 输入 2.4 GHz Wi-Fi 名称、密码,点击绑定设备。
- 按设备屏幕提示轻点确认,等待绑定完成。
不再要求用户输入设备编号、标签配网密码或点击“验证设备身份”。单个使用者自动选择;多个使用者时选择归属。 管理账号可以登录查看管理数据,但不能冒用家庭身份绑定设备。
实现
原生登录接口见 openapi/mini.yaml。手机号密码和验证码沿用原账号体系;短期令牌由服务器签发并验证,存储中不保留密码。网页 Cookie/CSRF 不变。
BLE 服务和原有 20 字节分片不变:帧为 type:uint8 + length:uint16LE + payload。 新增 type=2 自动连接引导帧;该帧只能作为当前连接的首条请求,且只允许一次。type=0 为原 Security2 握手,type=1 为加密业务 JSON。
引导请求只有 client_nonce(安全随机16字节,无填充Base64URL)。设备返回 device_id,model,key_version,client_nonce,server_nonce,proof,其中 server_nonce 同样为随机16字节。
令 T 为五行 device_id\nmodel\nkey_version\nclient_nonce\nserver_nonce,无末尾换行。
proof = HMAC-SHA256(factory_key, "BLE-PROOF1\n" + T),小写十六进制。
session_password = HMAC-SHA256(factory_key, "BLE-PASS1\n" + T),小写十六进制。
服务器核验设备证明和当前家庭权限,通过 HTTPS 返回本次连接的 session_password;设备本地生成对应 SRP salt/verifier。小程序自动完成 Security2。密码不经过明文蓝牙,工厂密钥从不离开设备和后端。
随后自动 get_info,再发送加密的 cmd:configure,wifi_ssid,wifi_password,bind_token。平台账号密码绝不发送给设备。设备实体确认、DEVREQ1 签名绑定、持久化与重试保持原实现。云端成功不等于语音服务已开通。
无备案域名期间仅用于开发联调:微信开发者工具关闭域名校验,iPhone 使用真机调试;不能据此视为正式上线可用。正式发布仍需配置合法 HTTPS 域名及微信隐私声明。