ツリーベリーパイのCPUとGPU温度を読み取る

1871 ワード

参考記事PythonウィジェットでベリーパイのCPUとGPU温度を取得
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