['measured']['port']['345'][] = sensor array switch ($entry['measured_class']) { case 'port': // Ports can be MultiLane, ie 100Gbit, 40Gbit, detect (currently by descriptions) if (preg_match('/(Lane|Channel) (?\d+)/i', $entry['sensor_descr'], $matches)) { $lane = $matches['lane']; } else { $lane = 0; } $sensors_db['measured'][$entry['measured_class']][$entry['measured_entity']][$entry['sensor_class']][] = $entry; $measured_multi[$entry['measured_class']][$entry['measured_entity']][$lane][$entry['sensor_class']][] = $entry; break; default: $sensors_db['measured'][$entry['measured_class']][$entry['measured_entity']][$entry['sensor_class']][] = $entry; } } else { $sensors_db[$entry['sensor_class']][$entry['sensor_id']] = $entry; } } //} //r($sensors_db['measured']); //r($measured_multi); // Print Multi sensors at single line for each entity /* WiP if (count($measured_multi)) { $vars['measured_icon'] = FALSE; // Hide measured icons foreach ($measured_multi as $measured_class => $measured_entity) { $box_args = ['title' => nicecase($measured_class) . ' sensors', 'url' => generate_url(['page' => 'device', 'device' => $device['device_id'], 'tab' => $measured_class . 's', 'view' => 'sensors']), 'icon' => $config['icon']['sensor'] ]; echo generate_box_open($box_args); echo ' '; echo '
'; echo generate_box_close(); } } */ // Now print founded bundle (measured_class+sensor) if (isset($sensors_db['measured'])) { $vars['measured_icon'] = FALSE; // Hide measured icons foreach ($sensors_db['measured'] as $measured_class => $measured_entity) { $box_args = array('title' => nicecase($measured_class).' sensors', 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => $measured_class.'s', 'view' => 'sensors')), 'icon' => $config['icon']['sensor'] ); echo generate_box_open($box_args); echo ' '; foreach ($measured_entity as $entity_id => $entry) { $entity = get_entity_by_id_cache($measured_class, $entity_id); //r($entity); $entity_link = generate_entity_link($measured_class, $entity); $entity_type = entity_type_translate_array($measured_class); // Remove port name from sensor description $rename_from = []; if ($measured_class === 'port') { if (is_numeric($entity['port_label'])) { $rename_from[] = $entity['port_label'].' '; } else { $rename_from[] = $entity['port_label']; $rename_from[] = $entity['ifDescr']; $rename_from[] = $entity['port_label_short']; } if (strlen($entity['port_label_base']) > 4) { $rename_from[] = $entity['port_label_base']; } $rename_from = array_unique($rename_from); } else { $rename_from[] = entity_rewrite($measured_class, $entity); } //r($rename_from); //echo(' // echo(' '); // order dom sensors always by temperature, voltage, current, dbm, power $order = []; if (safe_count($entry) > 0) { $classes = array_keys($entry); //r($types); $order = array_intersect([ 'temperature', 'voltage', 'current', 'dbm', 'power' ], $classes); $order = array_merge($order, array_diff($classes, $order)); //r($order); } foreach ($order as $class) { foreach ($entry[$class] as $sensor) { $sensor['sensor_descr'] = trim(str_ireplace($rename_from, '', $sensor['sensor_descr']), ":- \t\n\r\0\x0B"); if (empty($sensor['sensor_descr'])) { // Some time sensor descriptions equals to entity name $sensor['sensor_descr'] = nicecase($sensor['sensor_class']); } print_sensor_row($sensor, $vars); } } } ?>
' . get_icon($entity_type['icon']) . ' ' . $entity_link . '
$sensors) { if ($sensor_type === 'measured') { continue; } // Just be on the safe side if (count($sensors)) { $box_args = array('title' => nicecase($sensor_type), 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'health', 'metric' => $sensor_type)), 'icon' => $config['sensor_types'][$sensor_type]['icon'], ); echo generate_box_open($box_args); echo(''); foreach ($sensors as $sensor) { print_sensor_row($sensor, $vars); } echo("
"); echo generate_box_close(); } } // EOF