POSA_LEAKSMS/php/config.local.example.php
cw2007 c8b448c225 chore: 온습도 임계 예시 갱신 (고온 27℃·고습 60%, 저습·결로 경보 비활성)
- METRIC_TEMP_HIGH_C 30→27
- METRIC_RH_HIGH 70→60
- METRIC_RH_LOW 20→-1 (저습 경보 OFF; RH 항상 ≥0 라 미발화)
- METRIC_DEWPOINT_MARGIN_C 추가 0 (결로 경보 OFF; >0 분기 스킵)
- 기본값 주석에서 결로 항목 제거
2026-06-24 16:07:40 +09:00

63 lines
3.2 KiB
PHP

<?php
// =============================================================================
// config.local.example.php - v2606 (SHT30 온습도) 운영 설정 예시
//
// 1. 이 파일을 config.local.php로 복사합니다.
// 2. 실제 운영 값으로 교체합니다.
// 3. config.local.php는 서버에만 보관하고 공유하지 않습니다.
// =============================================================================
return [
'DB_HOST' => 'localhost',
'DB_PORT' => 3306,
'DB_NAME' => 'your_db_name',
'DB_USER' => 'your_db_user',
'DB_PASS' => 'your_db_password',
'API_KEY' => 'replace-with-long-random-secret',
// 요청 서명은 HMAC-SHA256(키=API_KEY, 메시지=요청본문 바이트)이며 X-Signature 헤더로
// 전송된다. 레거시 키-접두 sha256 폴백은 기본 비활성이고, 운영(STM32 HMAC 전용)에서는
// 반드시 false 로 둔다. 과거 RPi(레거시) 클라이언트가 아직 남아 있을 때만 true 로 켠다.
'ALLOW_LEGACY_BODY_SIGNATURE' => false,
'SMS_USER_ID' => 'your-cafe24-sms-user-id',
'SMS_SECURE' => 'your-cafe24-sms-secure-key',
'SMS_SENDER' => '01000000000',
'SMS_RECIPIENTS' => [
'01000000000',
],
'ADMIN_USER' => 'admin',
'ADMIN_PASSWORD_HASH' => '$2y$10$replace.with.password_hash.output',
// Base32 TOTP secret. MUST be left EMPTY here and set to a UNIQUE generated value in
// config.local.php. Empty '' => admin_mfa_configured() is false => login is DISABLED
// (fail-closed) until a real secret is set. NEVER put a literal Base32 string in this
// example file: any non-empty Base32-ish value (even "REPLACE_WITH_...") decodes to a
// usable, publicly-known TOTP secret and silently enables MFA on a known seed.
// Generate a unique secret on the server only:
// php -r "require 'php/admin_security.php'; echo admin_totp_secret().PHP_EOL;"
'ADMIN_TOTP_SECRET' => '',
// Temporary bootstrap token for setup_mfa.php. Remove or empty after MFA enrollment.
'MFA_SETUP_TOKEN' => 'replace-with-temporary-random-token',
// 온습도 임계 경보 (서버 판정 → SMS). 운영 환경에 맞게 조정.
'METRIC_TEMP_HIGH_C' => 27, // 고온 임계(℃)
'METRIC_TEMP_LOW_C' => 10, // 저온 임계(℃)
'METRIC_RH_HIGH' => 60, // 고습 임계(%)
'METRIC_RH_LOW' => -1, // 저습 경보 비활성(RH 는 항상 ≥0 → 절대 발화 안 함)
'METRIC_DEWPOINT_MARGIN_C' => 0, // 결로(이슬점) 경보 비활성(0 이면 판정 분기 스킵)
'METRIC_ALERT_COOLDOWN_SEC' => 1800, // 동일 종류 경보 재발송 억제(초, 기본 30분)
// 미복귀 경보 2차(야간) 에스컬레이션 수신자. 비우면 비활성(opt-in).
'SMS_RECIPIENTS_TIER2' => [],
'ESCALATE_AFTER_SEC' => 1800, // 경보 미복귀 30분 후 2차 통지
// 아래는 기본값으로 동작(필요 시에만 override):
// SMS_BALANCE_WARN_THRESHOLD(30건), HEALTH_SMS_HOUR(9시),
// STUCK_DETECT_SAMPLES(6), SMS_RETRY_OFFLINE(true)
'SMS_LOG_RETENTION_DAYS' => 365,
'SENSOR_LOG_RETENTION_DAYS' => 365,
'SENSOR_METRIC_RETENTION_DAYS' => 365,
'ADMIN_AUDIT_RETENTION_DAYS' => 365,
];