Files

4.8 KiB
Raw Permalink Blame History

LED Manager Panel

一个无第三方依赖的 Linux LED Web 管理面板,用 Python 标准库直接管理:

/sys/class/leds/

适合 Debian、OpenWrt、Raspberry Pi OS、4G 路由器等 Linux 设备。

你的设备示例:

blue:wan green:wlan mmc0:: red:power sim:en sim:en2 sim:sel sim:sel2

功能

  • 默认只列出实际可控的红 / 绿 / 蓝 LED(red:*green:*blue:*),隐藏 SIM/mmc 等不可控条目
  • 查看 brightness / max_brightness / 当前 trigger
  • 打开 / 关闭单个 LED
  • 页面顶部一键关闭全部 LED
  • 调整亮度
  • 切换 trigger,例如 nonetimernetdevmmc0 等,具体取决于内核暴露的能力
  • 设置 timer trigger 的 delay_on / delay_off
  • “识别 3 秒”闪烁指定 LED
  • 无数据库、无 Node、无 pip 依赖

持久化配置 / 开机恢复

这是 Debian 版本的一键脚本:安装后会创建 systemd 服务并开机启动:

led-manager.service

面板里每个 LED 卡片都有:

保存持久化
取消持久化

点击“保存持久化”后,当前 LED 的 triggerbrightnessdelay_ondelay_off 会保存到:

/etc/led-manager/config.json

系统重启后,led-manager.service 会自动启动,并在启动时读取该配置恢复 LED 状态。

为加快开机启动,systemd 服务不再等待 network-online.target,只依赖本地文件系统就启动;内网地址可用后浏览器再访问即可。

LED 过滤

默认只显示/控制红绿蓝三类实际可控灯:

red,green,blue

如果以后要临时显示全部 /sys/class/leds 条目,可以这样重装/更新:

COLORS= sh -c "$(curl -fsSL https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh)"

也可以指定颜色前缀,例如只显示红蓝:

COLORS=red,blue sh -c "$(curl -fsSL https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh)"

更新已有安装

curl -fsSL https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh | sh

如果已经在浏览器打开旧页面,更新后请强制刷新一次页面,避免浏览器缓存旧 JS:

Ctrl+F5 / Cmd+Shift+R

一键安装

curl -fsSL https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh | sh

如果设备没有 curl,用 wget

wget -qO- https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh | sh

默认端口 8088,安装后浏览器打开:

http://设备IP:8088/

自定义端口:

PORT=8090 sh -c "$(curl -fsSL https://gitea.chickliu.fun/Hermes/led-manager-panel/raw/branch/main/install.sh)"

手动运行

led_panel.py 上传到设备,例如:

scp led_panel.py root@4G-wifi:/root/led_panel.py

在设备上运行:

chmod +x /root/led_panel.py
python3 /root/led_panel.py --host 0.0.0.0 --port 8088

如果设备没有 Python3

# Debian/Ubuntu
apt update && apt install -y python3

# OpenWrt
opkg update && opkg install python3

Debian systemd 安装

mkdir -p /opt/led-manager
cp led_panel.py /opt/led-manager/led_panel.py
chmod +x /opt/led-manager/led_panel.py
cp led-manager.service /etc/systemd/system/led-manager.service
systemctl daemon-reload
systemctl enable --now led-manager
systemctl status led-manager

默认端口:8088

OpenWrt procd 安装

mkdir -p /opt/led-manager
cp led_panel.py /opt/led-manager/led_panel.py
chmod +x /opt/led-manager/led_panel.py
cp led-manager.openwrt.init /etc/init.d/led-manager
chmod +x /etc/init.d/led-manager
/etc/init.d/led-manager enable
/etc/init.d/led-manager start
/etc/init.d/led-manager status

安全说明

这个面板会写 /sys/class/leds/*,建议只在内网使用,不要直接暴露公网。

如需公网访问,请放到反代后面加认证,或者只监听 127.0.0.1

python3 /root/led_panel.py --host 127.0.0.1 --port 8088

常见问题

1. 按钮提示权限不足

需要 root 运行,因为 /sys/class/leds/*/brightness 通常只有 root 可写。

2. 某些 LED 不能调亮度

有些 LED 只有 0/1 两档,max_brightness 会是 1

3. 切换 trigger 后亮度不能手动控制

Linux LED 子系统里,手动亮度通常要先切回:

echo none > /sys/class/leds/<led-name>/trigger

面板在手动设置亮度时会自动尝试切到 none

4. netdev trigger 怎么绑定网卡?

如果某个 LED 支持 netdev trigger,切到 netdev 后可能会出现这些文件:

device_name
link
tx
rx

当前版本先做通用亮度/trigger/timer 管理;如果你要把 blue:wan 绑定到具体网卡,我可以继续加 netdev 绑定配置。