2010-07-29 20:34:31 +00:00
<? php
global $valid_sensor ;
2010-08-10 16:11:10 +00:00
echo ( " ENTITY-SENSOR" );
2010-07-29 20:34:31 +00:00
$oids = array ();
$oids = snmpwalk_cache_multi_oid ( $device , "entPhySensorType" , $oids , "ENTITY-SENSOR-MIB" );
$oids = snmpwalk_cache_multi_oid ( $device , "entPhySensorScale" , $oids , "ENTITY-SENSOR-MIB" );
$oids = snmpwalk_cache_multi_oid ( $device , "entPhySensorPrecision" , $oids , "ENTITY-SENSOR-MIB" );
$oids = snmpwalk_cache_multi_oid ( $device , "entPhySensorValue" , $oids , "ENTITY-SENSOR-MIB" );
$entitysensor [ 'voltsDC' ] = "voltage" ;
$entitysensor [ 'voltsAC' ] = "voltage" ;
$entitysensor [ 'amperes' ] = "current" ;
$entitysensor [ 'watt' ] = "power" ;
$entitysensor [ 'hertz' ] = "freq" ;
$entitysensor [ 'percentRH' ] = "humidity" ;
$entitysensor [ 'rpm' ] = "fanspeed" ;
$entitysensor [ 'celsius' ] = "temperature" ;
if ( is_array ( $oids [ $device [ 'device_id' ]]))
{
foreach ( $oids [ $device [ 'device_id' ]] as $index => $entry )
{
#echo("[" . $entry['entPhySensorType'] . "|" . $entry['entPhySensorValue']. "|" . $index . "]");
if ( $entitysensor [ $entry [ 'entPhySensorType' ]] && is_numeric ( $entry [ 'entPhySensorValue' ]) && is_numeric ( $index ))
{
$entPhysicalIndex = $index ;
$descr = snmp_get ( $device , "entPhysicalDescr." . $index , "-Oqv" , "ENTITY-SENSOR-MIB" );
$oid = ".1.3.6.1.2.1.99.1.1.1.4." . $index ;
$current = $entry [ 'entPhySensorValue' ];
#ENTITY-SENSOR-MIB::entPhySensorUnitsDisplay.11 = STRING: "C"
2010-07-30 14:50:09 +00:00
$descr = snmp_get ( $device , "entPhysicalName." . $index , "-Oqv" , "ENTITY-MIB" );
2010-08-03 14:21:54 +00:00
if ( ! $descr ) { $descr = snmp_get ( $device , "entPhysicalDescr." . $index , "-Oqv" , "ENTITY-MIB" ); }
2010-07-30 14:50:09 +00:00
2010-07-30 14:59:44 +00:00
$valid = TRUE ;
2010-07-30 14:50:09 +00:00
2010-07-29 20:34:31 +00:00
$type = $entitysensor [ $entry [ 'entPhySensorType' ]];
2010-08-03 15:12:16 +00:00
$descr = str_ireplace ( "temperature" , "" , $descr );
$descr = str_ireplace ( "sensor" , "" , $descr );
2010-07-29 20:34:31 +00:00
### FIXME this stuff is foul
if ( $entry [ 'entPhySensorScale' ] == "nano" ) { $divisor = "1000000000" ; $multiplier = "1" ; }
if ( $entry [ 'entPhySensorScale' ] == "micro" ) { $divisor = "1000000" ; $multiplier = "1" ; }
if ( $entry [ 'entPhySensorScale' ] == "milli" ) { $divisor = "1000" ; $multiplier = "1" ; }
if ( $entry [ 'entPhySensorScale' ] == "units" ) { $divisor = "1" ; $multiplier = "1" ; }
if ( $entry [ 'entPhySensorScale' ] == "kilo" ) { $divisor = "1" ; $multiplier = "1000" ; }
if ( $entry [ 'entPhySensorScale' ] == "mega" ) { $divisor = "1" ; $multiplier = "1000000" ; }
if ( $entry [ 'entPhySensorScale' ] == "giga" ) { $divisor = "1" ; $multiplier = "1000000000" ; }
2010-07-30 14:59:44 +00:00
2010-07-30 16:11:09 +00:00
if ( is_numeric ( $entry [ 'entPhySensorPrecision' ]) && $entry [ 'entPhySensorPrecision' ] > "0" ) { $divisor = $divisor . str_pad ( '' , $entry [ 'entPhySensorPrecision' ], "0" ); }
2010-07-29 20:34:31 +00:00
$current = $current * $multiplier / $divisor ;
2010-07-30 14:59:44 +00:00
if ( $type == "temperature" ) { if ( $current > "200" ){ $valid = FALSE ; } $descr = preg_replace ( "/[T|t]emperature[|s]/" , "" , $descr ); }
2010-07-30 14:50:09 +00:00
2010-07-30 16:11:09 +00:00
#echo($descr . "|" . $index . "|" .$current . "|" . $multiplier . "|" . $divisor ."|" . $entry['entPhySensorScale'] . "|" . $entry['entPhySensorPrecision'] . "\n");
2010-07-30 14:50:09 +00:00
if ( $valid && mysql_result ( mysql_query ( "SELECT COUNT(*) FROM `sensors` WHERE `device_id` = '" . $device [ 'device_id' ] . "' AND `sensor_class` = '" . $type . "' AND `sensor_type` = 'cisco-entity-sensor' AND `sensor_index` = '" . $index . "'" ), 0 ) == "0" )
2010-07-29 20:34:31 +00:00
## Check to make sure we've not already seen this sensor via cisco's entity sensor mib
{
discover_sensor ( $valid_sensor , $type , $device , $oid , $index , 'entity-sensor' , $descr , $divisor , $multiplier , NULL , NULL , NULL , NULL , $current );
}
}
}
}
?>