2번 센서 SHT30 라즈베리파이 셋팅 가이드

온습도 전용 Raspberry Pi를 기존 모니터링에 sensor_id=2로 연결
v2605 Sensor2
설치 목표

SHT30 온도와 습도를 5분마다 서버로 보내고 대시보드에 최신값을 표시한다.

두 장비 모두 SHT30 센서를 I2C로 읽어 `sensor_metric`에 온습도 이력을 남기며, 임계 초과 시 서버에서 경보 SMS를 발송한다.

SHT30 센서2 데이터 흐름도

1. 준비물

라즈베리파이 1대 온습도 전용 장비. 장비 ID 예시는 `rpi-sht30-01`.
SHT30 P4422-3 센서 I2C 방식 온습도 센서. 기본 주소는 보통 `0x44`.
서버 반영 파일 API, DB migration, dashboard 수정 파일이 서버에 올라가 있어야 한다.
센서 번호는 `SHT30_SENSOR_ID=2`로 고정한다. 기존 1번 SHT30 온습도 센서와 sensor_id로 분리해서 운영한다.

2. SHT30 배선

라즈베리파이와 SHT30 센서 배선도
이미지 안의 라벨은 한글 폰트 깨짐을 피하기 위해 영문으로 표기했다.
SHT30Raspberry Pi설명
VCC3.3V5V가 아니라 3.3V 사용을 기본으로 한다.
GNDGND공통 접지.
SDAGPIO2 / SDA1 / pin 3I2C 데이터 라인.
SCLGPIO3 / SCL1 / pin 5I2C 클럭 라인.

3. 서버 DB와 PHP 반영

운영 DB에 온습도 이력 테이블을 추가한다.

수정된 PHP 파일을 서버의 `public_html/raspi_leck_detecter/` 경로에 반영한다.

대시보드 진단 영역에서 `SHT30 metric table` 경고가 사라지는지 확인한다.

SOURCE sql/migration_sensor_metric.sql;
파일역할
php/api/sensor_data.phpSHT30 온도/습도 필드 수신 및 저장.
php/dashboard.php센서 카드에 최신 온도/습도 표시.
sql/migration_sensor_metric.sql온습도 이력 테이블 생성.
sql/schema_v2605.sql신규 설치용 통합 스키마.

4. 라즈베리파이 설정

I2C 활성화

sudo raspi-config

`Interface Options`에서 `I2C`를 활성화한 뒤 재부팅한다.

패키지 설치

sudo apt-get update
sudo apt-get install -y python3-venv python3-smbus i2c-tools
cd /home/pi/leak_sensor
python3 -m venv --system-site-packages venv
source venv/bin/activate
pip install -r requirements.txt

SHT30 주소 확인

i2cdetect -y 1

표에서 `44`가 보이면 기본값 그대로 사용한다. `45`가 보이면 환경설정의 `SHT30_I2C_ADDR`를 `0x45`로 바꾼다.

환경설정 생성

sudo cp sht30-sensor.env.example /etc/sht30-sensor.env
sudo nano /etc/sht30-sensor.env
LEAK_API_URL=https://your-domain.example/raspi_leck_detecter/api/sensor_data.php
LEAK_API_KEY=서버_config와_동일한_API_KEY
LEAK_DEVICE_ID=rpi-sht30-01
LEAK_DEVICE_LOCATION=온습도 측정 위치

SHT30_SENSOR_ID=2
SHT30_SENSOR_NAME=2번 센서 (SHT30 온습도)
SHT30_I2C_BUS=1
SHT30_I2C_ADDR=0x44
SHT30_REPORT_INTERVAL=300
SHT30_SIMULATION=false

5. 자동 실행 등록

sudo cp systemd/sht30-sensor.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable sht30-sensor
sudo systemctl start sht30-sensor
sudo systemctl status sht30-sensor

상태가 `active (running)`이면 부팅 후 자동으로 SHT30 값을 서버에 전송한다.

6. 동작 확인

센서 읽기 `python3 sht30_monitor.py --read-once`가 온도/습도 JSON을 출력해야 한다.
서버 전송 `python3 sht30_monitor.py --once` 실행 후 응답에 `metric_saved`가 `true`인지 확인한다.
대시보드 2번 센서 카드에 온도와 습도 칩이 표시되어야 한다.
source /home/pi/leak_sensor/venv/bin/activate
python3 sht30_monitor.py --read-once
python3 sht30_monitor.py --once
journalctl -u sht30-sensor -f
2번 센서가 대시보드에 온도와 습도를 표시하는 예시
대시보드에서는 센서2 상태와 최신 온습도 값이 같은 센서 카드 안에 표시된다.

7. 문제 대처표

증상판단조치
주소 없음 `i2cdetect -y 1`에 `44` 또는 `45`가 없음 배선, I2C 비활성화, 전원 문제 가능성. SDA/SCL 반대 연결 여부 확인, `raspi-config` I2C 활성화, 3.3V/GND 재확인.
403 API 인증 실패 라즈베리파이 `LEAK_API_KEY`와 서버 `API_KEY`가 다름. `/etc/sht30-sensor.env`와 서버 `config.local.php`의 키를 동일하게 맞춘다.
metric_saved false 서버는 받았지만 `sensor_metric` 테이블이 없음. `sql/migration_sensor_metric.sql` 실행 후 다시 `--once` 테스트.
오프라인 대시보드에서 센서2 오프라인 서비스 중단 또는 네트워크/API 장애. `systemctl status sht30-sensor`, `journalctl -u sht30-sensor -n 80` 확인.
CRC 오류 측정 실패 반복 I2C 신호 불안정 또는 케이블 문제. 케이블 길이를 줄이고 접지를 재확인한다. 필요하면 센서 주소와 보드를 교차 점검한다.