# luci-app-led-scheduler 0.3.0 ## 0.3.0 - 增加 OpenWrt 23.05 / 24.10 兼容。 - OpenWrt 25.12 构建 `.apk`。 - OpenWrt 24.10 / 23.05 构建 `.ipk`。 - 包仍为 `all` 架构,因此同一 OpenWrt 系列的产物不绑定 x86、ARM、MIPS 等 CPU 架构。 - 同时兼容两代 ucitrack: - OpenWrt 24.10 / 25.12:`/usr/share/ucitrack/*.json` - OpenWrt 23.05:`/etc/config/ucitrack` - LuCI 通知兼容: - 24.10+ 使用 `addTimeLimitedNotification()` - 23.05 自动退回 `addNotification()` + JavaScript 定时关闭。 - 仓库新增 `.gitea/workflows/build.yml`,一次 CI 同时生成 APK 与 IPK。 ### CI 构建矩阵 | OpenWrt | 包格式 | SDK target | Package arch | | --- | --- | --- | --- | | 25.12.0 | `.apk` | x86/64 | `all` | | 24.10.8 | `.ipk` | x86/64 | `all` | | 23.05.5 | `.ipk` | x86/64 | `all` | 这里故意使用 x86/64 SDK:本项目没有原生二进制,`LUCI_PKGARCH:=all`, 因此 CI 不需要为每一种 CPU 架构重复构建。 ## 0.2.4 - 修复无 RTC / 开机时间尚未完成 NTP 同步时,重启后 LED 可能错误保持关闭的问题。 - 开机先恢复 OpenWrt 原生 LED 状态。 - 只有系统时间可信时才立即按计划判断。 - 新增 `/etc/hotplug.d/ntp/90-led-scheduler`,在 NTP `step` / `stratum` 事件后重新执行 `led-control apply`。 - 白天重启不会因为假时间误关灯;夜间重启会在 NTP 校时后按真实时间自动熄灯。 ## 0.2.3 - 安装/升级阶段主动执行 `chmod 0755`,避免自定义解压/构建流程丢失 Unix 可执行位后导致 `/etc/init.d/led-scheduler: Permission denied`。 - 同时确保 `/usr/bin/led-control` 具备执行权限。 - 保留 0.2.2 的 ucitrack 自动注册和限时通知修复。 ## 0.2.2 - 修复首次安装后 `ucitrack` 未重新扫描,导致 LuCI 保存配置但 cron 不自动更新的问题。 - 安装/升级后按顺序执行: 1. `led-scheduler enable` 2. `ucitrack restart` 3. `rpcd reload` 4. `led-scheduler restart` - 手动控制成功通知 3 秒后自动消失。 - 操作失败通知 6 秒后自动消失。 - Makefile 补全 OpenWrt buildroot signature。 这个版本只负责 LED 的“定时”,不再自己维护 WAN/LAN 的正常工作方式。 ## 设计 OpenWrt 原生页面: ```text 系统 -> LED 配置 ``` 继续负责: - WAN / LAN 对应哪个 sysfs LED - trigger(例如 netdev) - 网口绑定、Link/TX/RX 等正常行为 本插件: ```text 系统 -> LED 定时 ``` 只负责: ```text 23:00 -> 临时关闭所选 LED 07:00 -> /etc/init.d/led restart ``` 恢复后 LED 会重新按照 `/etc/config/system` 中的原生配置运行。 ## 默认配置 ```uci config scheduler 'main' option enabled '0' option off_time '23:00' option on_time '07:00' option all_system_leds '1' ``` 默认不启用定时。 ## 页面功能 - 启用 LED 定时 - 关闭时间 / 恢复时间 - 控制全部“系统 -> LED 配置”中的 LED - 或选择部分 LED - 立即关闭 - 立即恢复 - 按当前时间应用 - 重新同步 cron - 显示系统 LED 的名称、sysfs、trigger ## 直接复制到路由器测试 ```sh scp -r root/* root@192.168.2.1:/ scp -r htdocs/* root@192.168.2.1:/www/ ``` 然后: ```sh ssh root@192.168.2.1 chmod +x /usr/bin/led-control /etc/init.d/led-scheduler /etc/init.d/led-scheduler enable rm -f /tmp/luci-indexcache.* rm -rf /tmp/luci-modulecache/ /etc/init.d/rpcd restart /etc/init.d/led-scheduler restart ``` 重新登录 LuCI,进入: ```text 系统 -> LED 定时 ``` ## SSH 调试 ```sh /usr/bin/led-control list /usr/bin/led-control selected /usr/bin/led-control status /usr/bin/led-control off /usr/bin/led-control on /usr/bin/led-control sync ``` R2S Plus 当前预计: ```text WAN wan_led netdev LAN lan_led netdev ``` ## 编译 放入自定义 feed 后: ```sh ./scripts/feeds update myfeed ./scripts/feeds install -p myfeed luci-app-led-scheduler make defconfig make package/feeds/myfeed/luci-app-led-scheduler/compile V=s ``` 输出为: ```text luci-app-led-scheduler-0.3.0-r1.apk ```