Simplify fan speed logic
This commit is contained in:
+11
-13
@@ -313,13 +313,10 @@ class Fan:
|
|||||||
min_rpm = min(min_rpm, rpm)
|
min_rpm = min(min_rpm, rpm)
|
||||||
max_rpm = max(max_rpm, rpm)
|
max_rpm = max(max_rpm, rpm)
|
||||||
|
|
||||||
def setSpeed(self, cmd_prct, min_prct):
|
def setSpeed(self, target_prct):
|
||||||
""" Set fan speed to a percentage of its maximum speed. """
|
""" Set fan speed to a percentage of its maximum speed. """
|
||||||
# preconditions
|
# preconditions
|
||||||
assert(0 <= cmd_prct <= 100)
|
assert(0 <= target_prct <= 100)
|
||||||
assert(0 <= min_prct <= 100)
|
|
||||||
|
|
||||||
target_prct = max(cmd_prct, min_prct)
|
|
||||||
|
|
||||||
self.logger.info("Setting fan speed to %u%%" % (target_prct))
|
self.logger.info("Setting fan speed to %u%%" % (target_prct))
|
||||||
|
|
||||||
@@ -588,17 +585,18 @@ def main(drive_filepaths, fan_pwm_filepaths, fan_start_values, fan_stop_values,
|
|||||||
drives_startup_time = now
|
drives_startup_time = now
|
||||||
|
|
||||||
# calc target percentage fan speed
|
# calc target percentage fan speed
|
||||||
if temps and (temp - min_temp > 0):
|
if temps and (temp > min_temp):
|
||||||
speed_prct = 100 * (temp - min_temp) // (max_temp - min_temp)
|
fan_speed_prct = 100 * (temp - min_temp) // (max_temp - min_temp)
|
||||||
speed_prct = int(min(speed_prct, 100))
|
fan_speed_prct = int(min(fan_speed_prct, 100))
|
||||||
else:
|
else:
|
||||||
speed_prct = 0
|
fan_speed_prct = 0
|
||||||
|
fan_speed_prct = max(fan_speed_prct, min_fan_speed_prct)
|
||||||
|
|
||||||
# set fan speed if needed
|
# set fan speed if needed
|
||||||
for i, fan in enumerate(fans):
|
for i, fan in enumerate(fans):
|
||||||
if current_fan_speeds[i] != speed_prct:
|
if current_fan_speeds[i] != fan_speed_prct:
|
||||||
fan.setSpeed(speed_prct, min_fan_speed_prct)
|
fan.setSpeed(fan_speed_prct)
|
||||||
current_fan_speeds[i] = speed_prct
|
current_fan_speeds[i] = fan_speed_prct
|
||||||
|
|
||||||
# sleep
|
# sleep
|
||||||
if any(map(operator.attrgetter("startup"), fans)):
|
if any(map(operator.attrgetter("startup"), fans)):
|
||||||
@@ -623,7 +621,7 @@ def main(drive_filepaths, fan_pwm_filepaths, fan_start_values, fan_stop_values,
|
|||||||
|
|
||||||
# run fans at full speed at exit
|
# run fans at full speed at exit
|
||||||
for fan in fans:
|
for fan in fans:
|
||||||
fan.setSpeed(100, 100)
|
fan.setSpeed(100)
|
||||||
|
|
||||||
|
|
||||||
def cl_main():
|
def cl_main():
|
||||||
|
|||||||
Reference in New Issue
Block a user