From 2046b2f29203e654b7afeb75b73c2dd2d6f000e1 Mon Sep 17 00:00:00 2001 From: cw2007 Date: Sun, 19 Jul 2026 23:34:27 +0900 Subject: [PATCH] =?UTF-8?q?docs(wiring):=20=EB=88=84=EC=88=98=20=EC=A0=80?= =?UTF-8?q?=ED=95=AD=EC=8B=9D=202=EC=84=A0=20=ED=94=84=EB=A1=9C=EB=B8=8C?= =?UTF-8?q?=C2=B7SHT30=20=EB=AA=A8=EB=93=88=20=EC=A7=81=EA=B2=B0=EB=A1=9C?= =?UTF-8?q?=20=EB=B0=B0=EC=84=A0=EB=8F=84=20=EC=A0=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 누수 §4 배선도: 3핀(VCC/SIG/GND) → 2전극 프로브(전극 A→3V3, 전극 B→GPIO17). 10MΩ 풀다운은 GPIO17↔GND 보드 부품(센서 선 아님)으로 명시. 펌웨어(ACTIVE_LOW=False) 일치. §2 범례·§3 핀표·§8 통합표 GND 문구도 "풀다운용(센서 선 아님)"으로 통일. - SHT30 §4: 외부 풀업 R1/R2·SDA hop 제거 → VCC/GND/SDA/SCL 4선 직결(내장 풀업). §3 표 문구 갱신. - 납품 리포트(센서 형태·내용): 누수 "2선 저항식 프로브", SHT30 "모듈 직결" 반영. - 브라우저 렌더 검증: 두 §4 텍스트·선 겹침 0. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_015Dj4n17ZvGAhga6D4pNRjn --- .../센서_형태_내용_보고서-v2606-20260719.html | 432 ++++++++++++++++++ raspberry_pi4/WIRING.html | 47 +- raspberry_pi4_sht30/WIRING.html | 31 +- 3 files changed, 466 insertions(+), 44 deletions(-) create mode 100644 docs/센서_형태_내용_보고서-v2606-20260719.html diff --git a/docs/센서_형태_내용_보고서-v2606-20260719.html b/docs/센서_형태_내용_보고서-v2606-20260719.html new file mode 100644 index 0000000..8179bf3 --- /dev/null +++ b/docs/센서_형태_내용_보고서-v2606-20260719.html @@ -0,0 +1,432 @@ + + + + + +서버실 모니터링 센서 형태·내용 보고서 + + + +
+
+
IoT 서버실 모니터링 · leak_sms_v3
+

서버실 모니터링 센서 형태·내용 보고서

+
+ +
+ +

시스템: IoT 기반 서버실 누수·환경 모니터링 (leak_sms_v3)
+버전: v2606 · 작성일: 2026-07-19

+
+

1. 시스템 개요

+

Raspberry Pi 센서 노드가 각종 측정·이벤트를 cafe24 서버로 HTTPS POST 보고하고, 서버가 저장·판정(SMS)·대시보드 표시하는 단일 통합 시스템이다.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
항목내용
센서 노드Raspberry Pi 4 Model B (누수·환경 측정)
표시 장치Raspberry Pi Zero 2 W + ST7789V 미니 디스플레이 (읽기전용)
서버cafe24 웹호스팅 PHP + MySQL
전송HTTPS POST
인증X-Signature = HMAC-SHA256(API_KEY, raw_body) — 전 노드 공통
판정 위치전부 서버 측 (Pi는 원측정 보고만; 누수만 로컬 디바운스·이벤트 분류)
+

핵심 원칙: 임계 판정·SMS는 서버가 담당한다. 센서 노드는 측정값을 그대로 보고하며, 임계값 변경 시 노드 재배포 없이 서버 설정만 조정한다.

+
+

2. 센서 형태 총괄

+

물리 센서 3종 + 카메라 1종 + 표시 장치 1종.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
센서모델인터페이스연결 핀 (BCM / 물리핀)측정 항목
누수 감지e-con 5C-08 저항식 2선(2전극) 프로브 + 10MΩ 풀다운(보드)GPIO 디지털GPIO17 / 물리 11누수 유무 (2상태)
카메라Pi Camera (누수 노드 동승)CSI 15핀 (Pi 4)CSI 커넥터정지영상 (누수 시)
온습도SHT30I2C bus 1SDA=GPIO2/핀3, SCL=GPIO3/핀5온도·습도
미세먼지PMS7003UART (/dev/serial0)TXD→RXD=GPIO15/핀10PM1.0 / PM2.5 / PM10
표시 장치ST7789V TFT (센서 아님)SPIWIRING 참조상태 표시 전용
+
+

