From 5e40be7125739654e633aba067ce69b7f7168e3a Mon Sep 17 00:00:00 2001 From: desbma Date: Sun, 24 Jul 2016 21:43:23 +0200 Subject: [PATCH] Only write fan speed if it needs to be changed This also gets rid of useless logging lines after each temperature query. --- hddfancontrol/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hddfancontrol/__init__.py b/hddfancontrol/__init__.py index 4938f86..2ef13fe 100755 --- a/hddfancontrol/__init__.py +++ b/hddfancontrol/__init__.py @@ -545,8 +545,8 @@ def main(drive_filepaths, fan_pwm_filepaths, fan_start_values, fan_stop_values, fan_stop_values), 1)] drives = [Drive(drive_filepath, hddtemp_daemon_port) for drive_filepath in drive_filepaths] - drives_startup_time = time.monotonic() + current_fan_speeds = [None] * len(fans) # start spin down threads if needed spin_down_threads = [] @@ -579,16 +579,18 @@ def main(drive_filepaths, fan_pwm_filepaths, fan_start_values, fan_stop_values, if not any(awakes): drives_startup_time = now - # calc target percentage speed + # calc target percentage fan speed if temps and (temp - min_temp > 0): speed_prct = 100 * (temp - min_temp) // (max_temp - min_temp) speed_prct = int(min(speed_prct, 100)) else: speed_prct = 0 - # set speed - for fan in fans: - fan.setSpeed(speed_prct, min_fan_speed_prct) + # set fan speed if needed + for i, fan in enumerate(fans): + if current_fan_speeds[i] != speed_prct: + fan.setSpeed(speed_prct, min_fan_speed_prct) + current_fan_speeds[i] = speed_prct # sleep if any(map(operator.attrgetter("startup"), fans)):