// 手动扫码授权: npm run data:mihome:login // 启动后台 QRlogin, 轮询状态; 出二维码后打印地址, 扫码成功后自动结束. import { startQrLogin, getQrState, checkAuth } from '../server/mihome/client.js' const auth = await checkAuth(true) if (auth.status === 'ok') { console.log('[米家] 已授权有效, 无需重扫 (本地 .cache 凭证可用)') process.exit(0) } await startQrLogin() const started = Date.now() console.log('[米家] 等待扫码... (120s 超时)') for (;;) { const s = getQrState() if (s.qrImageUrl && s.state === 'waiting') { console.log('[米家] 二维码(需米家 App 扫):') console.log(' image: ' + s.qrImageUrl) } if (s.state === 'failed') { console.log('[米家] 扫码失败: ' + (s.lastError || '未知')) process.exit(2) } if (s.done) { console.log('[米家] 扫码成功, 凭证已保存到 server/mihome/.cache/') process.exit(0) } if (!s.running && !s.qrImageUrl) { // 启动即失败(可能直接完成/或没权限) console.log('[米家] 流程结束(无二维码产生), 请检查日志') process.exit(2) } if (Date.now() - started > 150000) { console.log('[米家] 超时, 已停止; 可重跑.') process.exit(3) } await new Promise((r) => setTimeout(r, 2000)) }