Commit Graph

71 Commits

Author SHA1 Message Date
stswangzhiping
12366790d2 fix(network): auto-detect wired iface and ping via -I for hasInternet
- Scan sysfs for carrier when CLAWD_ETH_IFACE unset (end0/enp* etc.)
- Explicit CLAWD_ETH_IFACE still pins a single interface
- Ping fallback uses -I wired iface when default route fails (e.g. AP on wlan)
- Exclude can/docker/veth/wl* and similar from auto scan
- Clarify client log when waiting for WAN

Made-with: Cursor
2026-03-27 14:30:23 +08:00
stswangzhiping
884b0dc50a feat(openclaw): persist config as ~/.openclaw/openclaw.json
- Read gateway token/port via JSON.parse (same structure as former YAML)
- Update claw.cutos.ai origin by replacing URLs in JSON string fields
- Export resolveOpenclawConfigFile() for frpc + client
- Drop js-yaml dependency
- install: ExecStartPre touches openvfd only if nodes exist (3528-friendly)
- Add tools/deploy-rsync.sh for syncing /opt/clawd over SSH

Made-with: Cursor
2026-03-27 13:49:23 +08:00
stswangzhiping
837cb8865f feat: BtMonitor 监控 bluetoothctl 状态驱动 BT 指示灯
新增 lib/bt-monitor.js:
- 每 3 秒轮询 bluetoothctl show + hcitool con
- connected(ACL 连接存在)→ 常亮
- scanning/connecting(Discovering: yes)→ 闪烁
- 无 adapter / Powered: no / 静止 → 熄灭

client.js:启动时开启 BtMonitor,stop() 时清理
provisioning.js:移除所有 led.bt 调用,BT 灯统一由 BtMonitor 管理

Made-with: Cursor
2026-03-24 23:14:02 +08:00
stswangzhiping
dcc20e2cad fix: BT 灯仅在搜索热点和连接热点时闪烁
等待 NM 自动重连已保存 WiFi 不属于 BLE 搜索/连接阶段,
该阶段 BT 灯保持熄灭,不再闪烁。

Made-with: Cursor
2026-03-24 23:00:07 +08:00
stswangzhiping
37e93c66eb feat: 添加蓝牙指示灯(b6)控制
led.js: 新增 BtLed 类,路径 /sys/devices/platform/openvfd/attr/b6
  - blink() AP 配网进行中
  - on()    配网成功 / WiFi 已连接
  - off()   蓝牙不工作 / 初始/停止状态

provisioning.js: 各配网状态同步驱动 BT 灯
  - AP 模式 / 等待自动重连 → 闪烁
  - WiFi 连接成功 → 常亮
  - stop() → 熄灭

Made-with: Cursor
2026-03-24 22:58:10 +08:00
stswangzhiping
935d5ba176 fix: 用 js-yaml 正确解析 config.yaml 获取 dashboard token
替换正则提取方式,使用 js-yaml 解析 YAML 文件,
通过 config.gateway.auth.token 和 config.gateway.port 读取字段。

Made-with: Cursor
2026-03-24 17:00:33 +08:00
stswangzhiping
cdb2ddc688 fix: getDashboardInfo 改为读取 config.yaml
openclaw 配置文件路径从 openclaw.json 迁移到
config/config.yaml,用正则提取 token 和 port 字段。

Made-with: Cursor
2026-03-24 16:47:35 +08:00
stswangzhiping
7c03a59c57 refactor: 重构 OpenClaw config.yaml 更新逻辑
- _configureOpenClaw 改名为 _updateOpenClawOrigin(targetId)
- active 时传真实 claw_id,inactive 时传 '0000'
- 每次 _applyStatus(含 status_update)都调用,文件无变化则幂等跳过
- 有变化时 pkill -9 -x openclaw-gateway,不再依赖 openclaw CLI 或 systemctl --user
- 移除 _openClawConfigured 标志位

