2009-09-07 11:07:59 +00:00
<? php
2007-04-08 12:23:31 +00:00
2010-06-25 22:12:56 +00:00
$query = "SELECT * FROM sensors WHERE sensor_class='temperature' AND device_id = '" . $device [ 'device_id' ] . "'" ;
2007-04-08 12:23:31 +00:00
$temp_data = mysql_query ( $query );
while ( $temperature = mysql_fetch_array ( $temp_data )) {
2010-06-25 22:12:56 +00:00
echo ( "Checking temp " . $temperature [ 'sensor_descr' ] . "... " );
2007-11-23 11:37:28 +00:00
2010-02-21 10:30:23 +00:00
for ( $i = 0 ; $i < 5 ; $i ++ ) # Try 5 times to get a valid temp reading
2010-01-26 11:33:12 +00:00
{
if ( $debug ) echo "Attempt $i " ;
2010-07-02 19:58:13 +00:00
$temp_cmd = $config [ 'snmpget' ] . " -M " . $config [ 'mibdir' ] . " -m SNMPv2-MIB -O Uqnv -" . $device [ 'snmpver' ] . " -c " . $device [ 'community' ] . " " . $device [ 'hostname' ] . ":" . $device [ 'port' ] . " " . $temperature [ 'sensor_oid' ] . "|grep -v \" No Such Instance \" " ;
2010-01-26 11:33:12 +00:00
$temp = trim ( str_replace ( " \" " , "" , shell_exec ( $temp_cmd )));
2010-02-10 12:03:12 +00:00
if ( $temp != 9999 ) break ; # TME sometimes sends 999.9 when it is right in the middle of an update;
2010-02-21 10:30:23 +00:00
sleep ( 1 ); # Give the TME some time to reset
2010-01-26 11:33:12 +00:00
}
2010-07-29 18:25:11 +00:00
if ( $temperature [ 'sensor_divisor' ]) { $temp = $temp / $temperature [ 'sensor_divisor' ]; }
if ( $temperature [ 'sensor_multiplier' ]) { $temp = $temp * $temperature [ 'sensor_multiplier' ]; }
2010-02-10 12:03:12 +00:00
2010-07-29 20:34:31 +00:00
$old_rrd_file = $config [ 'rrd_dir' ] . "/" . $device [ 'hostname' ] . "/" . safename ( "temp-" . $temperature [ 'sensor_descr' ] . ".rrd" );
$rrd_file = $config [ 'rrd_dir' ] . "/" . $device [ 'hostname' ] . "/temp-" . safename ( $temperature [ 'sensor_type' ] . "-" . $temperature [ 'sensor_index' ]) . ".rrd" ;
2007-05-20 19:21:35 +00:00
2010-07-29 20:34:31 +00:00
if ( is_file ( $old_rrd_file )) { rename ( $old_rrd_file , $rrd_file ); }
if ( ! is_file ( $rrd_file )) {
`rrdtool create $rrd_file \
2007-04-08 12:23:31 +00:00
--step 300 \
DS:temp:GAUGE:600:-273:1000 \
2010-07-29 20:34:31 +00:00
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797\
RRA:MIN:0.5:1:600 \
RRA:MIN:0.5:6:700 \
RRA:MIN:0.5:24:775 \
RRA:MIN:0.5:288:797` ;
2007-04-08 12:23:31 +00:00
}
2007-11-23 11:37:28 +00:00
echo ( $temp . "C \n " );
2007-06-06 09:23:41 +00:00
2010-07-29 20:34:31 +00:00
rrdtool_update ( $rrd_file , "N: $temp " );
2007-04-08 12:23:31 +00:00
2010-06-25 22:12:56 +00:00
if ( $temperature [ 'sensor_current' ] < $temperature [ 'sensor_limit' ] && $temp >= $temperature [ 'sensor_limit' ]) {
2007-11-23 11:37:28 +00:00
if ( $device [ 'sysContact' ]) { $email = $device [ 'sysContact' ]; } else { $email = $config [ 'email_default' ]; }
2010-06-25 22:12:56 +00:00
$msg = "Temp Alarm: " . $device [ 'hostname' ] . " " . $temperature [ 'sensor_descr' ] . " is " . $temp . " (Limit " . $temperature [ 'sensor_limit' ];
2010-02-25 20:40:35 +00:00
$msg .= ") at " . date ( $config [ 'timestamp_format' ]);
2010-07-11 19:11:46 +00:00
notify ( $device , "Temp Alarm: " . $device [ 'hostname' ] . " " . $temperature [ 'sensor_descr' ], $msg );
2010-06-25 22:12:56 +00:00
echo ( "Alerting for " . $device [ 'hostname' ] . " " . $temperature [ 'sensor_descr' ] . " \n " );
log_event ( 'Temperature ' . $temperature [ 'sensor_descr' ] . " over threshold: " . $temp . " °C (> " . $temperature [ 'sensor_limit' ] . " °C)" , $device [ 'device_id' ], 'temperature' , $temperature [ 'sensor_id' ]);
2007-11-23 11:37:28 +00:00
}
2010-06-25 22:12:56 +00:00
mysql_query ( "UPDATE sensors SET sensor_current = ' $temp ' WHERE sensor_class='temperature' AND sensor_id = '" . $temperature [ 'sensor_id' ] . "'" );
2007-04-08 12:23:31 +00:00
}
?>