fix(led): swap WiFi(play)/LAN(wifi+eth), LAN carrier via CLAWD_ETH_IFACE, faster alarm
- WifiLed drives play; LanLed drives wifi+eth pair (matches panel silkscreen) - hasLanCableCarrier(): CLAWD_ETH_IFACE-only carrier when set (reliable unplug) - LAN poll 1s; config.activated persisted for immediate setApps on boot/reconnect - setApps double vfdOn alarm after 50ms for slow OpenVFD - Clear activated + setSetup on credential errors - install.sh env comment for CLAWD_ETH_IFACE Made-with: Cursor
This commit is contained in:
25
lib/led.js
25
lib/led.js
@@ -2,15 +2,15 @@
|
||||
|
||||
const fs = require('fs');
|
||||
const log = require('./logger');
|
||||
const { hasWiredCarrier } = require('./network');
|
||||
const { hasLanCableCarrier } = require('./network');
|
||||
|
||||
/**
|
||||
* OpenVFD 图标:/sys/class/leds/openvfd/led_on|led_off(写入图标名)。
|
||||
*
|
||||
* 映射:
|
||||
* wifi + eth 同亮/同灭 → 产品 WiFi 灯
|
||||
* 映射(与面板丝印一致:play=WiFi 状态,wifi+eth=有线链路):
|
||||
* play → 产品 WiFi 灯(配网逻辑 on/off/blink)
|
||||
* wifi + eth 同亮/同灭 → LAN(有线插拔,见 hasLanCableCarrier / CLAWD_ETH_IFACE)
|
||||
* alarm → pwr(SETUP=灭 / APPS=亮)
|
||||
* play → lan(有线 carrier)
|
||||
* BT → 无 sysfs,仅日志
|
||||
*
|
||||
* 数码管(AP/Conn/时间等):仍仅 debug 输出,不接 sysfs。
|
||||
@@ -19,7 +19,7 @@ const { hasWiredCarrier } = require('./network');
|
||||
*/
|
||||
|
||||
const BLINK_INTERVAL_MS = 500;
|
||||
const LAN_POLL_MS = 3000;
|
||||
const LAN_POLL_MS = 1000;
|
||||
|
||||
const VFD_BASE = process.env.CLAWD_OPENVFD_PATH || '/sys/class/leds/openvfd';
|
||||
|
||||
@@ -100,8 +100,9 @@ class WifiLed {
|
||||
|
||||
_write(val) {
|
||||
const on = !!val;
|
||||
log.debug('led', `[vfd] WiFi(wifi+eth)<= ${on ? 1 : 0}`);
|
||||
vfdWifiPair(on);
|
||||
log.debug('led', `[vfd] WiFi(play)<= ${on ? 1 : 0}`);
|
||||
if (on) vfdOn('play');
|
||||
else vfdOff('play');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,6 +232,8 @@ class StatusLed {
|
||||
|
||||
setApps() {
|
||||
vfdOn('alarm');
|
||||
// 部分 OpenVFD 驱动单次写入生效慢,短延迟再写一次
|
||||
setTimeout(() => vfdOn('alarm'), 50);
|
||||
log.debug('led', '[vfd] alarm(pwr)<= 1');
|
||||
log.info('led', '状态灯 → APPS(已激活)');
|
||||
}
|
||||
@@ -257,20 +260,20 @@ class LanLed {
|
||||
clearInterval(this._timer);
|
||||
this._timer = null;
|
||||
}
|
||||
vfdOff('play');
|
||||
vfdWifiPair(false);
|
||||
this._current = null;
|
||||
}
|
||||
|
||||
_sync() {
|
||||
const up = hasWiredCarrier();
|
||||
const up = hasLanCableCarrier();
|
||||
if (up) {
|
||||
if (this._current !== 'on') {
|
||||
vfdOn('play');
|
||||
vfdWifiPair(true);
|
||||
this._current = 'on';
|
||||
log.info('led', 'LAN(有线 carrier)→ 亮');
|
||||
}
|
||||
} else if (this._current !== 'off') {
|
||||
vfdOff('play');
|
||||
vfdWifiPair(false);
|
||||
this._current = 'off';
|
||||
log.info('led', 'LAN(有线 carrier)→ 灭');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user