Made-with: Cursor
2026-03-24 16:22:05 +08:00
stswangzhiping
4a1a2de300 fix: only run configureOpenClaw once per clawId, not on every WS reconnect
Made-with: Cursor
2026-03-24 14:31:31 +08:00
stswangzhiping
029f7fe0a9 fix: edit openclaw config.yaml directly and restart as sts user
Made-with: Cursor
2026-03-24 14:07:22 +08:00
stswangzhiping
1a63e90055 fix: use full path to find openclaw binary for root service
Made-with: Cursor
2026-03-24 13:13:00 +08:00
stswangzhiping
cefbab28b7 feat: configure openclaw allowedOrigins on activation
Made-with: Cursor
2026-03-24 11:38:58 +08:00
stswangzhiping
ffa13b7c81 fix: captive portal 改用 IP 地址 10.42.0.1 替代域名
Made-with: Cursor
2026-03-22 08:04:20 +08:00
stswangzhiping
4716cc9820 fix: replace unstable disk serial with wired MAC for hardware fingerprint
Made-with: Cursor
2026-03-22 07:38:05 +08:00
stswangzhiping
86859a5e0d fix: 过滤AP热点IP,改用checkip.amazonaws.com获取外网IP,新增ipplus360地理位置
Made-with: Cursor
2026-03-21 09:20:00 +08:00
stswangzhiping
878f3592bf feat: connect 消息上报 local_ip 和 external_ip
Made-with: Cursor
2026-03-21 08:18:27 +08:00
stswangzhiping
af5248f2a6 fix: emit network-ready immediately when wired internet available, setup AP async
Made-with: Cursor
2026-03-20 08:41:39 +08:00
stswangzhiping
108bea4ed7 fix: use fixed 5s retry on cert-not-yet-valid to avoid 70s exponential backoff before NTP sync
Made-with: Cursor
2026-03-20 08:34:53 +08:00
stswangzhiping
e94e2bb10c fix: add AP net monitor to detect cable unplug within 5s, reduce ping interval to 10s
Made-with: Cursor
2026-03-20 08:14:31 +08:00
stswangzhiping
5ba8b7bffa fix: fast-path hasInternet() via carrier check to avoid nmcli cache delay
Made-with: Cursor
2026-03-20 08:00:25 +08:00
stswangzhiping
08fa4eefaa feat: skip WS in AP+no-internet, poll every 5s until network available
Made-with: Cursor
2026-03-20 07:43:51 +08:00
stswangzhiping
c13ed3ba6d fix(vfd): use isApMode() instead of hasInternet() to decide AP vs Err0
Made-with: Cursor
2026-03-19 23:45:16 +08:00
stswangzhiping
8f158eeeb2 fix: turn off LEDs on service start, suppress Err0 before first WS success
Made-with: Cursor
2026-03-19 23:27:42 +08:00
stswangzhiping
9b4287db1d feat(vfd): showConn blink on WS connecting, showErr0 on VPS unreachable
Made-with: Cursor
2026-03-19 23:17:08 +08:00
stswangzhiping
53b9804c72 feat(led): showErr(code) + WS fail>=3 shows ERRa or AP on VFD
Made-with: Cursor
2026-03-19 22:44:56 +08:00
stswangzhiping
e36bec8660 refactor(led): startup all-off, AP shows VFD, WS close no VFD change
Made-with: Cursor
2026-03-19 22:08:47 +08:00
stswangzhiping
d68d673cdc perf(heartbeat): 10s interval, collect metrics every 3rd beat (30s)
Made-with: Cursor
2026-03-19 09:58:48 +08:00
stswangzhiping
5824cf089a feat(ws): unified status_update handler, extract _applyStatus()
Made-with: Cursor
2026-03-19 09:43:29 +08:00
stswangzhiping
16f82d6ab8 feat(ws): handle activated message from server, switch to APPS+time
Made-with: Cursor
2026-03-19 09:24:10 +08:00
stswangzhiping
fba9d401c2 feat(display): PIN 显示时加闪烁效果(亮1s灭0.5s)
Made-with: Cursor
2026-03-19 09:13:07 +08:00
stswangzhiping
b4fa850445 feat(display): PIN 改为 4 位,showPinMiddle4 → showPin
Made-with: Cursor
2026-03-19 08:57:44 +08:00
stswangzhiping
ce7f9f028e fix(display): 改用 #m2 模式显示 PIN 数字,修复 #m3 不支持数字导致的显示错误
Made-with: Cursor
2026-03-19 08:52:52 +08:00
stswangzhiping
33046948b9 fix(display): 用 printf 代替 echo,修复 VFD 写入失败及数字显示偏移问题
Made-with: Cursor
2026-03-19 08:37:00 +08:00
stswangzhiping
e887f5b8e2 fix(display): 不在 ws.open 时 showTime,避免覆盖未激活时的 PIN 显示
Made-with: Cursor
2026-03-19 07:44:28 +08:00
stswangzhiping
57c0a1b6f8 feat(display): 未激活+连网时 VFD 显示 PIN 码中间4位
Made-with: Cursor
2026-03-19 07:37:57 +08:00
stswangzhiping
cf2973946f fix(captive): 密码默认隐藏,眼睛图标初始为半透明
Made-with: Cursor
2026-03-18 21:54:40 +08:00
stswangzhiping
7d3477454c feat(captive): 密码框增加眼睛图标切换可见性
Made-with: Cursor
2026-03-18 21:35:28 +08:00
stswangzhiping
9e7dcada05 feat(captive): 将WiFi 网络改为请选择下列WiFi 网络
Made-with: Cursor
2026-03-18 21:26:58 +08:00
stswangzhiping
959a2b67f2 refactor(display): tie VFD display to WS connection state only
Made-with: Cursor
2026-03-18 21:17:36 +08:00
stswangzhiping
a737101c2e fix(display): use execSync shell pipe instead of fs.writeFileSync to avoid EINVAL
Made-with: Cursor
2026-03-18 21:11:22 +08:00
stswangzhiping
9da4cd0aa1 feat: VFD display shows AP when disconnected, time when connected
Made-with: Cursor
2026-03-18 21:10:14 +08:00
stswangzhiping
a0f767f267 fix(led): swap SETUP/APPS paths, WiFi LED off in AP mode
Made-with: Cursor
2026-03-18 20:56:49 +08:00
stswangzhiping
90bba5f348 feat: add SETUP/APPS status LEDs (b2/b1), toggle on activation
Made-with: Cursor
2026-03-18 20:25:54 +08:00
stswangzhiping
b95e909d48 fix(led): use log.info for LED state, show write errors and hasInternet failures
Made-with: Cursor
2026-03-18 20:07:31 +08:00
stswangzhiping
875e69a454 feat: add WiFi LED indicator (openvfd b5)
Made-with: Cursor
2026-03-18 19:47:20 +08:00
stswangzhiping
d66558c9de fix: read dashboard token from ~/.openclaw/openclaw.json instead of running openclaw dashboard command
Made-with: Cursor
2026-03-18 14:00:57 +08:00
stswangzhiping
5f5b976f5b fix: split su command into separate args for ttyd
Made-with: Cursor
2026-03-16 16:21:11 +08:00
stswangzhiping
9dc559a43a fix: run ttyd shell as normal user (sts) instead of root
Made-with: Cursor
2026-03-16 16:15:13 +08:00
stswangzhiping
17d0711f67 ui: redesign WiFi list with signal bars and cleaner layout
- Replace <select> with scrollable list of clickable items
- Show signal strength as 4-bar icon instead of percentage text
- Remove security info from parentheses, show lock icon only
- Smaller font size for compact mobile display

Made-with: Cursor
2026-03-16 13:11:23 +08:00
stswangzhiping
c6f55c8c15 fix: pre-scan WiFi before entering AP mode
wlan0 cannot scan while in AP mode (hardware limitation).
Now scan nearby networks before starting hotspot and cache
the results for the captive portal page.

Made-with: Cursor
2026-03-16 13:04:00 +08:00