2010-07-29 20:34:31 +00:00
< ? php
2015-07-13 20:10:26 +02:00
echo ' ENTITY-SENSOR: ' ;
2010-07-29 20:34:31 +00:00
2015-07-13 20:10:26 +02:00
echo 'Caching OIDs:' ;
2010-08-11 17:08:56 +00:00
2015-07-13 20:10:26 +02:00
if ( ! is_array ( $entity_array )) {
$entity_array = array ();
echo ' entPhysicalDescr' ;
$entity_array = snmpwalk_cache_multi_oid ( $device , 'entPhysicalDescr' , $entity_array , 'CISCO-ENTITY-SENSOR-MIB' );
echo ' entPhysicalName' ;
$entity_array = snmpwalk_cache_multi_oid ( $device , 'entPhysicalName' , $entity_array , 'CISCO-ENTITY-SENSOR-MIB' );
2011-03-15 11:24:35 +00:00
}
2010-08-11 17:08:56 +00:00
2011-03-15 11:24:35 +00:00
$oids = array ();
2015-07-13 20:10:26 +02:00
echo ' entPhySensorType' ;
$oids = snmpwalk_cache_multi_oid ( $device , 'entPhySensorType' , $oids , 'ENTITY-SENSOR-MIB' );
echo ' entPhySensorScale' ;
$oids = snmpwalk_cache_multi_oid ( $device , 'entPhySensorScale' , $oids , 'ENTITY-SENSOR-MIB' );
echo ' entPhySensorPrecision' ;
$oids = snmpwalk_cache_multi_oid ( $device , 'entPhySensorPrecision' , $oids , 'ENTITY-SENSOR-MIB' );
echo ' entPhySensorValue' ;
$oids = snmpwalk_cache_multi_oid ( $device , 'entPhySensorValue' , $oids , 'ENTITY-SENSOR-MIB' );
$entitysensor [ 'voltsDC' ] = 'voltage' ;
$entitysensor [ 'voltsAC' ] = 'voltage' ;
$entitysensor [ 'amperes' ] = 'current' ;
$entitysensor [ 'watts' ] = 'power' ;
$entitysensor [ 'hertz' ] = 'freq' ;
$entitysensor [ 'percentRH' ] = 'humidity' ;
$entitysensor [ 'rpm' ] = 'fanspeed' ;
$entitysensor [ 'celsius' ] = 'temperature' ;
$entitysensor [ 'dBm' ] = 'dbm' ;
if ( is_array ( $oids )) {
foreach ( $oids as $index => $entry ) {
// echo("[" . $entry['entPhySensorType'] . "|" . $entry['entPhySensorValue']. "|" . $index . "]");
if ( $entitysensor [ $entry [ 'entPhySensorType' ]] && is_numeric ( $entry [ 'entPhySensorValue' ]) && is_numeric ( $index )) {
$entPhysicalIndex = $index ;
$oid = '.1.3.6.1.2.1.99.1.1.1.4.' . $index ;
$current = $entry [ 'entPhySensorValue' ];
// ENTITY-SENSOR-MIB::entPhySensorUnitsDisplay.11 = STRING: "C"
$descr = $entity_array [ $index ][ 'entPhysicalName' ];
// if ($descr || $device['os'] == "iosxr")
if ( $descr ) {
$descr = rewrite_entity_descr ( $descr );
}
else {
$descr = $entity_array [ $index ][ 'entPhysicalDescr' ];
$descr = rewrite_entity_descr ( $descr );
}
2015-12-07 03:02:06 +00:00
$valid_sensor = check_entity_sensor ( $descr , $device );
2015-07-13 20:10:26 +02:00
$type = $entitysensor [ $entry [ 'entPhySensorType' ]];
// 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' ;
}
if ( $entry [ 'entPhySensorScale' ] == 'yocto' ) {
$divisor = '1' ;
$multiplier = '1' ;
}
if ( is_numeric ( $entry [ 'entPhySensorPrecision' ]) && $entry [ 'entPhySensorPrecision' ] > '0' ) {
$divisor = $divisor . str_pad ( '' , $entry [ 'entPhySensorPrecision' ], '0' );
}
$current = ( $current * $multiplier / $divisor );
if ( $type == 'temperature' ) {
if ( $current > '200' ) {
2015-12-07 03:02:06 +00:00
$valid_sensor = false ;
2015-07-13 20:10:26 +02:00
} $descr = preg_replace ( '/[T|t]emperature[|s]/' , '' , $descr );
}
// echo($descr . "|" . $index . "|" .$current . "|" . $multiplier . "|" . $divisor ."|" . $entry['entPhySensorScale'] . "|" . $entry['entPhySensorPrecision'] . "\n");
if ( $current == '-127' ) {
2015-12-07 03:02:06 +00:00
$valid_sensor = false ;
2015-07-13 20:10:26 +02:00
}
2015-12-07 03:02:06 +00:00
if ( $valid_sensor && dbFetchCell ( " SELECT COUNT(*) FROM `sensors` WHERE device_id = ? AND `sensor_class` = ? AND `sensor_type` = 'cisco-entity-sensor' AND `sensor_index` = ? " , array ( $device [ 'device_id' ], $type , $index )) == '0' ) {
2015-07-13 20:10:26 +02: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 );
}
} //end if
} //end foreach
} //end if
echo " \n " ;