diff --git a/pyfan.py b/pyfan.py index 8fe1c6a..5d98edf 100644 --- a/pyfan.py +++ b/pyfan.py @@ -35,30 +35,34 @@ class ThermalZone: self.pid.Kd))) def eval(self): - diff = self.target - self.get_temp() - val = self.pid(diff) + if self.get_temp(): + diff = self.target - self.get_temp() + val = self.pid(diff) - try: - for target_fan in self.fans: - if type(target_fan) is dict: - self.write_sysfs(list(target_fan.keys())[0], min(int(val), list(target_fan.values())[0])) - else: - self.write_sysfs(target_fan, int(val)) - except OSError as err: - logging.getLogger("pyfan").warning( - "[%s] Failed to set pwm, trying to reset it. (%s)" % (self.name, err.strerror)) - self.setup_pwm(1) + try: + for target_fan in self.fans: + if type(target_fan) is dict: + self.write_sysfs(list(target_fan.keys())[0], min(int(val), list(target_fan.values())[0])) + else: + self.write_sysfs(target_fan, int(val)) + except OSError as err: + logging.getLogger("pyfan").warning( + "[%s] Failed to set pwm, trying to reset it. (%s)" % (self.name, err.strerror)) + self.setup_pwm(1) - p, i, d = self.pid.components + p, i, d = self.pid.components - logging.getLogger("pyfan").debug( - "[{name}] {val}% ({diff}C/{temp}C) ({p}|{i}|{d})".format(name=self.name, val=int(val / 255 * 100), - diff=diff, - temp=self.get_temp(), p=int(p), i=int(i), - d=int(d))) + logging.getLogger("pyfan").debug( + "[{name}] {val}% ({diff}C/{temp}C) ({p}|{i}|{d})".format(name=self.name, val=int(val / 255 * 100), + diff=diff, + temp=self.get_temp(), p=int(p), i=int(i), + d=int(d))) def get_temp(self): - return float(self.read_sysfs(self.temp_source)) * self.factor + 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) @@ -94,6 +98,7 @@ class ThermalZone: logging.getLogger("pyfan").warning( "[%s] temp source not found. Not ready yet or wrong path? (%s)" % (self.name, err.strerror)) + return None def set_pwm_mode(self, path, value=1): self.write_sysfs(path + "_enable", value)