UPS 제거 상태에 맞춘 배터리 기능 정리

This commit is contained in:
seo
2026-07-03 14:18:05 +09:00
parent 6fceae0c01
commit 1bbbe5b694
5 changed files with 106 additions and 91 deletions
+43 -32
View File
@@ -3219,8 +3219,10 @@ function collect_snapshot(bool $applyFan = true): array
'watts' => isset($latest['cpu_watts']) ? (float)$latest['cpu_watts'] : null,
];
$battery = $applyFan ? battery_status() : [
'voltage' => isset($latest['battery_voltage']) ? (float)$latest['battery_voltage'] : null,
'percent' => isset($latest['battery_percent']) ? (float)$latest['battery_percent'] : null,
'enabled' => CONTROL_BATTERY_ENABLED,
'removed' => !CONTROL_BATTERY_ENABLED,
'voltage' => CONTROL_BATTERY_ENABLED && isset($latest['battery_voltage']) ? (float)$latest['battery_voltage'] : null,
'percent' => CONTROL_BATTERY_ENABLED && isset($latest['battery_percent']) ? (float)$latest['battery_percent'] : null,
];
if ($applyFan) {
@@ -3231,8 +3233,8 @@ function collect_snapshot(bool $applyFan = true): array
'rp1_temp_c' => $rp1Temp,
'cpu_voltage' => $cpuPower['voltage'],
'cpu_watts' => $cpuPower['watts'],
'battery_voltage' => $battery['voltage'],
'battery_percent' => $battery['percent'],
'battery_voltage' => CONTROL_BATTERY_ENABLED ? $battery['voltage'] : null,
'battery_percent' => CONTROL_BATTERY_ENABLED ? $battery['percent'] : null,
'pwm_value' => $pwm,
'pwm_percent' => round($pwm / 255 * 100, 2),
'pwm_mode' => $policy['mode'],
@@ -3278,34 +3280,43 @@ function collect_snapshot(bool $applyFan = true): array
'throttling' => $throttledStatuses['throttling'],
]);
$history = add_battery_remaining_history(sensor_history((int)setting_value('battery.history_chart_limit')));
$batteryTrend = battery_trend_history((int)setting_value('battery.trend_hours'));
$batteryProfile = battery_profile_history((int)setting_value('battery.profile_days'));
$battery['remaining'] = battery_remaining_estimate($battery, $history, $batteryTrend, $batteryProfile);
$history = sync_current_battery_remaining_history($history, [
'time' => date('Y-m-d H:i:s'),
'temp_c' => $temp,
'fan_rpm' => $rpm,
'fan_efficiency' => fan_efficiency($rpm, $temp, $cpuPower['watts'] ?? null),
'rp1_temp_c' => $rp1Temp,
'cpu_voltage' => $cpuPower['voltage'],
'cpu_watts' => $cpuPower['watts'],
'battery_voltage' => $battery['voltage'],
'battery_percent' => $battery['percent'],
'fan_pwm' => $pwm,
'pwm_percent' => round($pwm / 255 * 100, 2),
'pwm_mode' => $policy['mode'],
'cpu_load_1' => round((float)$load[0], 2),
'cpu_load_5' => round((float)$load[1], 2),
'cpu_load_15' => round((float)$load[2], 2),
'disk_total_kb' => $disk['total_kb'],
'disk_used_kb' => $disk['used_kb'],
'disk_free_kb' => $disk['free_kb'],
'mem_total_mb' => $mem['total_mb'],
'mem_used_mb' => $mem['used_mb'],
'mem_percent' => $mem['total_mb'] > 0 ? round($mem['used_mb'] / $mem['total_mb'] * 100, 1) : 0,
], $battery['remaining']['seconds'] ?? null);
$history = array_slice($history, -(int)setting_value('battery.history_sync_limit'));
if (CONTROL_BATTERY_ENABLED) {
$history = add_battery_remaining_history(sensor_history((int)setting_value('battery.history_chart_limit')));
$batteryTrend = battery_trend_history((int)setting_value('battery.trend_hours'));
$batteryProfile = battery_profile_history((int)setting_value('battery.profile_days'));
$battery['remaining'] = battery_remaining_estimate($battery, $history, $batteryTrend, $batteryProfile);
$history = sync_current_battery_remaining_history($history, [
'time' => date('Y-m-d H:i:s'),
'temp_c' => $temp,
'fan_rpm' => $rpm,
'fan_efficiency' => fan_efficiency($rpm, $temp, $cpuPower['watts'] ?? null),
'rp1_temp_c' => $rp1Temp,
'cpu_voltage' => $cpuPower['voltage'],
'cpu_watts' => $cpuPower['watts'],
'battery_voltage' => $battery['voltage'],
'battery_percent' => $battery['percent'],
'fan_pwm' => $pwm,
'pwm_percent' => round($pwm / 255 * 100, 2),
'pwm_mode' => $policy['mode'],
'cpu_load_1' => round((float)$load[0], 2),
'cpu_load_5' => round((float)$load[1], 2),
'cpu_load_15' => round((float)$load[2], 2),
'disk_total_kb' => $disk['total_kb'],
'disk_used_kb' => $disk['used_kb'],
'disk_free_kb' => $disk['free_kb'],
'mem_total_mb' => $mem['total_mb'],
'mem_used_mb' => $mem['used_mb'],
'mem_percent' => $mem['total_mb'] > 0 ? round($mem['used_mb'] / $mem['total_mb'] * 100, 1) : 0,
], $battery['remaining']['seconds'] ?? null);
$history = array_slice($history, -(int)setting_value('battery.history_sync_limit'));
} else {
$history = sensor_history(240);
$battery['remaining'] = [
'display' => 'UPS 제거됨',
'seconds' => null,
'source' => 'battery_removed',
];
}
$processes = process_resource_data((int)setting_value('display.process_limit'));
$fanSpike = fan_spike_analysis($history, $fan, $system, $processes);