diff --git a/lib/client.js b/lib/client.js index 43ae5f1..1159ab6 100644 --- a/lib/client.js +++ b/lib/client.js @@ -125,6 +125,7 @@ class ClawClient { _connect() { if (this._stopped) return; + if (this._wsFailCount < 3) led.display.showConn(); log.info('clawd', `正在连接 ${this._cfg.server} ...`); const ws = new WebSocket(this._cfg.server, { handshakeTimeout: 10_000, @@ -160,7 +161,7 @@ class ClawClient { log.warn('clawd', `连接断开 (${code}),失败次数=${this._wsFailCount},${this._backoff / 1000}s 后重连...`); if (this._wsFailCount >= 3) { if (hasInternet()) { - led.display.showErr('a'); // 有网但 VPS 不可达 + led.display.showErr0(); // 有网但 VPS 不可达 } else { led.display.showAP(); // 无网,AP 模式 } diff --git a/lib/led.js b/lib/led.js index ff9a09b..8d8f9c4 100644 --- a/lib/led.js +++ b/lib/led.js @@ -108,16 +108,25 @@ class Display { log.info('display', '显示屏 → AP'); } - /** - * 网络错误 → 显示错误码(ERR + 单字母代码) - * code='a' → ERRa(网络正常但 VPS 不可达) - * code='b' → ERRb(预留) - */ - showErr(code = 'a') { + /** WS 连接中(失败次数 < 3)→ 显示 "Conn" 闪烁 */ + showConn() { this._stopBlink(); - const s = ('ERR' + code).slice(0, 4); - this._write('#m3' + s); - log.info('display', `显示屏 → ${s}`); + this._write('#m3Conn'); + log.info('display', '显示屏 → Conn(闪烁)'); + let visible = true; + const blink = () => { + visible = !visible; + this._write(visible ? '#m3Conn' : '#c1'); + this._blinkTimer = setTimeout(blink, visible ? 1000 : 500); + }; + this._blinkTimer = setTimeout(blink, 1000); + } + + /** 网络正常但 VPS 不可达 → 显示 "Err0" */ + showErr0() { + this._stopBlink(); + this._write('#m3Err0'); + log.info('display', '显示屏 → Err0'); } /** 网络已连接 → 显示时间 */