Support temp sensors with negative values

Also enhance threshold detector
This commit is contained in:
Daniel Berteaud 2015-09-09 18:09:55 +02:00
parent 7fd870d984
commit 8747854686

View File

@ -91,24 +91,33 @@ if ($ipmitool && -x $ipmitool){
my $val = undef;
foreach my $d (@details){
chomp $d;
if ($d =~ m/^\s*Sensor\sReading\s*:\s*(\w+)/){
if ($d =~ m/^\s*Sensor\sReading\s*:\s*(\-?\w+)/){
$val = $1;
print "Sensor $name has value: $val\n";
if ($val !~ m/^\d+$/){
if ($val !~ m/^\-?\d+$/){
print "Skipping sensor $name, couldn't parse its value: $val\n";
next SENSOR;
}
}
elsif ($d =~ m/^\s*Upper\scritical\s*:\s*(\d+(\.\d+))/){
elsif ($d =~ m/^\s*Upper\scritical\s*:\s*(\-?\d+(\.\d+))/){
$sensor->{threshold_high} = $1-$temp_margin;
}
elsif ($d =~ m/^\s*Upper\snon\-critical\s*:\s*(\d+(\.\d+))/){
elsif ($d =~ m/^\s*Upper\snon\-critical\s*:\s*(\-?\d+(\.\d+))/){
$sensor->{threshold_low} = $1-$temp_margin;
}
}
# Another loop to check for Normal max if Upper critical wasn't found
if (!$sensor->{threshold_high}){
foreach my $d (@details){
chomp $d;
if ($d =~ m/^\s*Normal\sMaximum\s*:\s*(\-?\d+(\.\d+))/){
$sensor->{threshold_high} = $1-$temp_margin;
}
}
}
next SENSOR unless $val;
$sensor->{threshold_low} ||= ($sensor->{threshold_high}) ? $sensor->{threshold_high}-$temp_hyst : $def_temp_thres_high-$temp_hyst;
$sensor->{threshold_high} ||= $def_temp_thres_high;
$sensor->{threshold_low} ||= $def_temp_thres_high-$temp_hyst;
$sensor->{threshold_high} =~ s/\.0+$//;
$sensor->{threshold_low} =~ s/\.0+$//;
$sensor->{description} = $name;