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

Nearby WiFi Scan

Nearby Bluetooth Scan

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