ツリーベリーパイのCPUとGPU温度を読み取る
1871 ワード
参考記事PythonウィジェットでベリーパイのCPUとGPU温度を取得
1.Pythonプログラム
運転結果は以下の通りです.
$ sudo python read_cpu_temp.py CPU temp: 49.768 GPU temp: 50.8 2. ファイルを直接読み込む
$ cat/sys/class/thermal/thermal_zone0/temp 49768 3. Cプログラム
コンパイル実行の結果は次のとおりです.
$ gcc -o read_cpu_temp read_cpu_temp.c $ ./read_cpu_temp CPU temp: 50.306
1.Pythonプログラム
import commands
def get_cpu_temp():
tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = tempFile.read()
tempFile.close()
return float(cpu_temp)/1000
# Uncomment the next line if you want the temp in Fahrenheit
#return float(1.8*cpu_temp)+32
def get_gpu_temp():
gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\'C', '' )
return float(gpu_temp)
# Uncomment the next line if you want the temp in Fahrenheit
# return float(1.8* gpu_temp)+32
def main():
print "CPU temp: ", str(get_cpu_temp())
print "GPU temp: ", str(get_gpu_temp())
if __name__ == '__main__':
main()
運転結果は以下の通りです.
$ sudo python read_cpu_temp.py CPU temp: 49.768 GPU temp: 50.8 2. ファイルを直接読み込む
$ cat/sys/class/thermal/thermal_zone0/temp 49768 3. Cプログラム
#include
#include
#include
#define CPU_THERMAL_FILE "/sys/class/thermal/thermal_zone0/temp"
int main(int argc, char **argv)
{
int fd = 0;
unsigned char temp;
int i = 0;
fd = open(CPU_THERMAL_FILE, O_RDONLY);
if (fd < 0) {
fprintf(stderr, "%s: %s
", CPU_THERMAL_FILE, strerror(errno));
return 1;
}
printf("CPU temp: ");
for (i = 0; i < 6; i++) {
read(fd, &temp, 1);
printf("%c", temp);
if (i == 1)
printf(".");
}
printf("
");
return 0;
}
コンパイル実行の結果は次のとおりです.
$ gcc -o read_cpu_temp read_cpu_temp.c $ ./read_cpu_temp CPU temp: 50.306