stswangzhiping
fdc1e9fbd3
fix(systemd): pet watchdog when WATCHDOG_USEC missing; StartLimitInterval for old systemd
...
Embedded units may set WatchdogSec but omit WATCHDOG_USEC; SD_NOTIFY_INTERVAL was 0 so no
WATCHDOG=1 was sent and systemd killed the main process after ~60s.
Replace StartLimitIntervalSec with StartLimitInterval= for older systemd (journal warning).
Made-with: Cursor
2026-03-28 14:49:07 +08:00
stswangzhiping
04dd1017bb
fix(network): wired ping probe, AP/WS and systemd notify hardening
...
- Add hasWiredInternetProbe and export; AP mode uses it with hasInternet
- systemd-env: strip NOTIFY_SOCKET from env early; client uses unix_dgram
- Strip NOTIFY_SOCKET from frpc/ttyd spawn env in watchdog and frpc
- WS: pong miss debounce; AP net monitor consecutive-fail debounce
Made-with: Cursor
2026-03-28 14:37:56 +08:00
stswangzhiping
402440aadc
refactor(led): drop openvfd sysfs writes, log [vfd] at debug
...
- WiFi/BT/status/display: no fs/tee; preserve info-level state messages
- install: remove ExecStartPre openvfd init
Made-with: Cursor
2026-03-27 16:31:17 +08:00
stswangzhiping
6ad573e272
Revert "fix(openclaw): always set gateway.origin when updating claw subdomain"
...
This reverts commit 69ac075e8c .
2026-03-27 14:42:53 +08:00
stswangzhiping
69ac075e8c
fix(openclaw): always set gateway.origin when updating claw subdomain
...
- Regex-only replace missed empty/new JSON without existing *.claw.cutos.ai URL
- Also replace wss://*.claw.cutos.ai in string fields
Made-with: Cursor
2026-03-27 14:42:05 +08:00
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