40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
import json
|
|
from PyQt6.QtCore import QTimer
|
|
|
|
|
|
class AutoFanStatus:
|
|
def __init__(self, update_interval_ms=1000):
|
|
self.cpu_temp = 0.0
|
|
self.fan_speed = 0
|
|
self.fan_state = "Unknown"
|
|
self.fan_rpm = 0
|
|
self.is_auto_fan_service_running = False
|
|
|
|
self._last_temp = 0.0
|
|
self._same_counter = 0
|
|
self._update_interval_ms = update_interval_ms
|
|
self._timer = QTimer()
|
|
self._timer.setSingleShot(False)
|
|
self._timer.timeout.connect(self.update_status)
|
|
self._timer.start(self._update_interval_ms)
|
|
|
|
def update_status(self):
|
|
try:
|
|
with open("/dev/shm/fan_status.json", "r") as f:
|
|
data = json.load(f)
|
|
self.cpu_temp = data.get("temp", 0.0)
|
|
self.fan_speed = data.get("pwm", 0)
|
|
self.fan_state = "Stalled" if data.get("is_stalled", False) else "Running"
|
|
self.fan_rpm = data.get("rpm", 0)
|
|
if self.cpu_temp == self._last_temp:
|
|
self._same_counter += 1
|
|
else:
|
|
self._same_counter = 0
|
|
self._last_temp = self.cpu_temp
|
|
self.is_auto_fan_service_running = self._same_counter < 5
|
|
except (FileNotFoundError, json.JSONDecodeError, OSError):
|
|
self.cpu_temp = 0.0
|
|
self.fan_speed = 0
|
|
self.fan_state = "Unknown"
|
|
self.fan_rpm = 0
|
|
self.is_auto_fan_service_running = False |