SensorsTemperatures should provide a unique sensor identity
Author: danielnelsonCreated Mar 24, 2020Updated Jun 18, 2026
Labelsos:linuxpackage:host
Describe the bug
This issue is somewhere between a bug report and a feature request. When using the host.SensorsTemperatures() call it is possible for multiple TemperatureStat objects to have the same SensorKey. In order to distinguish temperature sensors and in particular when making multiple calls over time, it would be useful if we could guarantee each sensor will have a unique sensor key or provide an additional field that would be unique and not change between calls.
To Reproduce
package main
import (
"fmt"
"github.com/shirou/gopsutil/host"
)
func main() {
sensors, err := host.SensorsTemperatures()
if err != nil {
fmt.Println(err)
}
for _, s := range sensors {
fmt.Printf("%+v\n", s)
}
}Output:
$ go run cmd/temp/main.go
{"sensorKey":"acpitz_crit","sensorTemperature":128}
{"sensorKey":"acpitz_input","sensorTemperature":46}
{"sensorKey":"coretemp_packageid0_crit","sensorTemperature":100}
{"sensorKey":"coretemp_packageid0_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_packageid0_input","sensorTemperature":50}
{"sensorKey":"coretemp_packageid0_max","sensorTemperature":100}
{"sensorKey":"coretemp_core0_crit","sensorTemperature":100}
{"sensorKey":"coretemp_core0_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_core0_input","sensorTemperature":47}
{"sensorKey":"coretemp_core0_max","sensorTemperature":100}
{"sensorKey":"coretemp_core1_crit","sensorTemperature":100}
{"sensorKey":"coretemp_core1_critalarm","sensorTemperature":0}
{"sensorKey":"coretemp_core1_input","sensorTemperature":49}
{"sensorKey":"coretemp_core1_max","sensorTemperature":100}
{"sensorKey":"iwlwifi_input","sensorTemperature":30}Expected behavior
Each sensor should have a unique SensorKey or way of identification.
Environment (please complete the following information):
- Windows: [paste the result of
ver] - Linux: [paste contents of
/etc/os-releaseand the result ofuname -a] - Mac OS: [paste the result of
sw_versanduname -a - FreeBSD: [paste the result of
freebsd-version -k -r -uanduname -a] - OpenBSD: [paste the result of
uname -a]
$ cat /etc/os-release
NAME=Gentoo
ID=gentoo
PRETTY_NAME="Gentoo/Linux"
ANSI_COLOR="1;32"
HOME_URL="https://www.gentoo.org/"
SUPPORT_URL="https://www.gentoo.org/support/"
BUG_REPORT_URL="https://bugs.gentoo.org/"$ uname -a
Linux loaner 4.19.97-gentoo #2 SMP Mon Feb 10 01:05:38 PST 2020 x86_64 Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz GenuineIntel GNU/LinuxAdditional context
$ for x in /sys/class/hwmon/hwmon2/temp*_*; do echo $x; cat $x; done
/sys/class/hwmon/hwmon2/temp1_crit
100000
/sys/class/hwmon/hwmon2/temp1_crit_alarm
0
/sys/class/hwmon/hwmon2/temp1_input
45000
/sys/class/hwmon/hwmon2/temp1_label
Package id 0
/sys/class/hwmon/hwmon2/temp1_max
100000
/sys/class/hwmon/hwmon2/temp2_crit
100000
/sys/class/hwmon/hwmon2/temp2_crit_alarm
0
/sys/class/hwmon/hwmon2/temp2_input
43000
/sys/class/hwmon/hwmon2/temp2_label
Core 0
/sys/class/hwmon/hwmon2/temp2_max
100000
/sys/class/hwmon/hwmon2/temp3_crit
100000
/sys/class/hwmon/hwmon2/temp3_crit_alarm
0
/sys/class/hwmon/hwmon2/temp3_input
44000
/sys/class/hwmon/hwmon2/temp3_label
Core 1
/sys/class/hwmon/hwmon2/temp3_max
100000Source: shirou/gopsutil