Files
dell-fans-controller-docker/controller/client.py

34 lines
1005 B
Python
Raw Normal View History

2024-05-19 22:38:21 +08:00
from controller.logger import logger
from controller.ipmi import IpmiTool
class FanController:
def __init__(self, host: str, username: str, password: str):
self.host = host
self.username = username
self.password = password
self.ipmi = IpmiTool(self.host, self.username, self.password)
def set_fan_speed(self, speed: int):
2025-06-08 12:50:52 +08:00
logger.info(f'设置风扇速度: {speed}%')
2024-05-19 22:38:21 +08:00
self.ipmi.set_fan_speed(speed)
def run(self):
temperature: int = max(self.ipmi.temperature())
2025-06-08 12:50:52 +08:00
logger.info(f'当前最高温度: {temperature}')
2024-05-19 22:38:21 +08:00
2024-06-22 13:23:15 +08:00
if 0 < temperature <= 50:
2025-06-08 12:50:52 +08:00
self.set_fan_speed(15)
2024-06-22 13:23:15 +08:00
elif 50 < temperature <= 55:
2024-05-19 22:38:21 +08:00
self.set_fan_speed(20)
2024-06-22 13:23:15 +08:00
elif 55 < temperature <= 60:
2024-05-19 22:38:21 +08:00
self.set_fan_speed(30)
2024-06-22 13:23:15 +08:00
elif 60 < temperature <= 65:
2024-05-19 22:38:21 +08:00
self.set_fan_speed(40)
else:
2025-06-08 12:50:52 +08:00
logger.info(f'切换风扇控制到自动模式')
2024-05-19 22:38:21 +08:00
self.ipmi.switch_fan_mode(auto=True)