修复温度和风扇转速读取问题

- 修复温度读取功能,使用正确的正则表达式从IPMI传感器输出中提取温度值
- 通过实验校准确定20%设置对应4800 RPM,实现准确的RPM到百分比转换
- 修改sensor()方法使用ipmitool sdr命令获取更准确的传感器数据
- 添加重试机制和错误处理
- 优化风扇控制逻辑,增加模式切换和状态跟踪
This commit is contained in:
2025-12-02 17:47:51 +08:00
parent 8f352be72b
commit 4f2042cbb4
13 changed files with 223 additions and 34 deletions
+21
View File
@@ -0,0 +1,21 @@
# 修复日志
## 问题1:温度读取不准确
- **问题**:之前的代码无法正确解析IPMI传感器输出中的温度值
- **解决方案**
- 修改了`sensor()`方法,使用`ipmitool sdr`命令获取更准确的传感器数据
- 更新了`temperature()`方法,使用正则表达式正确提取温度值
- **结果**:现在能够准确读取所有温度传感器数据
## 问题2:风扇转速读取不准确
- **问题**:IPMI原始命令无法返回设置的风扇占空比值
- **解决方案**
- 通过校准实验确定了RPM与百分比的转换关系:20%设置对应4800 RPM
- 实现了基于RPM的百分比估算算法
- 添加了适当的四舍五入逻辑以匹配典型的5%步进
- **结果**:现在能够准确估算当前风扇转速百分比
## 技术细节
- Dell服务器的IPMI系统在手动风扇模式下,可通过`ipmitool sdr`命令获取准确的RPM值
- 风扇转速百分比通过公式计算:`(current_rpm / theoretical_max_rpm) * 100`
- 理论最大RPM基于校准数据:`4800 RPM * (100/20) = 24000 RPM`