vcgencmd measure_temp... via Python's subprocess function and parsed the result.
This just wasn't quick enough for my project as I needed something which would gather lots of data, not just the cpu temperature every second, so I pulled together my own module and class which reads the data directly from /sys/class/thermal/thermal_zone0/temp.
You can find the module at github.com/martinohanlon/CPUTemp, but to use it, just add the following CPUTemp class to your code:
class CPUTemp: def __init__(self, tempfilename = "/sys/class/thermal/thermal_zone0/temp"): self.tempfilename = tempfilename def __enter__(self): self.open() return self def open(self): self.tempfile = open(self.tempfilename, "r") def read(self): self.tempfile.seek(0) return self.tempfile.read().rstrip() def get_temperature(self): return self.get_temperature_in_c() def get_temperature_in_c(self): tempraw = self.read() return float(tempraw[:-3] + "." + tempraw[-3:]) def get_temperature_in_f(self): return self.convert_c_to_f(self.get_temperature_in_c()) def convert_c_to_f(self, c): return c * 9.0 / 5.0 + 32.0 def __exit__(self, type, value, traceback): self.close() def close(self): self.tempfile.close()Then to read the temperature use:
with CPUTemp() as cpu_temp: print("{} C".format(cpu_temp.get_temperature())) print("{} F".format(cpu_temp.get_temperature_in_f()))
Thanks for sharing. The degree symbol is "°" missing?
ReplyDelete