fancontrol/control.py
2023-08-19 23:37:29 +02:00

34 lines
869 B
Python
Executable File

#! /usr/bin/env python3
from led import LED
from gpiozero import CPUTemperature
from time import sleep
from math import fabs
cpu = CPUTemperature()
led = LED(8, freq=25000)
led.set_duty_cycle(0)
temp_levels = [45,50,55,60,65]
last_value = -1
last_temp = 0
hyst = 2
while True:
temp = cpu.temperature
level = 0
for limit in temp_levels:
if temp >= limit:
level +=1
fan_speed_percent = int((100/len(temp_levels))*level)
temp_diff = fabs(last_temp - temp)
# print(f"Temp is {temp}°C and fan level is {level} at {fan_speed_percent}%")
if fan_speed_percent != last_value and temp_diff > hyst:
# print(f"CPU temp of {temp}°C is equal to level '{level}' with fan at {fan_speed_percent}%")
led.set_duty_cycle(fan_speed_percent)
last_value = fan_speed_percent
last_temp = temp
sleep(5)