Dashboard UPS: use json fomatting

This commit is contained in:
bergware
2023-12-26 11:54:54 +01:00
parent a0d3d83ce2
commit a6c478025c
2 changed files with 24 additions and 24 deletions

View File

@@ -1615,17 +1615,17 @@ dashboard.on('message',function(msg,meta) {
});
<?if ($apcupsd):?>
var apcups = new NchanSubscriber('/sub/apcups',{subscriber:'websocket'});
apcups.on('message',function(data) {
data = data.split(';');
$('#ups_model').html(data[0]);
$('#ups_status').html(data[1]);
$('#ups_status_').html(data[1]);
$('#ups_bcharge').html(data[2]);
$('#ups_timeleft').html(data[3]);
$('#ups_nompower').html(data[4]);
$('#ups_loadpct').html(data[5]);
$('#ups_loadpct_').html(data[5]);
$('#ups_outputv').html(data[6]);
apcups.on('message',function(msg) {
var get = JSON.parse(msg);
$('#ups_model').html(get[0]);
$('#ups_status').html(get[1]);
$('#ups_status_').html(get[1]);
$('#ups_bcharge').html(get[2]);
$('#ups_timeleft').html(get[3]);
$('#ups_nompower').html(get[4]);
$('#ups_loadpct').html(get[5]);
$('#ups_loadpct_').html(get[5]);
$('#ups_outputv').html(get[6]);
});
<?endif;?>

View File

@@ -68,8 +68,8 @@ while (true) {
$locale_init = _var($display,'locale');
update_translation($locale_init);
}
unset($status,$rows,$power,$load,$freq,$output,$volt);
$status = array_fill(0,7,"<span>-</span>");
unset($echo,$rows,$power,$load,$freq,$output,$volt);
$echo = array_fill(0,7,"<span>-</span>");
if (file_exists("/var/run/apcupsd.pid")) {
// get battery-level and runtime settings
$cfg = parse_plugin_cfg('dynamix.apcupsd');
@@ -80,32 +80,32 @@ while (true) {
[$key, $val] = array_map('trim', explode(':', $row, 2));
switch ($key) {
case 'MODEL':
$status[0] = $val;
$echo[0] = $val;
break;
case 'STATUS':
$text = strtr($val, $state);
$status[1] = $val ? (strpos($val,'ONLINE')!==false ? "<span $green>$text</span>" : "<span $red>$text</span>") : "<span $orange>"._('Refreshing')."...</span>";
$echo[1] = $val ? (strpos($val,'ONLINE')!==false ? "<span $green>$text</span>" : "<span $red>$text</span>") : "<span $orange>"._('Refreshing')."...</span>";
break;
case 'BCHARGE':
$charge = round($val);
$status[2] = $charge>$level ? "<span $green>$charge %</span>" : "<span $red>$charge %</span>";
$echo[2] = $charge>$level ? "<span $green>$charge %</span>" : "<span $red>$charge %</span>";
break;
case 'TIMELEFT':
$time = round($val);
$unit = _('minutes');
$status[3] = $time>$runtime ? "<span $green>$time $unit</span>" : "<span $red>$time $unit</span>";
$echo[3] = $time>$runtime ? "<span $green>$time $unit</span>" : "<span $red>$time $unit</span>";
break;
case 'NOMPOWER':
$power = $val;
$status[4] = $power>0 ? "<span $green>$power W</span>" : "<span $red>$power W</span>";
$echo[4] = $power>0 ? "<span $green>$power W</span>" : "<span $red>$power W</span>";
break;
case 'LOADPCT':
$load = $val;
$status[5] = round($load)." %";
$echo[5] = round($load)." %";
break;
case 'OUTPUTV':
$output = round($val);
$status[6] = "$output V";
$echo[6] = "$output V";
break;
case 'NOMINV':
$volt = $val;
@@ -117,11 +117,11 @@ while (true) {
break;
}
}
if (isset($power) && isset($load)) $status[5] = ($load<90 ? "<span $green>" : "<span $red>").round($power*$load/100)." W (".$status[5].")</span>";
elseif (isset($load)) $status[5] = ($load<90 ? "<span>" : "<span $red>").$status[5]."</span>";
$status[6] = isset($output) ? ((!$volt || ($minv<$output && $output<$maxv) ? "<span $green>" : "<span $red>").$status[6].(isset($freq) ? " ~ $freq Hz" : "")."</span>") : $status[6];
if (isset($power) && isset($load)) $echo[5] = ($load<90 ? "<span $green>" : "<span $red>").round($power*$load/100)." W (".$echo[5].")</span>";
elseif (isset($load)) $echo[5] = ($load<90 ? "<span>" : "<span $red>").$echo[5]."</span>";
$echo[6] = isset($output) ? ((empty($volt) || ($minv<$output && $output<$maxv) ? "<span $green>" : "<span $red>").$echo[6].(isset($freq) ? " ~ $freq Hz" : "")."</span>") : $echo[6];
}
$echo = implode(';', $status);
$echo = json_encode($echo);
$md5_new = md5($echo,true);
if ($md5_new !== $md5_old) {
publish('apcups', $echo);