package utils import ( "io/ioutil" "log" "os/exec" "strconv" "strings" ) const ( CMD_VCGENCMD = "/opt/vc/bin/vcgencmd" FILE_CPU_TEMP = "/sys/class/thermal/thermal_zone0/temp" ) func GetCPUTemp() float64 { cpuTempFileContents, err := ioutil.ReadFile(FILE_CPU_TEMP) if err != nil { log.Fatalf("Error getting CPU temp : %s", err) } cpuTempStr := strings.Trim(string(cpuTempFileContents), "\n") cpuTempInt, err := strconv.Atoi(cpuTempStr) if err != nil { log.Fatalf("Error processing CPU temp : %S", err) } return float64(cpuTempInt) / 1000.0 } func GetGPUTemp() float64 { vcgencmdOut, err := exec.Command(CMD_VCGENCMD, "measure_temp").Output() if err != nil { log.Fatalf("Error getting GPU temp : %s", err) } gpuTempString := strings.Split(strings.Trim(string(vcgencmdOut), "\n"), "=")[1] gpuTempString = strings.Trim(gpuTempString, "'C") gpuTemp, err := strconv.ParseFloat(gpuTempString, 64) if err != nil { log.Fatalf("Error parsing GPU Temp : %s", err) } return gpuTemp }