通过 IPMI over LAN 连 BMC/iDRAC,读温度/负载/功耗, 用 PID + 负载前馈 + 进排风温差前馈 输出手动风扇 PWM。
- 纯 pyghmi(读传感器 4.4s),无外部 ipmitool 依赖
- 单循环线程,PID + 负载前馈 + 温差前馈
- 动态模式:双向逐级调速,温度低探底找安静点,大波动切 PID
- WebUI:Vue 3 CDN + SSE,零构建零额外依赖
- 配置:
~/dell_fan_ctrl/config.json,和代码分离,升级不丢
- 装依赖:
pip install pyghmi - 运行 WebUI(推荐):
首次运行自动在
python -m dell_fan_ctrl.web~/dell_fan_ctrl/config.json生成默认配置,改 IP/密码后重启。 浏览器打开 http://localhost:8089,支持远程/手机访问。 - 命令行模式(无界面):
python -m dell_fan_ctrl - 退出(Ctrl+C)设回手动 PWM=27%(安静),紧急回退(≥80℃)交还 iDRAC 自动控制。
- PID 模式(默认):PID + 负载前馈 + 温差前馈,维持目标温度
- 动态模式:双向逐级调速——温度低递减探底找安静点,温度缓升递增跟随,大波动切 PID 接管,PID 下稳定 60s 回动态模式
WebUI 勾选「动态模式」实时切换。
- PWM 下限可设 0(快速采样 + 紧急回退兜底),默认 27%
- 紧急温度(默认 80℃)触发回退 iDRAC 自动控制(散热优先于安静)
- 正常退出设回手动 27%(安静),不交还自动
target_cpu_temp:目标 CPU 温度,PID 试图维持kp/ki/kd:PID 参数,默认 2.0/0.1/0.0load_kf:CPU 负载前馈增益,越大越激进delta_t_k:进排风温差前馈增益(超过 10℃ 基准才生效)
- Python 3.10+
- pyghmi(纯 Python IPMI)
- WebUI 用 Vue 3 CDN + 标准库 http.server + SSE,零构建零额外依赖
Copyright (C) 2026 aknyzsd
本项目以 GNU Affero General Public License v3.0 或更高版本(AGPL-3.0-or-later)发布。 详见 LICENSE。
AGPL 是强 copyleft 协议:任何人分发或通过网络提供服务(SaaS)的本项目衍生作品, 必须以相同协议开源全部源代码。
本项目为个人开源项目,非官方、不关联 Dell Technologies。 "Dell"、"iDRAC" 等商标归其各自所有者所有,本项目仅描述兼容性。