3. 센서별 상세 내용

+

3-1. 누수 감지 센서 (sensor_id 1 / 3)

+
[그림 3-1a] 누수 노드 40핀 헤더 핀맵 — 누수·카메라·SHT30·PMS7003 사용 핀 종합
[그림 3-1a] 누수 노드 40핀 헤더 핀맵 — 누수·카메라·SHT30·PMS7003 사용 핀 종합
+
[그림 3-1b] 누수 센서 배선 회로도 — e-con 5C-08 + 외부 10MΩ 풀다운 → GPIO17(물리 11)
[그림 3-1b] 누수 센서 배선 회로도 — e-con 5C-08 + 외부 10MΩ 풀다운 → GPIO17(물리 11)
+ +
    +
  • 모델·회로: e-con 5C-08 저항식 리크 2선(2전극) 프로브 — 전극 A→3V3(핀1), 전극 B→GPIO17(핀11). 외부 10MΩ 풀다운은 GPIO17↔GND 사이 보드 부품(센서 선 아님). 내부 풀저항 OFF(PUD_OFF) — 내부 풀다운(50kΩ) 사용 시 누수에도 라인이 HIGH로 못 올라가 감지 실패.
  • +
  • 활성 레벨: ACTIVE_LOW = False — 건조 시 GPIO LOW(0), 누수 시 HIGH(1).
  • +
  • 노이즈 제거: 디바운스 500ms + 엣지 후 확인재독 3회 × 0.3s (총 ~0.9s). 엣지 단독으로는 상태를 바꾸지 않아 서버실 EMI 순간 블립을 거부하고 실제 물(지속)만 통과시킨다.
  • +
  • 보고 주기: 정상 600초(10분) 주기, 누수 중 10초 재보고.
  • +
  • 이벤트: leak_alert(누수 발생) / leak_recovery(복구) / periodic(정상 주기).
  • +
+

서버 판정·경보:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
항목값
누수 경보 SMS 쿨다운1800초 (30분)
감지 확인창60초
복구 확인창180초
오프라인 판정(heartbeat)1200초 (20분 미보고 → 오프라인)
SMS 태그[누수감지] / [누수복구]
+

3-2. 카메라 (누수 노드 동승)

+
    +
  • 형태: Pi Camera, Pi 4 CSI 15핀 리본. (Zero 2 W는 22핀이라 리본 비호환 — 15핀 리본 또는 15↔22 어댑터 필요.)
  • +
  • 촬영: rpicam-still(Bookworm) / libcamera-still(Bullseye), 640×480, JPEG 품질 60 (약 50–80KB).
  • +
  • 동작: 누수 감지 시 촬영 후 photo_upload.php로 업로드. 서명 canonical = device_id|sensor_id|log_id|timestamp (공백 없음). 서버 측 MIME(finfo)·크기 상한·무작위 파일명 검증.
  • +
  • 비활성: CAMERA_ENABLED = False로 촬영·업로드 생략 가능.
  • +
+

3-3. 온습도 센서 SHT30 (sensor_id 2, 누수 노드 동승 시 1 / 3)

+
[그림 3-3a] SHT30 40핀 헤더 핀맵
[그림 3-3a] SHT30 40핀 헤더 핀맵
+
[그림 3-3b] SHT30 배선 회로도 — I2C SDA=GPIO2(핀3)/SCL=GPIO3(핀5) + 풀업
[그림 3-3b] SHT30 배선 회로도 — I2C SDA=GPIO2(핀3)/SCL=GPIO3(핀5) + 풀업
+ +
    +
  • 인터페이스: I2C bus 1, 주소 0x44(ADDR=GND) 또는 0x45(ADDR=VDD). 브레이크아웃 모듈(내장 풀업) → VCC/GND/SDA/SCL 4선 직결, 외부 풀업 저항 불필요. SDA=GPIO2(핀3), SCL=GPIO3(핀5).
  • +
  • 타당성 범위: 온도 -40 ~ 125℃, 습도 0 ~ 100%RH. 범위 밖은 out_of_range로 보고.
  • +
  • 보고 주기: 단독 Pi-B(id2) 3600초(1시간). 누수 노드 동승(id1/3) 시 600초(10분). 동일 sensor_id 안에서 metric_type로 구분.
  • +
+

