No description
누수 감지↔복구 플래핑 SMS 폭탄 방지, 온습도 측정 주기 1시간화(부수 오탐
차단), 센서별 SMS 수신자 그룹 지정 3종을 함께 반영한다.
1) 누수 디바운스 (서버 전용, 펌웨어 무변경)
- leak_sensor_status 에 leak_confirmed / leak_pending_since 컬럼 추가.
- leak_debounce_decide(): 단일 대칭 타이머 순수 함수. raw 상태가 확인창
동안 지속돼야 확정하고 확정 엣지에서만 SMS 1회. dry 블립<복구창이면
복구 미확정 → 확정 유지 → 재감지·복구 SMS 둘 다 차단(폭탄 원천 봉쇄).
- apply_leak_debounce()/sweep_pending_leak_transitions(): 센서 네임드 락으로
직렬화, cron sweep 으로 보고 끊겨도 확정 해소. 사고(leak_incident)
open/close 도 확정 엣지로 이동(월간보고 사고건수 정합). raw 이벤트는
leak_sensor_log 에 그대로 보존(플래핑 진단).
- 컬럼 없는 구배포는 레거시 즉시 발송으로 graceful degrade.
- 확인창 기본: 감지 60s / 복구 180s (config.local.php 조정).
2) 온습도 1시간 주기 + 센서별 히트비트 타임아웃
- raspberry_pi4_sht30/config.py REPORT_INTERVAL 300→3600.
- heartbeat_timeout_for(): 명시 오버라이드 > 온습도 기본(7500s) > 전역(1200s).
cron_heartbeat / dashboard 오프라인 판정을 센서별로. 매시간 오탐 제거,
누수 오프라인은 20분 유지.
- STUCK_DETECT_SAMPLES 6→3(1시간 주기 ≈3시간), 관련 주석 정정.
3) 센서별 수신자 그룹
- SENSOR_RECIPIENTS 맵 + recipients_for_sensor() 전역 폴백.
- sms_dispatch_to_recipients 가 센서별로 수신자 해소(에스컬레이션 TIER2
명시 전달은 유지, 헬스/잔액은 전역).
대시보드: 누수 카드 '확인중(디바운스)' 배지, 시스템 탭에 확인창·센서별
타임아웃·수신자 그룹 표시.
마이그레이션: sql/migration_leak_debounce.sql (컬럼 2개), schema_sht30.sql 갱신.
테스트: leak_debounce(12) / recipients_group / heartbeat_timeout 순수 단위 추가.
설계: docs/superpowers/specs/2026-07-13-leak-debounce-sensor-config-design.md
|
||
|---|---|---|
| .claude | ||
| .tours | ||
| docs | ||
| firmware | ||
| P4422-2 | ||
| php | ||
| raspberry_pi4 | ||
| raspberry_pi4_sht30 | ||
| scripts | ||
| sql | ||
| tests | ||
| tools | ||
| (20260518)_IoT_기반_모니터링_체계_구축을_위한_보안대책서.hwp | ||
| (Y수정)_(20260520)_IoT_기반_모니터링_체계_구축을_위한_보안대책서.hwp | ||
| (Y수정)_(20260528)_IoT_기반_모니터링_체계_구축을_위한_보안대책서.hwp | ||
| .gitignore | ||
| CHANGELOG.md | ||
| PR_BODY.md | ||
| README.md | ||
| report_leak_detection_system.md | ||
| run_tests.sh | ||
| SYSTEM_OVERVIEW.md | ||
| VERSION | ||
서버실 통합 모니터링 시스템 (누수 + 온습도)
Raspberry Pi 4 센서 모듈 2대 — 1번: 누수 감지 + 카메라, 2번: SHT30 온습도 — 와
선택적 3번째 노드(신규 지점, sensor_id 3)가 동일한 cafe24 PHP 서버로 HTTPS 보고
(raw-body 서명 X-Signature = HMAC-SHA256(API_KEY, 요청본문))를 하고, 서버가 MySQL 저장,
임계/누수 판정, SMS 발송, 통합 대시보드(dashboard.php) 표시를 담당하는 단일 시스템입니다.
모듈 구성
| 폴더 | 역할 | sensor_id |
|---|---|---|
raspberry_pi4/ |
누수 감지(e-con 5C-08) + Pi Camera 촬영·사진 업로드 | 1 (신규 지점 노드는 3) |
raspberry_pi4_sht30/ |
SHT30 온습도 측정(I2C) | 2 |
php/ |
cafe24 서버 — API 수신, DB 저장, 판정/SMS, 대시보드 | — |
sql/ |
DB 스키마(schema_sht30.sql = 신규 설치 완결) + 마이그레이션 |
— |
firmware/ |
STM32F407 마이그레이션 트랙(별도) — RPi4 배포와 무관 | — |
문서
- SYSTEM_OVERVIEW.md — 전체 아키텍처·모듈 매핑·서명 스킴 (기준 문서)
- docs/DEPLOYMENT_PLAN_RPI4x3.md — RPi4 × 3 + cafe24 신규 설치 배포 계획
- docs/INSTALL_PI_SERVER.md — cafe24 서버 설치 절차 (STM32 펌웨어 중심)
- docs/OPERATIONS_SECURITY_CHECKLIST.md — 운영·보안 체크리스트