Update battery pack capacity constants

This commit is contained in:
seo
2026-06-15 23:31:43 +09:00
parent 1b3dd24340
commit 3b71eb268d
2 changed files with 15 additions and 1 deletions
+4
View File
@@ -13,6 +13,7 @@ Control은 라즈베리파이/리눅스 호스트의 팬과 시스템 상태를
- 팬 모드 `auto`, `manual`, `off` 제어 - 팬 모드 `auto`, `manual`, `off` 제어
- PWM slider 기반 수동 팬 제어 - PWM slider 기반 수동 팬 제어
- CPU/RP1 온도, 팬 RPM, 팬 효율, CPU 전력, 배터리 상태 차트 - CPU/RP1 온도, 팬 RPM, 팬 효율, CPU 전력, 배터리 상태 차트
- 배터리 잔여 시간은 1S8P 병렬팩 `2200mAh x 8 = 17600mAh`, nominal `3.7V`, 총 `65.12Wh` 기준으로 계산
- 라즈베리파이 저전압 현재 상태, 최근 감지 시각, 지속시간 표시 - 라즈베리파이 저전압 현재 상태, 최근 감지 시각, 지속시간 표시
- WiFi client 목록과 2.4G/5G client 수 표시 - WiFi client 목록과 2.4G/5G client 수 표시
- WiFi client 상태 표시 - WiFi client 상태 표시
@@ -67,6 +68,7 @@ Control은 라즈베리파이/리눅스 호스트의 팬과 시스템 상태를
- `push_subscriptions`: Web Push 구독 정보 - `push_subscriptions`: Web Push 구독 정보
- `push_event_logs`: Push 발송, 수신, 표시, 클릭, 실패 이벤트 - `push_event_logs`: Push 발송, 수신, 표시, 클릭, 실패 이벤트
- `/home/seo/secret/control.php`: 앱 비밀번호, DB 설정, VAPID key - `/home/seo/secret/control.php`: 앱 비밀번호, DB 설정, VAPID key
- 배터리 용량 설정은 `/home/seo/secret/control.php``battery.cell_capacity_mah`, `battery.parallel_cells`, `battery.nominal_voltage`, `battery.capacity_wh`를 사용합니다.
## Push 누락 방지 구조 ## Push 누락 방지 구조
@@ -168,6 +170,7 @@ control-wifi-observe.service
- `assets/wakelock.js`: WakeLock 버튼 상태와 Screen Wake Lock API 제어 - `assets/wakelock.js`: WakeLock 버튼 상태와 Screen Wake Lock API 제어
- `customAlert()`, `customConfirm()`, `customPrompt()`: 대시보드 공통 확인/입력 dialog - `customAlert()`, `customConfirm()`, `customPrompt()`: 대시보드 공통 확인/입력 dialog
- `controlLang`, `controlTheme`: 재접속 후에도 유지되는 언어/테마 localStorage key - `controlLang`, `controlTheme`: 재접속 후에도 유지되는 언어/테마 localStorage key
- `BATTERY_CELL_CAPACITY_MAH`, `BATTERY_PARALLEL_CELLS`, `BATTERY_CAPACITY_MAH`, `BATTERY_NOMINAL_VOLTAGE`, `BATTERY_CAPACITY_WH`: 병렬 배터리팩 용량과 잔여시간 계산 기준
## 보안 ## 보안
@@ -180,6 +183,7 @@ control-wifi-observe.service
## 운영 체크포인트 ## 운영 체크포인트
- 센서 수집 주기와 DB 증가량을 확인합니다. - 센서 수집 주기와 DB 증가량을 확인합니다.
- 배터리팩 변경 시 `/home/seo/secret/control.php``battery` 값을 먼저 갱신합니다. 현재 기준은 `2200mAh x 8 parallel = 17600mAh`, nominal `65.12Wh`입니다.
- 하드웨어 또는 OS 변경 후 fan sysfs 경로를 확인합니다. - 하드웨어 또는 OS 변경 후 fan sysfs 경로를 확인합니다.
- 2.4G 내장 WiFi는 `hostapd-24g.service` 개별 restart 직후 일부 IoT 단말이 WPA/EAPOL 재협상 루프에 들어갈 수 있으므로, 안정화된 상태에서는 개별 restart를 피하고 필요 시 전체 reboot 또는 채널 변경으로 재초기화합니다. - 2.4G 내장 WiFi는 `hostapd-24g.service` 개별 restart 직후 일부 IoT 단말이 WPA/EAPOL 재협상 루프에 들어갈 수 있으므로, 안정화된 상태에서는 개별 restart를 피하고 필요 시 전체 reboot 또는 채널 변경으로 재초기화합니다.
- 2026-06-07 조사 기준 `disassoc_low_ack=1`은 로그에 직접 원인으로 남지 않았고, 채널 변경 후 단말이 안정적으로 붙은 상태에서는 제거하지 않고 관찰합니다. 동일 단말이 짧게 재연결을 반복하면 그때 `disassoc_low_ack` 비활성화를 검토합니다. - 2026-06-07 조사 기준 `disassoc_low_ack=1`은 로그에 직접 원인으로 남지 않았고, 채널 변경 후 단말이 안정적으로 붙은 상태에서는 제거하지 않고 관찰합니다. 동일 단말이 짧게 재연결을 반복하면 그때 `disassoc_low_ack` 비활성화를 검토합니다.
+11 -1
View File
@@ -21,7 +21,17 @@ define('DB_PORT', (int)($controlDbConfig['port'] ?? 3306));
define('DB_NAME', (string)($controlDbConfig['name'] ?? 'fanpanel')); define('DB_NAME', (string)($controlDbConfig['name'] ?? 'fanpanel'));
define('DB_USER', (string)($controlDbConfig['user'] ?? 'fanpanel')); define('DB_USER', (string)($controlDbConfig['user'] ?? 'fanpanel'));
define('DB_PASS', (string)($controlDbConfig['pass'] ?? '')); define('DB_PASS', (string)($controlDbConfig['pass'] ?? ''));
define('BATTERY_CAPACITY_WH', isset($controlBatteryConfig['capacity_wh']) ? max(0.0, (float)$controlBatteryConfig['capacity_wh']) : 0.0);
$batteryCellCapacityMah = max(0.0, (float)($controlBatteryConfig['cell_capacity_mah'] ?? 0.0));
$batteryParallelCells = max(1, (int)($controlBatteryConfig['parallel_cells'] ?? 1));
$batteryNominalVoltage = max(0.0, (float)($controlBatteryConfig['nominal_voltage'] ?? 0.0));
$batteryDerivedCapacityWh = ($batteryCellCapacityMah / 1000) * $batteryParallelCells * $batteryNominalVoltage;
define('BATTERY_CELL_CAPACITY_MAH', $batteryCellCapacityMah);
define('BATTERY_PARALLEL_CELLS', $batteryParallelCells);
define('BATTERY_CAPACITY_MAH', $batteryCellCapacityMah * $batteryParallelCells);
define('BATTERY_NOMINAL_VOLTAGE', $batteryNominalVoltage);
define('BATTERY_CAPACITY_WH', isset($controlBatteryConfig['capacity_wh']) ? max(0.0, (float)$controlBatteryConfig['capacity_wh']) : $batteryDerivedCapacityWh);
date_default_timezone_set('Asia/Seoul'); date_default_timezone_set('Asia/Seoul');