2 Commits
1.4.1 ... 1.5

2 changed files with 28 additions and 13 deletions

View File

@@ -11,11 +11,14 @@ interval: 1
thermalzones: thermalzones:
- name: GPU+SYSTEM - name: GPU+SYSTEM
# This is your source temperature.
# This is your source temperature. You can add multiple sources, see thermal zone below for an example.
source: amdgpu/temp1_input source: amdgpu/temp1_input
# This is most likely 1000 for your temp sensor as well. # 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 factor: 1000
# Define all fans that this thermal zone is going to control. # Define all fans that this thermal zone is going to control.
# There is no limit to how many fans one thermal zone can control. # There is no limit to how many fans one thermal zone can control.
# You can have different limitations on your fans, for example: # You can have different limitations on your fans, for example:
@@ -27,24 +30,28 @@ thermalzones:
fan: fan:
- it8686/pwm2 - it8686/pwm2
- amdgpu/pwm1: 170 - amdgpu/pwm1: 170
# This is your target temperature. This is one of the main control knobs. Set this to a comfortable temperature for # 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. # your equipment. Don't set this as high as its max temperature allowance, since pid is gonna allow some overshooting.
target: 60 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. # 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: # Simplified you can view them as weights for:
# p = how heavy should pid weight difference in temperature # p = difference in temperature (momentarily)
# i = how heavy should pid weight difference in temperature over time # i = difference in temperature over time
# d = how heavy should pid weight rate of chance in temperature # d = rate of chance in temperature
pid: pid:
p: 1 p: 1
i: 1 i: 1
d: 1.5 d: 1.5
- name: CPU - name: CPU
source: coretemp/temp1_input source:
- coretemp/temp1_input
- amdgpu/temp1_input
factor: 1000 factor: 1000
fan: fan:
- it8686/pwm1: [100, 200] - it8686/pwm1: [ 100, 200 ]
target: 50 target: 50
pid: pid:
p: 1 p: 1

View File

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