is_numeric($ts) && $now - (int)$ts <= (int)setting_value('security.login_window_seconds') )); $_SESSION['login_failures'] = $failures; $lockedUntil = (int)($_SESSION['login_locked_until'] ?? 0); $csrfOk = !(bool)setting_value('security.login_csrf_required') || hash_equals($csrf, (string)($_POST['csrf'] ?? '')); if ($lockedUntil > $now) { $error = '로그인 잠금 중입니다. 잠시 후 다시 시도하세요.'; } elseif (!$csrfOk) { $error = '보안 토큰이 올바르지 않습니다.'; } elseif (hash_equals(APP_PASSWORD, (string)$_POST['login_password'])) { session_regenerate_id(true); $_SESSION['control_login'] = true; unset($_SESSION['login_failures'], $_SESSION['login_locked_until']); if (!empty($_POST['remember_login'])) { issue_remember_token(); } else { clear_remember_token(); } header('Location: /'); exit; } else { $failures[] = $now; $_SESSION['login_failures'] = $failures; if (count($failures) >= (int)setting_value('security.login_max_failures')) { $_SESSION['login_locked_until'] = $now + (int)setting_value('security.login_lock_seconds'); } $error = '비밀번호가 올바르지 않습니다.'; } } $loggedIn = signed_in(); ?> <?= e(APP_NAME) ?>

Fan and WiFi control panel

Updated: loading...

Logout

Fan Status

Fan RPM
-
PWM %
-

WiFi Status

2.4G Clients
-
5G Clients
-

System Status

Host
-
Load Avg
-
Active Users
-
Disk /
-
Memory
-
Uptime
-
Low Voltage
-
Last Low Voltage
-
LV Duration
-
LV 10m
-
Throttling
-
Last Throttling
-
Throttle Duration
-
Throttle 10m
-
Battery V
-
Battery SOC
-
Remaining
-

Sensor History

Temperature

Fan RPM

Battery SOC

Battery Voltage

Detail Charts

RP1 Temp

Fan Efficiency

CPU Watt

Remaining

WiFi Clients

BandHostnameIPMACSignalTX RateRX RateConnectedInactive

System Notice

Baseline: -

Notice History

No system notice history.
Process Details

CPU

PIDCPUServiceCommand
loading...

Memory

PIDMEMServiceCommand
loading...
Diagnostics

Custom Services

No custom services.

HA Notify History

No HA notify history.

dmesg

/tmp/dmesg.log