서버 임계값:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
항목임계히스테리시스
고온30℃1.0℃
저온10℃1.0℃
고습70%3.0%
저습20%3.0%
이슬점 여유3.0℃1.0℃
경보 쿨다운1800초 (30분)—
오프라인 판정7500초 (~125분, 1시간 주기 2회 미보고 + 여유)—
+

3-4. 미세먼지 센서 PMS7003 (누수 노드 동승, sensor_id 1 / 3, metric_type="pms7003")

+
[그림 3-4a] PMS7003 40핀 헤더 핀맵
[그림 3-4a] PMS7003 40핀 헤더 핀맵
+
[그림 3-4b] PMS7003 배선 회로도 — UART TXD→GPIO15/RXD(핀10), 3.3V
[그림 3-4b] PMS7003 배선 회로도 — UART TXD→GPIO15/RXD(핀10), 3.3V
+ +
    +
  • 인터페이스: UART /dev/serial0, 9600bps 8N1, 3.3V 로직. PMS7003 TXD → Pi RXD = GPIO15(핀10). UART 활성화 + 시리얼 로그인 콘솔 비활성화 필요(enable_uart=1).
  • +
  • 측정: PM1.0 / PM2.5 / PM10 (대기환경 농도, µg/m³).
  • +
  • 타당성 범위: 0 ~ 1000 µg/m³. 범위 밖은 out_of_range.
  • +
  • 보고 주기: 600초(10분). 독립 노드가 아니라 누수 노드 위에 동승(SHT30와 동일 방식).
  • +
+

서버 임계값:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
항목임계히스테리시스
PM2.5 고농도75 µg/m³10 µg/m³
PM10 고농도150 µg/m³10 µg/m³
경보 쿨다운1800초 (metric 공용)—
+
+

4. 노드 구성

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
배포 폴더대상sensor_id탑재 센서
01_server_cafe24cafe24 웹호스팅—서버 (수신·MySQL·SMS·대시보드)
02_pi_a_node_id1Pi-A 노드1누수 + 카메라 + SHT30 + PMS7003
03_pi_b_sht30_id2Pi-B2SHT30 단독 (온습도)
04_pi_c_node_id3Pi-C 신규 현장3누수 + 카메라 + SHT30 + PMS7003
06_pi_zero2w_displayPi Zero 2 W—ST7789V 미니 디스플레이 (읽기전용 상태 표시)
+

구성 요약: 누수 노드(Pi-A id1, Pi-C id3)는 누수·카메라·온습도·미세먼지 4센서 풀스택. Pi-B(id2)는 온습도 전용. Zero 2 W는 센서가 아닌 상태 표시 장치. 서버가 단일 지점에서 전 노드 수신·판정·SMS·대시보드를 담당한다.

+
+

5. 요약

+
    +
  • 물리 센서 3종: 누수(e-con 5C-08 / GPIO), 온습도(SHT30 / I2C), 미세먼지(PMS7003 / UART).
  • +
  • 부가 장치 2종: 누수 노드 동승 카메라(CSI), 상태 표시 디스플레이(ST7789V / SPI).
  • +
  • 판정 일원화: 임계·SMS 전부 서버 측 → 임계 변경 시 노드 재배포 불필요.
  • +
  • 동승 구조: 온습도·미세먼지는 누수 노드의 sensor_id를 공유하고 metric_type으로 구분.
  • +
  • 보안: 전 노드 HMAC-SHA256 raw-body 서명, 비밀값은 노드의 config_local.py(미커밋)에만 저장.
  • +
+
+ +
+ 생성: md-to-html-report · 이미지 6개 embedded (base64) +
+
+ + diff --git a/raspberry_pi4/WIRING.html b/raspberry_pi4/WIRING.html index 917f300..81a042d 100644 --- a/raspberry_pi4/WIRING.html +++ b/raspberry_pi4/WIRING.html @@ -243,7 +243,7 @@
Signal (GPIO17 · Pin 11)Sensor signal line input
Power 3V3 (Pin 1)Sensor power supply
-
Ground GND (Pin 6 · used)Default sensor GND connection
+
GND (Pin 6) · 풀다운용10MΩ 풀다운 리턴 · 센서 선 아님
Ground alternativesPin 9 / 14 / 20 / 25 / 30 / 34 / 39
Expansion example (optional)GPIO27·Pin 13, GPIO22·Pin 15
Unused pinsNot connected on this node
@@ -273,10 +273,10 @@ Sensor VCC supply. (Spare 3V3 = Pin 17) - Ground Sensor GND + Ground 풀다운 GND (센서 선 아님) GND Pin 6 - Alternatives: any GND among Pin 9 / 14 / 20 / 25 / 30 / 34 / 39. + 10MΩ 풀다운(GPIO17↔GND) 리턴용. Alternatives: any GND among Pin 9 / 14 / 20 / 25 / 30 / 34 / 39. Expansion Additional sensor example @@ -299,7 +299,7 @@

