diff --git a/.gitignore b/.gitignore index b694934..0e5ac79 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.venv \ No newline at end of file +.venv +__pycache__ \ No newline at end of file diff --git a/README.md b/README.md index c27d2cd..94cbb2d 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# lego-monitoring \ No newline at end of file +# lego-monitoring diff --git a/main.py b/main.py index e62ceb7..b30cfdc 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,15 @@ -import psutil +from sensors import Sensors +from colorama import Fore, Style, Back -def get_temperatures(): - sensors = psutil.sensors_temperatures() +def pretty_print(): + s = Sensors.get_temperatures() - for k in sensors: - print(f"{k}: {sensors[k]}") + for k, v in s.items(): + print(f"{Back.CYAN}{k}{Style.RESET_ALL}") + for sensors in v: + print(f"{sensors.sensor_label}: {sensors.current_temp}°C") if __name__ == "__main__": - get_temperatures() + pretty_print() diff --git a/requirements.txt b/requirements.txt index 0704b2d..69c8e04 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ +colorama==0.4.6 psutil==5.9.8 diff --git a/sensors.py b/sensors.py new file mode 100644 index 0000000..ef46f9f --- /dev/null +++ b/sensors.py @@ -0,0 +1,54 @@ +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]]: + psutil_temp_sensors = sensors_temperatures() + + temp_sensors = {} + + for s_type, sensors in psutil_temp_sensors.items(): + if s_type not in temp_sensors.keys(): + temp_sensors[s_type] = [] + match(s_type): + case "nvme": + for sensor in sensors: + temp_sensors[s_type].append(TemperatureSensor( + sensor_type=s_type, + sensor_label=sensor.label, + current_temp=sensor.current, + highest_temp=sensor.high, + critical_temp=sensor.critical + )) + case "amdgpu": + temp_sensors[s_type].append(TemperatureSensor( + sensor_type=s_type, + sensor_label="Integrated GPU", + current_temp=sensors[0].current, + )) + case "k10temp": + temp_sensors[s_type].append(TemperatureSensor( + sensor_type=s_type, + sensor_label="AMD CPU", + current_temp=sensors[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)