diff --git a/v1/linuxcpureader.py b/v1/linuxcpureader.py new file mode 100644 index 0000000..72943c4 --- /dev/null +++ b/v1/linuxcpureader.py @@ -0,0 +1,48 @@ + +from functools import partial +from os import path + + +class LinuxCpuTemperatureReader(): + files = [ + '/sys/devices/LNXSYSTM:00/LNXTHERM:00/LNXTHERM:01/thermal_zone/temp', + '/sys/bus/acpi/devices/LNXTHERM:00/thermal_zone/temp', + '/proc/acpi/thermal_zone/THM0/temperature', + '/proc/acpi/thermal_zone/THRM/temperature', + '/proc/acpi/thermal_zone/THR1/temperature' + ] + + @classmethod + def get_reader(cls): + readers = { + cls.files[0]: cls.reader1, + cls.files[1]: cls.reader1, + cls.files[2]: cls.reader2, + cls.files[3]: cls.reader2, + cls.files[4]: cls.reader2 + } + for file in cls.files: + if path.exists(file): + reader = readers.get(file) + if reader: + print(reader(file)) + return reader(file) + + @classmethod + def reader1(cls, file): + def reader(file): + temperature = open(file).read().strip() + temperature = int(temperature) // 1000 + return temperature + return partial(reader, file) + + @classmethod + def reader2(cls, file): + def reader(file): + temperature = open(file).read().strip() + temperature = temperature.lstrip('temperature :').rstrip(' C') + return int(temperature) + return partial(reader, file) + + +__all__ = ['LinuxCpuTemperatureReader']