34 lines
869 B
Python
Executable File
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)
|
|
|