from dataclasses import dataclass from psutil import sensors_temperatures @dataclass class TemperatureSensor: sensor_type: str sensor_label: str current_temp: float highest_temp: float | None = None critical_temp: float | None = None class Sensors: @staticmethod def get_temperatures() -> dict[str, list[TemperatureSensor]]: temp_sens = sensors_temperatures() temp_sensors = {} for k, v in temp_sens.items(): if k not in temp_sensors.keys(): temp_sensors[k] = [] match(k): case "nvme": for i in v: temp_sensors[k].append(TemperatureSensor( sensor_type=k, sensor_label=i.label, current_temp=i.current, highest_temp=i.high, critical_temp=i.critical )) case "amdgpu": temp_sensors[k].append(TemperatureSensor( sensor_type=k, sensor_label="Integrated GPU", current_temp=v[0].current, )) case "k10temp": temp_sensors[k].append(TemperatureSensor( sensor_type=k, sensor_label="AMD CPU", current_temp=v[0].current, critical_temp=95.0 # hardcoded because we have R9 7900X )) return temp_sensors if __name__ == "__main__": for i in Sensors.get_temperatures(): print(i)