Initial commit
This commit is contained in:
80
cputemp.go
Normal file
80
cputemp.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CPUTemperature stores average temperature among all cores.
|
||||
var CPUTemperature int64
|
||||
|
||||
// UpdateCPUTemperature gets and updates average CPU cores temperature.
|
||||
func UpdateCPUTemperature() {
|
||||
n := len(Conf.CPUTemp.File)
|
||||
|
||||
for {
|
||||
var (
|
||||
temperature = make([]int64, n)
|
||||
tSum int64
|
||||
tAvg int64
|
||||
)
|
||||
|
||||
for i, filename := range Conf.CPUTemp.File {
|
||||
file, err := os.Open(filename)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Unable to open %s: %s", filename, err)
|
||||
} else {
|
||||
reader := bufio.NewReader(file)
|
||||
line, _, err := reader.ReadLine()
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Unable to read from %s: %s", filename, err)
|
||||
err = file.Close()
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Unable to close %s: %s", filename, err)
|
||||
}
|
||||
} else {
|
||||
err = file.Close()
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Unable to close %s: %s", filename, err)
|
||||
} else {
|
||||
temp, err := strconv.ParseInt(string(line), 10, 32)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Unable to convert string to number from file %s: %s", filename, err)
|
||||
} else {
|
||||
if temp > 1000 {
|
||||
temp /= 1000
|
||||
}
|
||||
|
||||
temperature[i] = temp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(temperature) == 1 {
|
||||
tAvg = temperature[0]
|
||||
} else {
|
||||
for _, t := range temperature {
|
||||
tSum += t
|
||||
}
|
||||
|
||||
tAvg = tSum / int64(len(temperature))
|
||||
}
|
||||
|
||||
if CPUTemperature != tAvg {
|
||||
CPUTemperature = tAvg
|
||||
UpdateReady <- true
|
||||
}
|
||||
|
||||
time.Sleep(3 * time.Second)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user