4Wiring Schematic

- + Raspberry Pi 4 · 40-pin header @@ -314,36 +314,39 @@ Pin 6 · GND - - e-con 5C-08 leak sensor + + e-con 5C-08 리크 프로브 + 2선(2전극) - VCC 3.3V + 전극 A - SIG signal - - GND + 전극 B + + + + 물 닿으면 도통 - - 3.3V power · Pin 1 - Signal · GPIO17 · Pin 11 - GND · Pin 6 - + + ① 전극 A → 3V3 · Pin 1 + ② 전극 B → GPIO17 · Pin 11 + GND · Pin 6 (풀다운용) + - 10MΩ - External pull-down (required) + 10MΩ 풀다운 + (보드 부품·센서 선 아님) - Internal pull OFF · USE_INTERNAL_PULL=False (PUD_OFF) + 내부 풀 OFF · USE_INTERNAL_PULL=False (PUD_OFF) - - Dry → GPIO=LOW(0) · Leak → GPIO=HIGH(1) · ACTIVE_LOW=False + + 건조 → GPIO17=LOW(0) · 누수(물 도통) → GPIO17=HIGH(1) · ACTIVE_LOW=False
-
How it works: when dry, the sensor sits in an ultra-high-impedance (nearly open) state, so the external 10MΩ pull-down holds GPIO17 LOW. When a leak bridges the electrodes with water, 3.3V pulls the signal line up through ~1.5MΩ and GPIO17 switches to HIGH.
+
센서는 2선(2전극). 전극 A는 3V3(Pin 1), 전극 B는 GPIO17(Pin 11)에 연결한다. Pin 6 GND는 센서 선이 아니라 GPIO17↔GND 사이 10MΩ 풀다운 저항용이다. 건조 시 프로브가 초고임피던스(거의 개방)라 풀다운이 GPIO17을 LOW로 잡고, 물이 두 전극을 이으면 3.3V가 ~1.5MΩ를 통해 전극 B 선을 끌어올려 GPIO17이 HIGH가 된다.
@@ -487,7 +490,7 @@ Ground GND GND Pin 20 - Keep the high-impedance leak ground short & solid. (alt: Pin 25) + 10MΩ 풀다운 리턴 GND(센서 선 아님). 고임피던스 라인이라 짧고 견고하게. (alt: Pin 25) diff --git a/raspberry_pi4_sht30/WIRING.html b/raspberry_pi4_sht30/WIRING.html index 114f790..548823b 100644 --- a/raspberry_pi4_sht30/WIRING.html +++ b/raspberry_pi4_sht30/WIRING.html @@ -403,13 +403,13 @@ I2C data (SDA) GPIO2 / SDA1 3 - 4.7kΩ pull-up → 3.3V (omit if built into module) + 모듈 내장 풀업 → 직결 시 불필요 (풀업 없는 베어 칩만 4.7kΩ→3.3V) I2C clock (SCL) GPIO3 / SCL1 5 - 4.7kΩ pull-up → 3.3V (omit if built into module) + 모듈 내장 풀업 → 직결 시 불필요 (풀업 없는 베어 칩만 4.7kΩ→3.3V) Ground (GND) @@ -429,7 +429,7 @@
-

4Wiring Schematic sensor ↔ header ↔ pull-up resistors

+

4Wiring Schematic 센서 모듈 ↔ 헤더 · 4선 직결(내장 풀업)

@@ -459,8 +459,8 @@ Ground GND - - + + SDA → GPIO2 @@ -472,26 +472,13 @@ ADDR → GND = 0x44 - - - - - - - R1 4.7kΩ - - - - - - - - R2 4.7kΩ + + 모듈 내장 풀업 · 외부 저항 불필요 (4선 직결)

- Pull-up resistors R1·R2 (4.7kΩ ×2) connect to the 3.3V rail. Omit if built into the SHT30 module. - The half-circle (hop) on the SDA line only marks a wire crossing — it is not an electrical connection. + 구매품은 온보드 풀업이 있는 SHT30 브레이크아웃 모듈이라 외부 풀업 저항이 필요 없다. + VCC·GND·SDA·SCL 4선을 헤더에 직결한다. (풀업 없는 베어 SHT30 칩을 쓸 때만 SDA·SCL에 4.7kΩ×2 → 3.3V 를 추가한다.)