added support for multiple temperature sources, highest wins

This commit is contained in:
2020-11-15 17:50:22 +01:00
parent d6ab4d8451
commit ca23ce9418
2 changed files with 19 additions and 6 deletions

View File

@@ -11,11 +11,14 @@ interval: 1
thermalzones:
- name: GPU+SYSTEM
# This is your source temperature.
source: amdgpu/temp1_input
# This is most likely 1000 for your temp sensor as well.
# If not, check what you sensor is outputing if you try to read from it.
# If not, check what you sensor is outputting if you try to read from it.
factor: 1000
# Define all fans that this thermal zone is going to control.
# There is no limit to how many fans one thermal zone can control.
# You can have different limitations on your fans, for example:
@@ -27,10 +30,12 @@ thermalzones:
fan:
- it8686/pwm2
- amdgpu/pwm1: 170
# This is your target temperature. This is one of the main control knobs. Set this to a comfortable temperature for
# your equipment. Don't set this as high as its max temperature allowance, since pid is gonna allow some overshooting.
target: 60
# For understanding PID please have a look at https://en.wikipedia.org/wiki/PID_controller. The forementioned page
# For understanding PID please have a look at https://en.wikipedia.org/wiki/PID_controller. The aforementioned page
# also explains what p, i and d stand for and what they do in detail. These are the second main control knobs.
# Simplified you can view them as:
# p = how heavy should pid weight difference in temperature

View File

@@ -73,10 +73,18 @@ class ThermalZone:
d=int(d)))
def get_temp(self):
if self.read_sysfs(self.temp_source):
return float(self.read_sysfs(self.temp_source)) * self.factor
if type(self.temp_source) is list:
max_temp = -1.0
for fan in self.temp_source:
if self.read_sysfs(fan):
max_temp = max(float(self.read_sysfs(fan)) * self.factor, max_temp)
return max_temp
else:
return None
if self.read_sysfs(self.temp_source):
return float(self.read_sysfs(self.temp_source)) * self.factor
else:
return None
def restore(self):
self.setup_pwm(2)
@@ -88,7 +96,7 @@ class ThermalZone:
self.set_pwm_mode(list(target_fan.keys())[0], value)
else:
self.set_pwm_mode(target_fan, value)
except FileNotFoundError as err:
except FileNotFoundError:
logging.getLogger("pyfan").warning("[%s] pwm not found."
" Try reloading hwmon map..." % self.name)
self.hwmap = self.pyfan.hwmap