docs: 프로젝트 소개서 추가 (시스템 개요·SMS 발송 시점·대시보드)
담당자 대상 소개 문서 — 센서 소개가 아닌 프로젝트 전체 관점: - 시스템 흐름: 현장 노드 → 서버(서명검증·임계판정) → 담당자 SMS·대시보드. - 언제·누구에게 문자가 가나: 문자 14종 발송 조건(화재의심 PM>35/75, 온습도, 결로, 누수, 오프라인, 에스컬레이션, 잔액, 정기점검) + 수신 계층(현장별 담당/전역/야간 2차) + 쿨다운·디바운스. - 웹 대시보드 구성: 상태 배너·KPI 6타일·알림/대응 패널·탭 5종·예방 신호. - 운영 임계 요약 + PMS7003 화재 보조 조기징후 유의(인증 감지기 아님). 자기완결 HTML, 브라우저 렌더 검증. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Dj4n17ZvGAhga6D4pNRjn
This commit is contained in:
parent
f29dc7cc65
commit
01770e21d0
1 changed files with 280 additions and 0 deletions
280
docs/시스템_소개서-v2606-20260719.html
Normal file
280
docs/시스템_소개서-v2606-20260719.html
Normal file
|
|
@ -0,0 +1,280 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>서버실 통합 모니터링 시스템 · 프로젝트 소개서</title>
|
||||||
|
<style>
|
||||||
|
:root{
|
||||||
|
--bg:#eef1f5; --card:#fff; --ink:#1f2733; --ink2:#51607a; --ink3:#8a95a6;
|
||||||
|
--line:#e3e8ef; --head:#0b2545; --accent:#134074; --accent2:#1971c2;
|
||||||
|
--fire:#e8590c; --leak:#1971c2; --th:#7048e8; --off:#868e96; --ok:#2b8a3e;
|
||||||
|
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Malgun Gothic","Apple SD Gothic Neo","Noto Sans KR",sans-serif;
|
||||||
|
--mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
|
||||||
|
}
|
||||||
|
*{box-sizing:border-box}
|
||||||
|
html,body{margin:0}
|
||||||
|
body{font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:1.65;
|
||||||
|
-webkit-font-smoothing:antialiased;padding:26px 16px 70px}
|
||||||
|
.wrap{max-width:940px;margin:0 auto}
|
||||||
|
|
||||||
|
header.hero{background:linear-gradient(135deg,#0b2545 0%,#134074 55%,#1971c2 100%);
|
||||||
|
color:#fff;border-radius:16px;padding:30px 30px;box-shadow:0 10px 28px rgba(11,37,69,.18)}
|
||||||
|
.hero .eyebrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#a9c6e8;font-weight:700;margin:0 0 8px}
|
||||||
|
.hero h1{margin:0 0 12px;font-size:27px;line-height:1.25;font-weight:800}
|
||||||
|
.hero p{margin:0;font-size:15px;color:#dce7f5;max-width:74ch}
|
||||||
|
.hero .meta{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px}
|
||||||
|
.hero .meta span{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);
|
||||||
|
border-radius:999px;padding:5px 13px;font-size:12.5px;font-weight:600}
|
||||||
|
|
||||||
|
section{background:var(--card);border:1px solid var(--line);border-radius:14px;
|
||||||
|
padding:24px 26px;margin-top:20px;box-shadow:0 2px 8px rgba(16,24,40,.05)}
|
||||||
|
h2{display:flex;align-items:center;gap:12px;margin:0 0 8px;font-size:20px;font-weight:800;color:var(--ink)}
|
||||||
|
h2 .n{flex:none;width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;
|
||||||
|
font-size:15px;display:flex;align-items:center;justify-content:center;font-weight:800}
|
||||||
|
h2 + .lead{margin:0 0 18px;color:var(--ink2);font-size:14.5px}
|
||||||
|
h3{margin:24px 0 10px;font-size:15.5px;font-weight:800;color:var(--accent)}
|
||||||
|
|
||||||
|
.flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:6px 0 4px}
|
||||||
|
.flow .step{flex:1 1 150px;min-width:140px;background:#f7f9fc;border:1px solid var(--line);
|
||||||
|
border-radius:11px;padding:13px 14px}
|
||||||
|
.flow .step b{display:block;font-size:14px;margin-bottom:3px}
|
||||||
|
.flow .step span{font-size:12.5px;color:var(--ink2)}
|
||||||
|
.flow .arrow{align-self:center;color:var(--ink3);font-weight:800;font-size:18px}
|
||||||
|
|
||||||
|
table{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:6px}
|
||||||
|
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
|
||||||
|
thead th{background:#f3f6fa;color:var(--accent);font-weight:800;font-size:12.5px;border-bottom:2px solid #d6e0ec}
|
||||||
|
td.mono,th.mono{font-family:var(--mono);white-space:nowrap;font-size:12.5px}
|
||||||
|
tbody tr:nth-child(even){background:#fbfcfe}
|
||||||
|
.scroll{overflow-x:auto}
|
||||||
|
|
||||||
|
.tag{display:inline-block;font-family:var(--mono);font-size:12px;font-weight:700;
|
||||||
|
padding:2px 8px;border-radius:6px;white-space:nowrap}
|
||||||
|
.t-fire{background:#fff1e6;color:var(--fire)}
|
||||||
|
.t-th{background:#efeafe;color:var(--th)}
|
||||||
|
.t-leak{background:#e7f1fb;color:var(--leak)}
|
||||||
|
.t-off{background:#eef0f2;color:#495661}
|
||||||
|
.t-ok{background:#e7f6ec;color:var(--ok)}
|
||||||
|
.t-sys{background:#f0f2f5;color:#51607a}
|
||||||
|
|
||||||
|
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:6px}
|
||||||
|
.box{border:1px solid var(--line);border-radius:11px;padding:14px 15px;background:#fbfcfe}
|
||||||
|
.box h4{margin:0 0 6px;font-size:14px;color:var(--ink)}
|
||||||
|
.box p{margin:0;font-size:13px;color:var(--ink2)}
|
||||||
|
.box .k{font-family:var(--mono);font-size:12px;color:var(--ink3)}
|
||||||
|
|
||||||
|
.note{border:1px solid #ffd8a8;background:#fff7ed;border-radius:11px;padding:14px 16px;margin-top:16px}
|
||||||
|
.note b{color:var(--fire)}
|
||||||
|
.note p{margin:0;font-size:13.5px;color:#7a4a1a}
|
||||||
|
|
||||||
|
.pills{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 2px}
|
||||||
|
.pill{background:#f3f6fa;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;color:var(--ink2)}
|
||||||
|
|
||||||
|
code,.ic{font-family:var(--mono);background:#eef2f7;padding:1px 6px;border-radius:5px;font-size:12.5px}
|
||||||
|
ul.tight{margin:6px 0 0;padding-left:20px}
|
||||||
|
ul.tight li{margin:4px 0;font-size:13.5px}
|
||||||
|
.muted{color:var(--ink3);font-size:12.5px}
|
||||||
|
footer{color:var(--ink3);font-size:12px;text-align:center;margin-top:26px}
|
||||||
|
|
||||||
|
@media (max-width:640px){ .hero h1{font-size:22px} }
|
||||||
|
@media print{
|
||||||
|
body{background:#fff;padding:0;font-size:12px}
|
||||||
|
.wrap{max-width:100%}
|
||||||
|
.hero{background:#fff!important;color:#000;border:2px solid var(--accent);box-shadow:none}
|
||||||
|
.hero .eyebrow{color:var(--accent)} .hero p{color:#333} .hero .meta span{background:#fff;border-color:#999;color:#000}
|
||||||
|
section{box-shadow:none;border:1px solid #bbb;page-break-inside:avoid}
|
||||||
|
h2 .n{background:var(--accent)!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
|
||||||
|
table,tr,td,th,.box,.note{page-break-inside:avoid}
|
||||||
|
*{-webkit-print-color-adjust:exact;print-color-adjust:exact}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<header class="hero">
|
||||||
|
<p class="eyebrow">서버실 통합 모니터링 · leak_sms_v3</p>
|
||||||
|
<h1>서버실 통합 모니터링 시스템 — 프로젝트 소개서</h1>
|
||||||
|
<p>센서가 감지한 이상을 <b>담당자 문자(SMS)</b>로 즉시 알리고, <b>웹 대시보드</b>에서 전체 현황을
|
||||||
|
한눈에 보는 시스템입니다. 이 문서는 시스템이 어떻게 동작하는지, <b>언제 누구에게 문자가 가는지</b>,
|
||||||
|
<b>웹사이트에서 무엇을 볼 수 있는지</b>를 정리합니다.</p>
|
||||||
|
<div class="meta">
|
||||||
|
<span>대상: 서버실 · 문서고 (항온항습)</span>
|
||||||
|
<span>감시: 누수 · 화재의심(PM) · 온습도 · 결로 · 장비상태</span>
|
||||||
|
<span>버전 v2606 · 2026-07</span>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- 1. 시스템 개요 -->
|
||||||
|
<section>
|
||||||
|
<h2><span class="n">1</span>시스템 개요 — 무엇을, 어떻게</h2>
|
||||||
|
<p class="lead">현장 센서 장비(라즈베리파이)가 측정·감지한 값을 중앙 서버로 보내면, 서버가 이상 여부를
|
||||||
|
판정해 담당자에게 문자를 보내고 대시보드에 표시합니다. 이상 판정 기준은 모두 <b>서버</b>에 있어,
|
||||||
|
장비를 다시 만지지 않고 값만 바꿀 수 있습니다.</p>
|
||||||
|
|
||||||
|
<div class="flow">
|
||||||
|
<div class="step"><b>① 현장 센서 노드</b><span>누수·온습도·미세먼지(PM)·카메라. 측정/감지 후 서버로 전송.</span></div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="step"><b>② 중앙 서버</b><span>서명 검증 → 저장(MySQL) → 이상 판정(임계값) → 문자·대시보드.</span></div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="step"><b>③ 통지</b><span>담당자 SMS 발송.</span></div>
|
||||||
|
<div class="arrow">→</div>
|
||||||
|
<div class="step"><b>④ 웹 대시보드</b><span>전 현장 현황·추이·이력 표시.</span></div>
|
||||||
|
</div>
|
||||||
|
<p class="muted" style="margin-top:12px">전송 구간은 전 노드 공통으로 <code>HMAC-SHA256</code> 서명해 위·변조를 차단합니다.
|
||||||
|
판정 기준(임계값)은 서버 설정 파일 <code>config.local.php</code> 에서 현장에 맞춰 조정합니다.</p>
|
||||||
|
|
||||||
|
<h3>노드 구성</h3>
|
||||||
|
<div class="scroll">
|
||||||
|
<table>
|
||||||
|
<thead><tr><th>노드</th><th>탑재</th><th>측정/감지</th><th>보고 주기(기본)</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td><b>누수 노드</b></td>
|
||||||
|
<td>누수 프로브 (필요 시 카메라·SHT30·PMS7003 확장)</td>
|
||||||
|
<td>누수 유무 (확장 시 온습도·미세먼지·현장 사진)</td>
|
||||||
|
<td>정상 10분 / 누수 중 10초</td></tr>
|
||||||
|
<tr><td><b>온습도 노드</b></td>
|
||||||
|
<td>SHT30 (온습도 모듈)</td>
|
||||||
|
<td>온도 · 습도</td>
|
||||||
|
<td>1시간</td></tr>
|
||||||
|
<tr><td><b>상태 표시기</b> <span class="muted">(선택)</span></td>
|
||||||
|
<td>소형 디스플레이 (Zero 2 W)</td>
|
||||||
|
<td>센서 아님 — 현황을 현장에 표시</td>
|
||||||
|
<td>—</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p class="muted" style="margin-top:10px">확장 시 미세먼지(PM)·온습도는 같은 노드에 함께 실려 하나의 현장 번호로 보고되며,
|
||||||
|
서버가 종류를 구분해 별도로 판정합니다. 배선 상세는 <b>센서 형태·내용 보고서</b>를 참조하세요.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 2. 언제 문자가 가나 -->
|
||||||
|
<section>
|
||||||
|
<h2><span class="n">2</span>언제 · 누구에게 문자가 가나</h2>
|
||||||
|
<p class="lead">이상이 생기면 해당 <b>현장 담당자</b>에게 문자가 즉시 발송됩니다. 문자는 짧은 단문(1건)으로
|
||||||
|
<code>[종류] 위치 / 값·상태 / 시각</code> 형식입니다.</p>
|
||||||
|
|
||||||
|
<h3>수신자 — 담당자 지정 방식</h3>
|
||||||
|
<div class="cards">
|
||||||
|
<div class="box"><h4>현장별 담당 그룹</h4><p>현장(센서)마다 받을 담당자를 따로 지정합니다. 그 현장의 경보는 지정된 담당자에게만 갑니다.</p><p class="k">SENSOR_RECIPIENTS</p></div>
|
||||||
|
<div class="box"><h4>기본(전역) 수신자</h4><p>현장별 지정이 없으면 기본 담당자에게 갑니다. 시스템 공통 통지(정기점검·잔액)도 여기로.</p><p class="k">SMS_RECIPIENTS</p></div>
|
||||||
|
<div class="box"><h4>2차(야간) 담당</h4><p>경보가 오래 미복구되면 상급/야간 담당에게 <b>추가로</b> 한 번 더 알립니다(에스컬레이션).</p><p class="k">SMS_RECIPIENTS_TIER2</p></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>문자 종류 · 발송 조건</h3>
|
||||||
|
<div class="scroll">
|
||||||
|
<table>
|
||||||
|
<thead><tr><th>문자(태그)</th><th>언제 가나 (기본값)</th><th>수신</th><th>반복 억제</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td><span class="tag t-fire">[화재의심]</span></td>
|
||||||
|
<td>미세먼지 <b>PM2.5 > 35</b> 또는 <b>PM10 > 75</b> ㎍/㎥ (연기 급증 = 화재 조기징후)</td>
|
||||||
|
<td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-th">[고온경보]</span></td><td>온도 <b>> 30℃</b></td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-th">[저온경보]</span></td><td>온도 <b>< 10℃</b></td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-th">[고습경보]</span></td><td>습도 <b>> 70%</b></td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-th">[저습경보]</span></td><td>습도 <b>< 20%</b></td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-th">[결로주의]</span></td><td>결로마진(온도−이슬점) <b>≤ 3℃</b> — 표면 결로·장비 손상 위험</td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-leak">[누수감지]</span></td><td>누수 확정(<b>60초</b> 지속 확인 후). 물 튐 오탐 방지</td><td>현장 담당</td><td>30분</td></tr>
|
||||||
|
<tr><td><span class="tag t-leak">[누수복구]</span></td><td>누수 해소 확정(<b>180초</b> 지속 확인). 직전 감지가 있었을 때만</td><td>현장 담당</td><td>1회</td></tr>
|
||||||
|
<tr><td><span class="tag t-ok">[정상복귀]</span></td><td>온습도가 임계 안쪽으로 회복(여유 확보) 시</td><td>현장 담당</td><td>1회</td></tr>
|
||||||
|
<tr><td><span class="tag t-off">[장비 오프라인]</span></td><td>보고가 끊김 — 누수/PM 노드 <b>약 20분</b>, 온습도 노드 <b>약 125분</b> 무응답</td><td>현장 담당</td><td>재시도 보장</td></tr>
|
||||||
|
<tr><td><span class="tag t-off">[장비 복구]</span></td><td>끊겼던 통신이 재개될 때</td><td>현장 담당</td><td>1회</td></tr>
|
||||||
|
<tr><td><span class="tag t-fire">[에스컬레이션]</span></td><td>임계 경보가 <b>30분</b> 이상 미복구로 지속 → <b>2차(야간) 담당</b>에게 추가 통지</td><td>2차(TIER2)</td><td>에피소드당 1회</td></tr>
|
||||||
|
<tr><td><span class="tag t-sys">[SMS 잔액부족]</span></td><td>문자 발송 잔여가 <b>30건 이하</b> — 경보 채널이 조용히 죽는 것 사전 방지</td><td>기본(전역)</td><td>6시간</td></tr>
|
||||||
|
<tr><td><span class="tag t-ok">[정기점검]</span></td><td>매일 <b>09시</b> 이후 1회 — 센서 정상수·최근수신·잔여 요약(생존신호)</td><td>기본(전역)</td><td>1일 1회</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="note">
|
||||||
|
<p><b>“정기점검” 문자의 뜻:</b> 매일 1통 오는 안부 문자입니다. <b>이 문자가 안 오면</b> 경보 채널
|
||||||
|
전체(서버·문자망)에 문제가 있다는 신호이니 점검하세요. 즉, 담당자는 <b>“이상 문자가 오면 대응, 안부 문자가 안 오면 점검”</b>만 기억하면 됩니다.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>같은 경보가 문자 폭탄이 되지 않는 이유</h3>
|
||||||
|
<ul class="tight">
|
||||||
|
<li><b>재발송 억제(쿨다운):</b> 같은 종류 경보는 30분에 1번만. 이상이 지속돼도 계속 울리지 않습니다.</li>
|
||||||
|
<li><b>누수 떨림 방지(디바운스):</b> 감지 60초·복구 180초를 지속해야 “확정”해 발송 — 물기 튐으로 감지↔복구가 반복되는 것을 차단.</li>
|
||||||
|
<li><b>에피소드 인지:</b> 정상 복귀 후 다시 이상이 생기면 별개 사건으로 보고 즉시 재발송(놓치지 않음).</li>
|
||||||
|
<li><b>미복구 에스컬레이션:</b> 30분 지나도 안 풀리면 2차(야간) 담당에게 한 번 더.</li>
|
||||||
|
</ul>
|
||||||
|
<p class="muted" style="margin-top:8px">항온항습 환경 특성상 값이 원래 평탄하므로 <b>“센서 값 고착” 경보는 꺼 두었습니다</b>(정상 평탄값 오탐 방지).</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 3. 웹사이트에서 보는 것 -->
|
||||||
|
<section>
|
||||||
|
<h2><span class="n">3</span>웹사이트(대시보드)에서 보는 것</h2>
|
||||||
|
<p class="lead">브라우저로 접속해 로그인(2단계 인증)하면 전 현장 현황을 한 화면에서 봅니다. 화면은 자동 새로고침됩니다.</p>
|
||||||
|
|
||||||
|
<h3>화면 상단 — 항상 고정</h3>
|
||||||
|
<div class="cards">
|
||||||
|
<div class="box"><h4>시스템 상태 배너</h4><p>지금 가장 중요한 상태를 큰 글씨로. 경보 시 <b>어느 센서·값·언제부터·문자 발송 결과</b>까지 명시. 우선순위: 누수 → 화재의심 → 온습도 → 오프라인 → 정상.</p></div>
|
||||||
|
<div class="box"><h4>핵심 KPI 6타일</h4><p>경보 센서 · 오프라인(온라인 수) · 미복구 누수 · 오늘 경보 · SMS 잔여 · 중요 진단. 타일을 누르면 해당 탭으로.</p></div>
|
||||||
|
<div class="box"><h4>알림 스트립 · 대응 패널</h4><p>즉시 조치가 필요한 것만 1줄씩. 위험 시 상황별 <b>대응 체크리스트</b>와 담당 연락처를 함께 표시.</p></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>탭 — 상세 화면</h3>
|
||||||
|
<div class="scroll">
|
||||||
|
<table>
|
||||||
|
<thead><tr><th>탭</th><th>보는 내용</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td><b>실시간 현황</b> <span class="muted">live</span></td>
|
||||||
|
<td>현장별 카드 — 온습도·화재감시(PM)·누수 상태와 최신 측정값, 오프라인/경보 배지.</td></tr>
|
||||||
|
<tr><td><b>추이·통계</b> <span class="muted">trend</span></td>
|
||||||
|
<td>온습도 추이 차트, 화재감시(PM) 추이 차트, 7일 경보 추이, 경보 종류 도넛(30일), 경보 최다 센서 순위.</td></tr>
|
||||||
|
<tr><td><b>이력 조회</b> <span class="muted">history</span></td>
|
||||||
|
<td>최근 온습도 측정 30건, 최근 화재감시(PM) 측정 30건, 문자 발송 이력.</td></tr>
|
||||||
|
<tr><td><b>시스템 점검</b> <span class="muted">system</span></td>
|
||||||
|
<td>자가진단 결과, 적용 중인 임계·설정 요약, SMS 잔여·발송 실패 현황.</td></tr>
|
||||||
|
<tr><td><b>전체(인쇄용)</b> <span class="muted">all</span></td>
|
||||||
|
<td>위 탭을 한 페이지로 합본 — 출력·보고용.</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>예방 신호 — “터지기 전”</h3>
|
||||||
|
<p>측정 추세를 분석해 <b>경보가 발생하기 전</b> 여유·도달 예상 시간(ETA)·이슬점 마진을 대시보드에 미리 표시하고,
|
||||||
|
위험 시 대응 절차를 안내합니다(추가 장비·DB 변경 없이 기존 측정만으로 산출).</p>
|
||||||
|
|
||||||
|
<div class="pills">
|
||||||
|
<span class="pill">설치 점검 (테스트 문자 발송)</span>
|
||||||
|
<span class="pill">월간 보고</span>
|
||||||
|
<span class="pill">보안 증적</span>
|
||||||
|
</div>
|
||||||
|
<p class="muted" style="margin-top:8px">상단 메뉴에서 위 부가 페이지로 이동할 수 있습니다.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 4. 운영 요약 -->
|
||||||
|
<section>
|
||||||
|
<h2><span class="n">4</span>운영 요약 · 유의사항</h2>
|
||||||
|
|
||||||
|
<h3>기본 임계값 (조정 가능)</h3>
|
||||||
|
<div class="scroll">
|
||||||
|
<table>
|
||||||
|
<thead><tr><th>항목</th><th>기본값</th><th>항목</th><th>기본값</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>화재의심 PM2.5</td><td class="mono">> 35 ㎍/㎥</td><td>고온</td><td class="mono">> 30 ℃</td></tr>
|
||||||
|
<tr><td>화재의심 PM10</td><td class="mono">> 75 ㎍/㎥</td><td>저온</td><td class="mono">< 10 ℃</td></tr>
|
||||||
|
<tr><td>고습 / 저습</td><td class="mono">> 70% / < 20%</td><td>결로마진</td><td class="mono">≤ 3 ℃</td></tr>
|
||||||
|
<tr><td>경보 재발송 쿨다운</td><td class="mono">30 분</td><td>에스컬레이션</td><td class="mono">30 분 미복구</td></tr>
|
||||||
|
<tr><td>오프라인 판정(누수/PM)</td><td class="mono">약 20 분</td><td>오프라인 판정(온습도)</td><td class="mono">약 125 분</td></tr>
|
||||||
|
<tr><td>SMS 잔액 경고</td><td class="mono">≤ 30 건</td><td>정기점검 발송</td><td class="mono">매일 09 시</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<p class="muted" style="margin-top:8px">모든 값은 서버 설정(<code>config.local.php</code>)에서 현장에 맞게 조정할 수 있으며, 현장 장비를 다시 만질 필요가 없습니다.</p>
|
||||||
|
|
||||||
|
<div class="note">
|
||||||
|
<p><b>화재 감지 관련 유의:</b> 미세먼지 센서(PMS7003)는 <b>광학 먼지 센서</b>로, 연기·먼지를 완벽히
|
||||||
|
구분하지 못합니다. 항온항습 서버실은 평상시 먼지가 거의 없어 <b>먼지 급증을 화재의 조기 징후</b>로
|
||||||
|
활용하는 것이며, <b>인증 화재감지기가 아닙니다.</b> 보조 조기경보로 사용하고, 법정 소방 설비(인증
|
||||||
|
연기/열 감지기)는 별도로 병행해야 합니다.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>서버실 통합 모니터링 시스템 (leak_sms_v3) · 프로젝트 소개서 · v2606</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in a new issue