Dashboard: add NVME power indicator

This commit is contained in:
bergware
2023-12-02 14:01:49 +01:00
parent 28c58465da
commit 8d2e93f9e8
2 changed files with 8 additions and 8 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ function get_nvme_info($device, $info) {
return exec("nvme id-ctrl /dev/$device | grep -Pom1 '^wctemp +: \K\d+'")-273;
case 'state':
$state = hexdec(exec("nvme get-feature /dev/$device -f2 | grep -Pom1 'value:\K0x\d+'"));
return exec("nvme id-ctrl /dev/$device | grep -Pom1 '^ps +$state : \S+ \K\S+'");
return exec("nvme id-ctrl /dev/$device | grep -Pom1 '^ps +$state : mp:\K\S+ \S+'");
case 'power':
$state = hexdec(exec("nvme get-feature /dev/$device -f2 | grep -Pom1 'value:\K0x\d+'"));
return exec("smartctl -c /dev/$device | grep -Pom1 '^ *$state [+-] +\K[^W]+'");
+7 -7
View File
@@ -30,10 +30,11 @@ require_once "$docroot/webGui/include/Translations.php";
// remember current language
$locale_init = $locale;
function my_power($device, $power) {
function my_power($device) {
global $display;
$number = _var($display,'number','.,');
$state = strtr(get_nvme_info($device,'state'),['non-operational' => 'green', 'operational' => 'orange']);
[$power,$state] = explode('W ',get_nvme_info($device,'state'));
$state = strtr($state, ['non-operational' => 'green', 'operational' => 'orange']);
return " / <span class='$state'>".number_format($power,2,$number[0])." W</span>";
}
function my_clock($time) {
@@ -162,8 +163,9 @@ function device_temp(&$disk, &$red, &$orange) {
global $display;
$spin = strpos(_var($disk,'color'),'blink')===false;
$temp = _var($disk,'temp','*');
$dev = _var($disk,'device');
$nvme = _var($disk,'transport')=='nvme';
[$hotNVME,$maxNVME] = $nvme ? get_nvme_info(_var($disk,'device'),'temp') : [-1,-1];
[$hotNVME,$maxNVME] = $nvme ? get_nvme_info($dev,'temp') : [-1,-1];
$hot = _var($disk,'hotTemp',-1)>=0 ? $disk['hotTemp'] : ($hotNVME>=0 ? $hotNVME : (_var($disk,'rotational',1)==0 && $display['hot']>0 ? $display['hot']+$display['ssd'] : $display['hot']));
$max = _var($disk,'maxTemp',-1)>=0 ? $disk['maxTemp'] : ($maxNVME>=0 ? $maxNVME : (_var($disk,'rotational',1)==0 && $display['max']>0 ? $display['max']+$display['ssd'] : $display['max']));
$top = $display['top'] ?? 120;
@@ -173,9 +175,7 @@ function device_temp(&$disk, &$red, &$orange) {
} elseif (exceed($temp,$hot,$top)) {
$heat = 'fire'; $color = 'orange'; $orange++;
}
$device = _var($disk,'device');
$power = $disk['power'] ?? ($nvme ? get_nvme_info($device,'power') : 0);
return (($spin && $temp>0) ? "<span class='$color-text'>".my_temp($temp)."</span>".($heat ? "<i class='fa fa-$heat $color-text heat'></i>" : "") : "*").($nvme ? my_power($device, $power) : "");
return (($spin && $temp>0) ? "<span class='$color-text'>".my_temp($temp)."</span>".($heat ? "<i class='fa fa-$heat $color-text heat'></i>" : "") : "*").($nvme ? my_power($dev) : "");
}
function device_smart(&$disk, &$fail, &$smart) {
global $numbers,$saved;
@@ -477,6 +477,6 @@ while (true) {
publish('update2', $echo);
$md5_old = $md5_new;
}
sleep(5);
sleep(2);
}
?>